文章大綱
假設我有兩個網站,一個是site1,一個是site2,裡面各自放著網站資料並且有各自的index.html
。
現在我需要把他們放在同一個主機上,並且設定子網域:site1.domain.com
、site2.domain.com
。
然後我的主機IP假設是123.123.123.123
現在主要進行的兩件事:
- 設定nginx
- 設定DNS
設定nginx
首先要先進入到nginx所在的路徑/etc/nginx
,並且查看裡面有些什麼東西:
$ cd /etc/nginx
$ ls
這時候會出現很多資料夾與檔案,我們今天會用到的只有conf.d
資料夾和nginx.conf
檔案。
那要怎麼使用呢?
我們等等要做事情就是:
- 在
conf.d
資料夾中新增兩個.conf
檔案:因為我們要部署兩個網站site1、site2 - 在
nginx.conf
檔案中把conf.d
資料夾中所有檔案都引用進去:這樣日後要新增網站就只要在conf.d
資料夾中新增.conf
檔案就可以了。
新增兩個.conf
檔案
進入conf.d
資料夾:
$ cd conf.d/
新增檔案:
$ sudo touch site1.conf
編輯剛剛新增的檔案site1.conf
:
$ sudo vi site1.conf
把以下這段設定貼上:
server{
listen 80;
server_name site1.domain.com;
root /var/www/site1;
location / {
index index.html index.hml;
}
}
同樣的步驟新增site2.conf
並貼上以下這段程式碼:
server{
listen 80;
server_name site2.domain.com;
root /var/www/site2;
location / {
index index.html index.hml;
}
}
這時候你會發現有一個路徑/var/www/site*
,聰明的你應該已經知道這就是放你網站內容的路徑,意思就是當我輸入網址site1.domain.com
的時候,他就會去找我放在/var/www/site1
裡面的index.html
。
然後我們都是監聽80 port,不是我忘記改XD
listen 80;
而是DNS並沒有區分port的概念,我們主機對外預設就是80 port,但可以透過我們編寫的這份conf
檔案去顯示對應的網頁內容(也就是root
的路徑)。
nginx.conf
檔案中引用所有.conf
nginx.conf
是nginx的入口,在那邊可以指定我們要吃到哪些資料夾裡的設定檔,以及其他基本設定。
$ cd /etc/nginx
$ sudo vi nginx.conf
小提醒:進去之後點i
才可以編輯文件喔!編輯好之後,先esc
跳出焦點,再輸入:wq
來儲存並關閉檔案。
我們要把這行加進去:
include /etc/nginx/conf.d/*.conf;
至於應該加在哪裡呢?
可以找一下文件裡應該也有宣告類似include的地方,直接加在他的上面或下面:
include /etc/nginx/conf.d/*.conf; #加在這裡
include /etc/nginx/sites-enabled/*;
這時候一樣:wq
儲存,重新啟動nginx:
$ sudo systemctl restart nginx
nginx的設定就到這邊。
設定DNS
我們因為是要提供主機IP來指向,所以在DNS那邊選擇的是A紀錄這個方式:
以Godaddy介面為例,新增一個紀錄,選擇A,主機就是你要使用的子網域名稱,然後指向主機IP。

因為有兩個網站,所以要新增兩個,第二個的主機要輸入site2
,指向IP一樣是123.123.123.123
。
設定好之後通常5分鐘內就會生效了,但是為了保險起見,Godaddy都會跟你說要等48小時才會穩定;不管怎樣,現在就輸入新的子網域看看網站有沒有成功出現吧!
發表評論
想要加入討論嗎?請盡情發表您的想法!