nginx反向代理到域名地址时,报404错误
开始这样写的:
upstream xxxServer {
server xxxx.yyyy.com:80 weight=100 ; } ........
location ^~ /xxx/getAllOrderDetails {
proxy_pass http://xxxServer/aaa/bbb/ccc/getAllOrderDetails.do; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_read_timeout 300; #增加后端服务器响应请求超时时间 proxy_send_timeout 600; proxy_ignore_client_abort on; proxy_connect_timeout 300; #增加连接后端服务器超时时间 access_log /data/logs/nginxlog/query_xxx.log main; }
看着挺好的,但是死活不行,返回状态404,HTML里写着lost domain。
以为是nginx返回的,但是上服务器上用curl直接post是没问题的。
折腾半天,确认信息是上游的服务器返回的。
莫名其妙,翻过墙头找狗~~ 一会就解决了 ------------------------------------------------------- 这样: proxy_set_header Host xxxx.yyyy.com; 就行了 ------------------------------------------------------- 上游服务器,一个ip地址是绑定多个域名的, 用ip直接访问是不行得,用错误的域名访问也是不行的。 上游服务器如何区分呢,就是通过HOST这个head, Host是啥,就表示访问哪个域名的站点。
nginx里这样写: proxy_set_header Host $http_host;
其实是把nginx访问者的host头带给上游服务器了。 如访问http://aaa.com/xxx/getAllOrderDetails 反向代理到上游时,host头是aaa.com,当然不对了。 --------------------------------------------------------
|