一、nginx 默认转发至现有虚拟主机
nginx 在开启某些监听端口时,必须关闭默认端口转发(比如: 你nginx 开启一个虚拟主机 监听80 端口,域名为www.aaa.com,你没关闭默认端口转发,客户端在本地绑定www.baidu.com 指向你服务器外网IP,这是请求到的你服务器,nginx 很有可能会将请求到你的www.aaa.com这域名指向的root目录)
1、环境及问题:
一台nginx 做代理转发到后端两台 nginx server ,前端nginx server代理监听80 和443 端口,后端两台nginx server(Real service)都开启监听8000 端口,在前端 nginx server 代理层做白名单,默认关闭所有,只开放指定的IP,两台 Real service 上监听8000 不只是一个虚拟机主机,有多个基于域名的虚拟主机。real server1 配置好www.aaa.com 虚拟主机,但是real server2 没配置好www.aaa.com 虚拟主机,但是8000 端口有别的域名也监听,绑定hosts 访问代理时就出现一次正常,一次访问到别的虚拟主机的站点。
问题分析:
请求转发至real server2 后发现监控8000 端口的域名存在,nginx则选择默认转发至监听8000端口别的域名。
问题解决:
在 real server2 nginx 主配置文件关闭默认8000端口转发功能。
server {
listen 80 default;
listen 443 default;
listen 8000 default;
listen 8443 default;
server_name _;
return 444;
access_log off;
ssl_certificate .ssl/xxxxx.com.crt;
ssl_certificate_key .ssl/xxxxx.com.key;
}
网友评论