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