Nginx没有redirect到预期的位置

我读过一些文章( 主要是这个 ),但我仍然不明白为什么我的url没有正确redirect。

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

我的路由器端口80的所有stream量都被成功redirect到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的欢迎页面,所以我知道问题出在我的configuration上,如下所示:

 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; } } 

我做错了什么? 我通过做一些事情来单独testing每一个:

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

它正确地redirect

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

我认为发生的事情是Nginx查看请求中的域名,但是由于您使用的是IP,因此不会为默认服务器提供服务。

如果这是问题,解决scheme是使用域名而不是IP向服务器发送请求。 如果您没有设置公共DNS,请使用您的本地主机文件进行testing。 例如,这将进入您的客户端主机文件文件,以快速DNS这些域

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

主机是在这里的Unix

 /etc/hosts 

对于Windows

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

这是我使用的默认服务器

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