Nginx 的反向代理在新 IP 上不起作用

Nginx 的反向代理在新 IP 上不起作用

我有一个站点,其配置名为我的站点. 配置如下。

server {

        listen 1.2.3.4:80;
        listen 1.2.3.4:443 default ssl;

        server_name mysite.com;

        ssl_certificate /etc/nginx/ssl/wildcard_cert.com.crt;
        ssl_certificate_key /etc/nginx/ssl/wildcard_key.com.key;

        add_header X-Cache-Status $upstream_cache_status;
        proxy_cache off;

        if ($allowed_country = no) {
            return 444;
        }

        include include/locations.conf;

}

另外,在文件中位置配置文件我有反向代理规则。它在下面。

location / {
                include proxy_params;
                proxy_pass http://mysite-on-IIS;
        }

它工作正常。

我接到任务配置同一个非 SSL 站点。为此,我为安装了 Nginx 的 Linux 接口创建了一个新 IP。请参阅/etc/网络/接口下面的文件。

auto eth1
iface eth1 inet static
        address 1.2.3.4
        netmask 255.255.255.240

auto eth1
iface eth1 inet static
        address 1.2.3.5
        netmask 255.255.255.240

我创建了一个名为我的网站(非 SSL,因为我们的提供商不支持伊朗的 SSL)。配置文件与 mysite.com 相同。我复制粘贴了它,只是删除了 SSL 行。请参见下文。

server {

        listen 1.2.3.5:80;

        server_name mysite.ir;

        add_header X-Cache-Status $upstream_cache_status;
        proxy_cache off;

        if ($allowed_country = no) {
            return 444;
        }

        include include/locations.conf;

}

如果我访问 mysite.com – 一切正常。 如果我访问 mysite.ir – 我看到的是默认的 Nginx 问候语,而不是我的网站在代理中指定的。即使我将 mysite.ir 文件中的 IP 更改为来自 mysite.com 的 IP – 它也正常工作。如果我通过来自 mysite.com 或 mysite.ir 的 IP 访问网站,我会看到默认的 Nginx 问候语。

我不明白为什么。

答案1

从两个不同的 NIC 运行这些网站有多重要?我建议只为 https 创建一块服务器配置块(包括 443 侦听器和 SSL 配置),为 http 流量创建另一块(端口 80,无证书)

然后只需将两者转发到正确的上游并设置:

server {  
  listen 80 default_server;  
  server_name _;  
  add_header X-Cache-Status $upstream_cache_status;  
  proxy_cache off;  
  location / {  
    include proxy_params;  
    if ($allowed_country = no) { return 444; }  
    proxy_pass http://mysite-on-IIS;   
    proxy_set_header Host $host;  
    proxy_set_header X-Forwarded-For $remote_addr;  
  }
}

相关内容