我读过一些文章( 主要是这个 ),但我仍然不明白为什么我的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 }