Nginx

如何在一台伺服器上託管多個應用程序並將多個域指向它們?

  • June 2, 2016

我試圖弄清楚事情,我很困惑。我知道一些事情,但還不夠。

我知道域實際上指向伺服器的 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 愛好者),我希望這會有所幫助

引用自:https://serverfault.com/questions/751164