Nginx 为什么反向代理多个站点,访问是同一个站点?
1.Nginx 反向代理多个站点,访问是同一个站点。
192.157.1.1 放置了多个站点(例如,website1.com website2.com,...)
192.157.1.1:80 nginx 监听转发给127.0.0.1:8000
192.157.1.1:8000 APACHE 监听,一般处理nginx转发的http请求。
192.157.1.2:8000 其他服务器web监听
- 情况一:配置一个server段,(server_name localhost)这样子,所有127的站点均可正常访问。
- 情况二:配置两个server段,默认server不变,在前面插入一个server段(指向其他服务器),所有站点访问插入的server段网站。
- 情况三:配置两个server段,默认server不变,在后面追加一个server段(指向其他服务器),所有站点访问默认最前面server段配置的站点。
- 情况四:很神奇的,再额外在前面插入一个server段,也就是插入了两个server段,最后面是一个默认的。第二个插入的server段是存在于默认server段里面的其中一个站点,例如website1.com,此时,127的apache站点均可访问,包括website1.com,而且配置的其他服务器站点也可以访问。
我想知道为什么?在第一种情况下,nginx是正常处理。
第二种情况下,nginx匹配到第一个站点域名访问则正常,匹配不到第一个站点的域名,为什么不继续向下走,进入默认的配置段?
第三种情况下,nginx还未匹配到直接域名,请求就被转发到127.0.0.1:8000端口了。也一样,不继续向下匹配执行。
第四种情况下,令人费解,为什么追加两个server,所有的站点就都恢复正常了?
2.nginx.conf
...
http{
include mime.types;
default_type application/octet-stream;
...
include /usr/local/nginx/vhost/*.conf;#位置1#
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://local_to_httpd;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
include /usr/local/nginx/vhost/*.conf;#位置2#
...
}
...
vhost/*.conf(vhost目录下只有一个文件时,例如:test.conf)
大致如下
server {
listen 80;
server_name www.test.com;
index index.html index.htm index.php;
root /mnt/web/test/wwwroot;
set_real_ip_from 10.0.0.0/16;
real_ip_header proxy_protocol;
location / {
index index.html index.htm;
proxy_pass http://test-other.com:8000;#另外一台服务器
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
#access_log /mnt/web/test/log/access.log test.log.format;
error_log /mnt/web/test/log/error.log;
}
当有两个配置文件时
test.conf => test.com
website1.conf => website1.conf
访问一切正常。
麻烦各位,有了解的解答下,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论