[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]nginx反向代理到域名地址时,报404错误的解决方法

上一篇:[GDS]Sabre的BFM接口,限制国籍的价格
下一篇:[备忘]nginx日志,切割,保留几天的,logrotate

添加日期:2017/11/17 7:10:14 快速返回   返回列表 阅读2204次
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,当然不对了。
--------------------------------------------------------


 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved