Nginx
如何在一台伺服器上託管多個應用程序並將多個域指向它們?
我試圖弄清楚事情,我很困惑。我知道一些事情,但還不夠。
我知道域實際上指向伺服器的 IP 地址。所以如果我想擁有兩個應用程序,它們都必須指向同一個伺服器。例如:
domain1.com => 139.130.4.5
domain2.com => 139.130.4.5
而且我必須將它們都配置為指向相同的IP地址?對?
他們都將預設使用埠 80 對(139.130.4.5:80)?伺服器如何知道要服務哪個應用程序?
假設我在 Debian 上有這兩個應用程序:
127.0.0.1:3000
127.0.0.1:4000
NGINX 接受埠 80 上的請求並以某種方式決定服務哪個。它是怎麼執行的?
我首先想到的是,您必須將域配置為指向:
domain1.com => 139.130.4.5:3000
domain2.com => 139.130.4.5:4000
但它不是那樣工作的,如果不是那樣,怎麼辦?:)
謝謝!
它被稱為基於名稱的虛擬主機。Nginx 將根據請求的 FQDN 為站點提供服務。
這當然可以使用虛擬主機來完成。Domain1.com 可以使用原始的 Web 根文件夾和 vhost 文件。如果您不想這樣做,您可以對 domain1 和 2 重複以下步驟。
步驟(ubuntu 14.04):
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com sudo nano /etc/nginx/sites-available/domain2.com
- 取消註釋 listen 80,因此將連接通過的流量
- 更改網路根目錄
- 更改域名以匹配您的其他域
接下來,從可用的虛擬主機創建一個連結,以供啟用的虛擬主機使用。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
重啟nginx
sudo service nginx restart
這樣一來,一個 IP 就可以服務多個不同的網站,由於 IPv4 空間不足和 V6 部署成本高昂,幾乎所有共享網路託管服務提供商都會這樣做。伺服器將從以下塊中知道哪個知道要為客戶端提供哪個應用程序:
server_name example.com;
至於您的其他建議,是的,可以這樣做。
一個例子如下所示
server { listen 80; ## IPv4, change this port!
我不是 nginx 專家(Apache 愛好者),我希望這會有所幫助