[Nginx設定]Virtual Host Nginx http server與多個網域共用一台主機設定
目錄
使用情境:兩個網域要指向同一個 IP 的設定。
假設有兩個網域www.example1.com、www.example.com分別要指向website1、website2,而這兩個網頁的檔案內分別都放置各自的index.html。而假設主機的IP是192.162.123.123。
- www.example1.com 要指向192.162.123.123
- www.example2.com也要指向192.162.123.123
nginx多個網域共用一台主機,需要做兩個設定:
- Nginx設定
- DNS設定
Nginx設定
$ ssh 帳號@主機
example ssh to 192.162.123.123:
$ ssh root@192.162.123.123
輸入ssh指令按下enter後可以看到輸入密碼的欄位 密碼輸入成功後,如果出現以下畫面就表示ssh成功了
延續上圖看到的畫面之後,現在我們要找到nginx所在的路徑,一般都會在/etc/nginx
。因此我們直接cd /etc/nginx資料夾。
$ root@localhost:~# cd /etc/nginx
當我們進入到/etc/nginx
之後,輸入ls之後會看到很多檔案。
$ root@localhost:/etc/nginx/# ls
而我們今天會用到 conf.d
資料夾、nginx.conf
檔案, 畫面停留在上圖之後
$ cd conf.d/
Step1:在這個路徑下新增檔案
$ sudo touch website1.conf
Step2:編輯新增的檔案website1.conf
$ sudo vi website1.conf
Step3:進入編輯模式後,要按 i 才可以編輯,然後貼上這段。
server{
listen 80;
server_name www.example1.com ;
root /var/www/website1;
location / {
index index.html index.hml;
}
}
修改好要儲存要先按 esc,然後輸入 :wq 後按 enter 跳出。
重複上述步驟step1-step3,新增website2.conf,並且貼上step3的設定改為:
server{
listen 80;
server_name www.example2.com ;
root /var/www/website2;
location / {
index index.html index.hml;
}
}
/var/www/website2 指的就是網頁放在主機上的路徑,這段設定就是當你輸入網址www.example2.com,他會找到/var/www/website2裡面的index.html檔案。
listen 80
是將Web server開在port 80的意思,而主機對外預設就是port 80。
nginx.conf
nginx.conf的部分就是要新增引入所有的.conf檔案的指令。
nginx.conf檔案位置一般都會放在/etc/nginx/nginx.conf
$ cd /etc/nginx/
$ sudo vi nginx.conf
再nignx.conf檔案裡面找到有宣告include的地方,加入這行指令。
include /etc/nginx/conf.d/*.conf;
修改好要儲存要先按 esc,然後輸入 :wq 後按 enter 跳出。
重啟nginx:
$ sudo systemctl restart nginx
nginx設定完成!
DNS設定
我們要將購買好的網域指向我們的主機IP,因此來到購買網域的DNS設定,點選你要指向主機的網域。
按下DNS後會看到類似於以下畫面的地方,按下編輯
將主機IP輸入後按下儲存,DNS設定就完成了。
將example1.com設定完成後,再重複一樣的步驟,再example2.com指向同一個主機即可,因為我們剛剛在nginx設定就已經會將這兩個網域分別載入不同路徑下的html。
設定完成後一般Godaddy都會跟你說要48小時內才會生效,但是其實大概五分鐘後就生效了。
Recent Posts
目錄