一台nginx伺服器多網域名稱配置的方法

2022-09-25 06:00:11 字數 3305 閱讀 2036

nginx強大的正規表示式支援,可以使server_name的配置變得很靈活,如果你要做多使用者部落格,那麼每個使用者擁有自己的二級網域名稱也就很容易實現了。

下面我就來說說server_name的使用吧:

server_name的匹配順序

nginx中的server_name指令主要用於配置基於名稱虛擬主機,server_name指令在接到請求後的匹配順序分別為:

1、準確的serve程式設計客棧r_name匹配,例如:

server

2、以*萬用字元開始的字串:

server

3、以*萬用字元結束的字串:

server

4、匹配正規表示式:

server

nginx將按照1,2,3,4的順序對server name進行匹配,只有有一項匹配以後就會停止搜尋,所以我們在使用這個指令的時候一定要分清楚它的匹配順序(類似於location指令)。

server_name指令一項很實用的功能便是可以在使用正規表示式的捕獲功能,這樣可以盡量精簡配置檔案,畢竟太長的配置檔案日常維護也很不方便。下面是2個具體的應用:

在乙個server塊中配置多個站點:

server

站點的主目錄應該類似於這樣的結構:

這樣就可以只使用乙個server塊來完成多個站點的配置。

在乙個server塊中為乙個站點配置多個二級網域名稱 。

實際**目錄結構中我們通常會為站點的二級網域名稱獨立建立乙個目錄,同樣我們可以使用正則的捕獲來實現在乙個server塊中配置多個二級網域名稱:

server

root /data/wwwsite/ssdr.info/$1/;

}站點的目錄結構應該如下:

/data/wwwsite/ssdr.info/www/

/data/wwwsite/ssdr.info/nginx/

這樣訪問www.ssdr.info時root目錄為/data/wwwsite/ssdr.info/www/,nginx.ssdr.info時為/data/www程式設計客棧site/ssdr.info/nginx/,以此類推。

後面if語句的作用是將ssdr.info的方位重定向到www.ssdr.info,這樣既解決了**的主目錄訪問,又可以增加seo中對www.ssdr.info的網域名稱權重。

多個正規表示式

如果你在server_name中用了正則,而下面的location欄位又使用了正則匹配,這樣將無法使用$1,$2這樣的引用,解決方法是通過set指令將其賦值給乙個命名的變數:

server

}nginx不同網域名稱反向**到另一台伺服器 proxy_pass和$host

想讓乙個vps專門做另乙個vps的前端,後端vps每新增乙個網域名稱,前端vps就要同時新增乙個網域名稱來反向**,作為前端的vps如果乙個乙個的新增後端vps的網域名稱,那麼這個事情特別麻煩,能不能讓其自動反向**後端vps呢,用到proxy_pass和$host就可以輕鬆實現。

以下例子為了省事,以lnmp為安裝環境進行設定

修改前端vps的nginx.conf檔案,修改成以下內容:

server

下面的一併修改吧。

這樣就可以實現了前端vps可以反向**任意網域名稱到後端vps,只要將網域名稱解析到前端vps,後端vps進行網域名稱繫結,那麼就可以直接訪問到了

一台nginx帶多個網域名稱多個tomcat情況的配置

多個網域名稱,其中2個網域名稱需支援泛網域名稱解析:

1、www.abc.com

2、www.bcd.com

3、*.efg.com

4、*.hij.com

其中1,2,3為一台tomcat,4為獨立tomcat。前端一台nginx,通過配置多個虛擬主機來實現該部署。

進入/etc/nginx/conf.d目錄,所有虛擬主機的配置檔案都在該目錄下存放,配置。

配置支援泛網域名稱

## a virtual host using mix of ip-, name-, and port-based configuration

#server }#

# a virtual host using mix of ip-, name-, and port-based configuration

#server

}泛網域名稱解析關鍵為紅色部分,如果沒有紅色部分,後端8080及8081口對應的tomcat虛擬主機將無法獲得網域名稱資訊,導致後端tomcat無法獲取到對應的網域名稱資訊。

後端tomcat支援泛網域名稱解析時,需要設定 host name 為 localhost 以支援泛網域名稱指向。

nginx 多網域名稱配置

nginx繫結多個網域名稱可又把多個網域名稱規則寫乙個配置檔案裡,也可又分別建立多個網域名稱配置檔案,我一般為了管理方便,每個網域名稱建乙個檔案,有些同類網域名稱也可又寫在乙個總的配置檔案裡。

一、每個網域名稱一程式設計客棧個檔案的寫法

首先開啟 nginx網域名稱配置檔案存放目錄:/usr/local/nginx/conf/servers ,如要繫結網域名稱www.web126.com 則在此目錄建乙個檔案:www.web126.com.conf 然後在此檔案中寫規則,如:

server

然後重起nginx伺服器,網域名稱就繫結成功了。

nginx伺服器重起命令:/etc/init.d/nginx restart。

二、乙個檔案多個網域名稱的寫法

乙個檔案新增多個網域名稱的規則也是一樣,只要把上面單個網域名稱重複寫下來就ok了,如: 

server

server

三、不帶www的網域名稱加301跳轉

如果不帶www的網域名稱要加301跳轉,那也是和繫結網域名稱一樣,先繫結不帶www的網域名稱,只是不用寫**目錄,而是進行301跳轉,如:

server

四、新增404網頁

新增404網頁,都可又直接在裡面新增,如:

server

最後還有乙個方法需要注意,可能有需要禁止ip直接訪問80埠或者禁止非本站的網域名稱繫結我們的ip,這樣的話應該

如下處理,放到最前乙個server上面即可: 

server

學會上面四種規則方法,基本就可以自己獨立解決nginx 多網域名稱配置問題了。

本文標題: 一台nginx伺服器多網域名稱配置的方法

本文位址:

nginx 一台nginx伺服器多網域名稱配置

注意 使用正則的時候,一定要注意那個 線符號,這個是nginx識別正則的標準格式 nginx強大的正規表示式支援,可以使server name的配置變得很靈活,如果你要做多使用者部落格,那麼每個使用者擁有自己的二級網域名稱也就很容易實現了。下面說說server name的使用吧 server nam...

nginx配置多網域名稱訪問同一臺伺服器

最近做了pc端與手機端的兩個專案,兩個網域名稱,配置同乙個伺服器ip位址,手機端通過www.phone.com進入手機端業務處理,pc端通過www.pc.com訪問pc端專案進行業務處理。具體配置如下 pc端專案部署兩個tomcat,進行負載 upstream pc 手機端專案部署兩個tomcat,...

伺服器部署 linuix下 一台nginx 多網域名稱

近日朋友要我幫他調伺服器,一.初步需求如下 1.一台伺服器下要放三個應用,對應三個網域名稱 www.aaa.com,www.bbb.com,www.ccc.com.2.其中後兩個應用也要可以用bbb.com和ccc.com來訪問 我的解決方案 1.分別配置三個tomcat例項對應三個應用 2.配置n...