Nginx 多網站配置

網頁伺服器環境的建置可以先參閱先前的文章:在 Fedora 25 安裝 Nginx、PHP-FPM、MariaDB(LEMP)

當你的主機裝好網頁伺服器,你總會想難道一台主機只能一個網站嗎?當然不是,一台主機是能夠架設非常多網站的,這稱作 Virtual Host,任何現代網頁伺服器都支援這功能,至於怎麼做呢?筆者當然一步步帶你囉。

繼承先前文章,主機與伺服器環境準備好後就能開始架站,為了方便管理可以像筆者我一樣為 Nginx 網頁伺服器建立一個設定檔資料夾,讓不同網站的設定檔放在同一個資料夾方便管理。
先下這行指令
mkdir /etc/nginx/vhost
在 Nginx 的設定資料夾內新增一個名為 vhost 的資料夾
之後使用文字編輯軟體例如 Nano、Vi⋯⋯等,編輯 Nginx 的設定檔
vi /etc/nginx/nginx.conf

新增include /etc/nginx/vhost/*.conf;在 http { 這段內 }。


接下來建立資料夾讓網站有地方放,個人習慣使用 /wwwroot 作為目錄,再從之細分不同網站,所以簡單來說例如本站 www.4rbj4.com 網站的目錄會像這樣。
/wwwroot/www.4rbj4.com
這樣也方便管理識別這個資料夾是哪個網站。
至於新增資料夾可以使用 mkdir 指令,例如先新增 /wwwroot 這個資料夾
mkdir /wwwroot
再來新增網站的資料夾
mkdir /wwwroot/www.4rbj4.com
如此一來就有個資料夾能放網站

之後就可以把第一個網站設定檔放入了,為了方便管理與識別,例如本站的網址是 www.4rbj4.com,我就新增一個 www.4rbj4.com.conf 的檔案,可以使用個人習慣的文字編輯軟體。
vi /etc/nginx/vhost/www.4rbj4.com.conf


這是一個最簡單的網頁伺服器設定。

listne 就是監聽伺服器的 80 port,[::]:80 則是監聽 ipv6 的 80 port

server_name 則是希望用什麼樣的名稱連線,例如我希望 4rbj4.com 或是 www.4rbj4.com 都能連上本站,便打上兩個

root 則是放網站的資料夾,稍早有設定過 /wwwroot/www.4rbj4.com

if ($host != www.4rbj4.com) 這段比較特別,我希望輸入 4rbj4.com 的人自動轉成 www.4rbj4.com 因此下這行判斷。

include /etc/nginx/default.d/*.conf; 則是讓網站支援 PHP-FPM,我們所裝的 Nginx 已經有 PHP-FPM 的設定,只是他另外放在一個設定檔內,把它引入即可。

設定檔存擋後重啟 Nginx
systemctl restart nginx
透過 DNS 指向,設定完成後便可透過設定的 server_name 連線,例如本站的 www.4rbj4.com,多網站的配置便是從這樣開始。
例如再新增一個 test.4rbj4.com 網站,先新增資料夾,再新增網頁設定檔。
mkdir /wwwroot/test.4rbj4.com
vi /etc/nginx/vhost/test.4rbj4.com

有發現到改變嗎?因為我不希望 4rbj4.con 轉到 test.4rbj4.com,所以就沒設定轉址 server_name 也僅有 test.4rbj4.com。
接下來進行重啟 Nginx,設定完 DNS 便有多重網站在主機上。
systemctl restart nginx

至於 SSL 的部分之後會另外開文章,記得關注本站。

發表迴響