前言
既然 Apache 可以設定 Virtual Host,相對的 Nginx 也可以設定。在這邊也再次說明什麼是 Virtual Hos。簡單說,當有兩個網域分別為 faq-book.com 和 faq-test.tk時,想要指到同一台主機IP時就可使用此設定。
環境
Centos 5.7 64 位元
Nginx 1.0.4
設定
Nginx 的 Virtual Host 設定方式有很多種。也沒有說那一種設定方式才是正確的,請依照設定者當下的環境去設定就可以了。
以下提供兩種設定方式 (以下兩種方式主要差別為,設定檔是要為一個或是要各別分開)
方法一
設定 faq-book.com 和 faq-test.tk。將 Virtual Host 的網頁設定檔都寫於 virtual.conf。
1. 修改 virtual.conf
在virtual.conf 最後加入以下設定,並針對個人需求修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
[root@localhost ~]# vim /etc/nginx/conf.d/ virtual.conf server { listen 80; server_name www.faq-book.com; rewrite ^/(.*) http://domain1.com/$1 permanent; } server { listen 80; server_name faq-book.com; access_log /var/log/nginx/faq-book.com/access.log; error_log /var/log/nginx/faq-book.com/error.log; location / { root /var/www/html/faq-book.com/; index index.html index.htm index.php; } } server { listen 80; server_name www.faq-test.tk; rewrite ^/(.*) http://faq-test.tk/$1 permanent; } server { listen 80; server_name faq-test.tk; access_log /var/log/nginx/faq-test.tk/access.log; error_log /var/log/nginx/faq-test.tk/error.log; location / { root /var/www/html/faq-test.tk/; index index.html index.htm index.php; } } |
server_name : 輸入設定的網域名稱
rewrite : 輸入對應的網域名稱
access_log : 輸入access_log 的存放路徑
error_log : 輸入error_log 的存放路徑
root : 設定此網域的網頁資料所存放的地方
index : 設定首頁能讀的項目
2. 建立網頁存放資料夾
由於此次範例為設定faq-book.com 和 faq-test.tk。因此要來建立一下存放這兩個網頁的資料夾。
建立資料夾的路徑就依virtual.conf 內root 所設定的位置。
1 2 |
[root@localhost ~]# mkdir /var/www/html/faq-book.com [root@localhost ~]# mkdir /var/www/html/faq-test.tk |
3. 建立測試頁
分別在faq-book.com 和 faq-test.tk 的資料夾內,各建立一個index.html的測試頁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@localhost ~]# vim /var/www/html/faq-book.com/index.html <html> <head> <title> faq-book.com </title> </head> <body bgcolor="white" text="black"> <center><h1> faq-book.com </h1></center> </body> </html> [root@localhost ~]# vim /var/www/html/faq-test.tk/index.html <html> <head> <title> faq-test.tk </title> </head> <body bgcolor="white" text="black"> <center><h1> faq-test.tk </h1></center> </body> </html> |
4. 設定LOG
LOG的存放的資料夾也是依據virtual.conf內的access_log和error_log的路徑所設定
將每一個網頁的LOG都分開來管理,在日後查詢上會方便一些。
1 2 |
[root@localhost ~]# mkdir /var/log/nginx/faq-book.com [root@localhost ~]# mkdir /var/log/nginx/faq-test.tk |
5. 重啟服務
1 |
[root@localhost ~]# /etc/init.d/nginx restart |
6. 測試
6.1 先使用nslookup查詢,若是DNS指向設定和Nginx都設定正確,可看到此兩個網域的IP都指向到同一個。
6.2 可直接開啟網頁看是否正常。
當輸入faq-book.com時會看到
當輸入faq-test.tk時會看到
此時就表示設定正確。
Note :
1. 若有第三個、第四個或是更多個網域要設定的話,請以此類推設定就可以。
2. 在自行設定的路徑下若沒有相對應的資料夾時請自行建立
方法二
設定faq-book.com 和 faq-test.tk。將Virtual Host的網頁設定檔分別各自寫一個.conf檔,在副檔名的部份要記得為「.conf」
1. 設定各自的 .conf 檔
1.1 設定faq-book.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@localhost ~]# vim /etc/nginx/conf.d/faq-book.com.conf server { listen 80; server_name www.faq-book.com; rewrite ^/(.*) http://domain1.com/$1 permanent; } server { listen 80; server_name faq-book.com; access_log /var/log/nginx/faq-book.com/access.log; error_log /var/log/nginx/faq-book.com/error.log; location / { root /var/www/html/faq-book.com/; index index.html index.htm index.php; } } |
1.2 設定faq-test.tk.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@localhost ~]# vim /etc/nginx/conf.d/faq-test.tk.conf server { listen 80; server_name www.faq-test.tk; rewrite ^/(.*) http://faq-test.tk/$1 permanent; } server { listen 80; server_name faq-test.tk; access_log /var/log/nginx/faq-test.tk/access.log; error_log /var/log/nginx/faq-test.tk/error.log; location / { root /var/www/html/faq-test.tk/; index index.html index.htm index.php; } } |
2. 建立網頁存放資料夾
由於此次範例為設定faq-book.com 和 faq-test.tk。因此要來建立一下存放這兩個網頁的資料夾。
建立資料夾的路徑就依virtual.conf 內root 所設定的位置。
1 2 |
[root@localhost ~]# mkdir /var/www/html/faq-book.com [root@localhost ~]# mkdir /var/www/html/faq-test.tk |
3. 建立測試頁
分別在faq-book.com 和 faq-test.tk 的資料夾內,各建立一個index.html的測試頁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@localhost ~]# vim /var/www/html/faq-book.com/index.html <html> <head> <title> faq-book.com </title> </head> <body bgcolor="white" text="black"> <center><h1> faq-book.com </h1></center> </body> </html> [root@localhost ~]# vim /var/www/html/faq-test.tk/index.html <html> <head> <title> faq-test.tk </title> </head> <body bgcolor="white" text="black"> <center><h1> faq-test.tk </h1></center> </body> </html> |
4. 設定LOG
LOG的存放的資料夾也是依據virtual.conf內的access_log和error_log的路徑所設定
將每一個網頁的LOG都分開來管理,在日後查詢上會方便一些。
1 2 |
[root@localhost ~]# mkdir /var/log/nginx/faq-book.com [root@localhost ~]# mkdir /var/log/nginx/faq-test.tk |
5. 重啟服務
1 |
[root@localhost ~]#/etc/init.d/nginx restart |
6. 測試
6.1 先使用nslookup查詢,若是DNS指向設定和Nginx都設定正確,可看到此兩個網域的IP都指向到同一個。
6.2 可直接開啟網頁看是否正常。
當輸入faq-book.com時會看到
當輸入faq-test.tk時會看到
此時就表示設定正確。
Note :
1. 若有第三個、第四個或是更多個網域要設定的話,請以此類推新增.conf檔就可以。
2. 在自行設定的路徑下若沒有相對應的資料夾時請自行建立
3. 在建立conf時檔名可自行設定,但副檔名必須為 .conf
不見得一定要用 *.conf ,那是因為在 /etc/nginx/nginx.conf 中有設定 include conf.d/*.conf ,你也可以改成 include conf.d/conf1.txt 。
之所以會有修改 include conf.d/*.conf 的可能性是在於,這些 conf.d/*.conf ,如果有讀取順序的需求,那就得自定了。
的確在 /etc/nginx/nginx.conf 有此參數的設定include conf.d/*.conf 。只要修改此參數。 在/etc/nginx/conf.d/就不見得須要使用 .conf 。感謝說明~