Linux

NGINX 一個域 - 內部 IP 上的多個網路伺服器

  • August 11, 2013

我有一個案例,我不確定如何處理,希望得到一些建議。

目前的:

一個域名 - 一個外部 IP。一個已經在使用 NGINX 的 Debian 伺服器來託管網頁。

So, as it is now, I have *.domain.com pointing to server.internal.ip.
Internal IP is on a 192.168.1.x/24 network and all works just as intended.

新案例:

我被要求為 domain.com 創建 CNAME,即

cname1.domain.com
cname2.domain.com
cname3.domain.com

等等。

我現在需要做的就是將對應的cname指向對應的伺服器,即

cname1.domain.com to server1.internal.ip
cname2.domain.com to server2.internal.ip
..
cname9.domain.com to server9.internal.ip

我仍然需要確保所有其他不屬於 CNAME(即 *.domain.com)的請求都屬於原始 server.internal.ip。

我沒有得到更多的外部 IP 號碼,我確實使用了我所擁有的。

我將如何使用 NGINX 做到這一點?

我假設我需要以某種方式設置已經工作的 server.internal.ip 以根據 cname 將埠 80 上的請求重定向到相應的新內部伺服器?

我今天使用的路由器配備了 DD-WRT。

任何我沒有找到的關於 HOWTO 的提示/指針將不勝感激。

我假設您已將80路由器上的埠轉發到伺服器server.internal.ip,因此該伺服器將所有流量都發送到埠 80 上的公共 IP。

您可以將多個基於名稱的虛擬主機server.internal.ip用作其他伺服器的轉發代理。

在 上server.internal.ip,您可以將以下內容添加到您的nginx.conf

server {
   listen 192.168.1.1:80;
   server_name cname1.domain.com;

   root /var/www/localhost/htdocs;
   location ~ ^/(.*)$ {
           proxy_pass        http://server1.internal.ip:80/$1$is_args$args;
           proxy_set_header   Host cname1.domain.com;
           proxy_set_header  X-Real-IP  $remote_addr;
   }
}
server {
   listen 192.168.1.1:80;
   server_name cname2.domain.com;

   root /var/www/localhost/htdocs;
   location ~ ^/(.*)$ {
           proxy_pass        http://server2.internal.ip:80/$1$is_args$args;
           proxy_set_header   Host cname2.domain.com;
           proxy_set_header  X-Real-IP  $remote_addr;
   }
}

HeaderX-Real-IP可用於記錄來自的 IP 請求(否則可以省略)。這些虛擬主機將優先於您的*.domain.comNginx 文件

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