Nginx 未重定向到预期位置

Nginx 未重定向到预期位置

我读过很多文章(主要是这个),但我仍然不明白为什么我的 url 没有被正确重定向。

我在 192.168.1.4 上有一个运行 Ubuntu-Server 的虚拟机。我已经安装了 nginx,并且可以看到 nginx 欢迎页面。

我路由器 80 端口的所有流量都成功重定向到 192.168.1.4。

我有这些网站:

Site1 - 192.168.1.3:9810 (IIS) - www.mydomain1.com
192.168.1.1
    Site2 - 192.168.1.1:8080 (admin page for my server) www.mydomain2.com
    Site3 - 192.168.1.1:81 (a wordpress site) www.mydomain3.com

现在有了所有三个域名,我正在进入 nginx 欢迎页面,所以我知道问题出在我的配置上,如下所示:

server {
    listen 80; 
    server_name mydomain1.com; 
    location / {
        proxy_pass http://192.168.1.3:9810;
    }
}
server {
    listen 80;
    server_name mydomain2.com; 
    location / {
        proxy_pass http://192.168.1.1:8080;
    }
}
server {
    listen 80;
    server_name mydomain3.com; 
    location / {
        proxy_pass http://192.168.1.1:81;
    }
}

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;
    server_name localhost;
    location / {
        proxy_pass http://192.168.1.1:8080;

    }
}

我做错了什么?我通过以下方式分别测试了每一个:

URL: 192.168.1.4:80/ --redirects--> 192.168.1.3:9810

并且正确重定向

答案1

这看起来有点像是默认服务器的问题。你有没有在任何地方使用 default_server 指令?或者有没有定义使用默认 Nginx 页面的其他服务器?

我认为发生的情况是 Nginx 查看请求中的域名,但由于您使用的 IP 没有,所以它为默认服务器提供服务。

如果这是问题所在,解决方案是使用域名而不是 IP 向服务器发出请求。如果您没有设置公共 DNS,请使用本地 hosts 文件进行测试。例如,这会进入您的客户端 hosts 文件,以快捷方式获取这些域的 DNS

192.168.1.4 example.com www.example.com example2.com

Hosts 适用于 Unix

/etc/hosts 

对于 Windows

c:\windows\system32\drivers\etc\hosts

这是我使用的默认服务器

server {
  listen      80 default_server;
  server_name _;
  return      444; # This means "go away", effectively
}

相关内容