nginx反向代理服务器获取不到端口的问题的解决办法
2013-05-05 15:14
519 查看
使用nginx为反向代理服务器时,后端应用程序获取不到请求端口的解决办法。
以下是nginx 简单的配置
server {
listen 81;
server_name localhost;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:9380;
}
}
把第5行 的 proxy_set_header Host $host; 修改为 proxy_set_header Host $host:$server_port; 即可。
原因是$host参数不包含端口号导致请求头部Host中的端口号丢失从而使后端程序不能正确的获取端口号。
使用 CXF 实现webservice 时 通过nginx 反向代理 动态生成的wsdl文件中 location地址中的端口号也会丢失,从而导致 webservice 调用失败。
$host 参数的解释
This variable is equal to line Host in the header of request or name of the server processing the request if the Host header is not available.
This variable may have a different value from $http_host in such cases: 1) when the Host input header is absent or has an empty value, $host equals to the value of server_name directive; 2)when the value of Host contains port number, $host doesn't include that port number. $host's value is always lowercase since 0.8.17.
以下是nginx 简单的配置
server {
listen 81;
server_name localhost;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:9380;
}
}
把第5行 的 proxy_set_header Host $host; 修改为 proxy_set_header Host $host:$server_port; 即可。
原因是$host参数不包含端口号导致请求头部Host中的端口号丢失从而使后端程序不能正确的获取端口号。
使用 CXF 实现webservice 时 通过nginx 反向代理 动态生成的wsdl文件中 location地址中的端口号也会丢失,从而导致 webservice 调用失败。
$host 参数的解释
This variable is equal to line Host in the header of request or name of the server processing the request if the Host header is not available.
This variable may have a different value from $http_host in such cases: 1) when the Host input header is absent or has an empty value, $host equals to the value of server_name directive; 2)when the value of Host contains port number, $host doesn't include that port number. $host's value is always lowercase since 0.8.17.
相关文章推荐
- nginx反向代理tomcat,由于客户端输入的端口不一致造成网页basehref错误的问题及解决办法
- Windows10下启动nginx反向代理服务器失败的解决方法(重在解决:80端口被PID为4的System占用问题)
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- Mac下使用nginx反向代理服务器解决资源跨域问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- Nginx反向代理端口域名无法访问问题解决
- 关于nginx反向代理后获取不到客户端的真实ip地址问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 以cdn为前导,使用Nginx服务器反向代理,获取客户端真实ip的办法
- nginx反向代理服务器端口问题