Nginx – Virtual Host 設定

由 Derek 發表於 四月 10, 2012 / 2 則評論

前言 

既然 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 最後加入以下設定,並針對個人需求修改

 server_name  :  輸入設定的網域名稱

rewrite : 輸入對應的網域名稱

access_log : 輸入access_log 的存放路徑

error_log : 輸入error_log 的存放路徑

root   :  設定此網域的網頁資料所存放的地方

index  : 設定首頁能讀的項目

 

 

2. 建立網頁存放資料夾

由於此次範例為設定faq-book.com faq-test.tk。因此要來建立一下存放這兩個網頁的資料夾。

建立資料夾的路徑就依virtual.conf root 所設定的位置。

 

3. 建立測試頁

分別在faq-book.com faq-test.tk 的資料夾內,各建立一個index.html的測試頁

 

4. 設定LOG

LOG的存放的資料夾也是依據virtual.conf內的access_logerror_log的路徑所設定

將每一個網頁的LOG都分開來管理,在日後查詢上會方便一些。

 

5. 重啟服務

 

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 設定faq-test.tk.conf

2. 建立網頁存放資料夾

由於此次範例為設定faq-book.com faq-test.tk。因此要來建立一下存放這兩個網頁的資料夾。

建立資料夾的路徑就依virtual.conf root 所設定的位置。

3. 建立測試頁

分別在faq-book.com faq-test.tk 的資料夾內,各建立一個index.html的測試頁

4. 設定LOG

LOG的存放的資料夾也是依據virtual.conf內的access_logerror_log的路徑所設定

將每一個網頁的LOG都分開來管理,在日後查詢上會方便一些。

5. 重啟服務

 

6. 測試

6.1 先使用nslookup查詢,若是DNS指向設定和Nginx都設定正確,可看到此兩個網域的IP都指向到同一個。


 

6.2 可直接開啟網頁看是否正常。

當輸入faq-book.com時會看到


當輸入faq-test.tk時會看到


此時就表示設定正確。

 

Note :

1.  若有第三個、第四個或是更多個網域要設定的話,請以此類推新增.conf檔就可以。

2.  在自行設定的路徑下若沒有相對應的資料夾時請自行建立

3.  在建立conf時檔名可自行設定,但副檔名必須為 .conf

 

 

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

  1. hoamon 說: 2012/04/10

    不見得一定要用 *.conf ,那是因為在 /etc/nginx/nginx.conf 中有設定 include conf.d/*.conf ,你也可以改成 include conf.d/conf1.txt 。
    之所以會有修改 include conf.d/*.conf  的可能性是在於,這些 conf.d/*.conf ,如果有讀取順序的需求,那就得自定了。

    • Derek 說: 2012/04/17

      的確在 /etc/nginx/nginx.conf 有此參數的設定include conf.d/*.conf 。只要修改此參數。 在/etc/nginx/conf.d/就不見得須要使用 .conf 。感謝說明~

發表評論至 Derek

*