假設我有兩個網站,一個是site1,一個是site2,裡面各自放著網站資料並且有各自的index.html

現在我需要把他們放在同一個主機上,並且設定子網域:site1.domain.comsite2.domain.com

然後我的主機IP假設是123.123.123.123

現在主要進行的兩件事:

  1. 設定nginx
  2. 設定DNS

設定nginx

首先要先進入到nginx所在的路徑/etc/nginx,並且查看裡面有些什麼東西:

$ cd /etc/nginx
$ ls

這時候會出現很多資料夾與檔案,我們今天會用到的只有conf.d資料夾和nginx.conf檔案。

那要怎麼使用呢?

我們等等要做事情就是:

  1. conf.d資料夾中新增兩個.conf檔案:因為我們要部署兩個網站site1、site2
  2. 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小時才會穩定;不管怎樣,現在就輸入新的子網域看看網站有沒有成功出現吧!

0
0 回復

發表評論

想要加入討論嗎?
請盡情發表您的想法!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。