原文地址:http://blog.youkuaiyun.com/johnnycode/article/details/48262191
Nginx 反向代理 Tomcat 传递自定义 Head 信息遇到几个问题总结一下!
1. Nginx 若只配置 proxy_pass 则不会将原始请求 Head 向 Tomcat 转发,必须配置 proxy_set_header !
#移动端业务服务配置
server {
listen 80;
server_name mobile.abc.com;
access_log logs/access-mobile.log main;
error_log logs/error-mobile.log;
location / {
proxy_pass http://127.0.0.1:8060/mobile_service/;
proxy_set_header HOST $HOST;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Request-Url $request_uri;
}
}2.若请求 Head 信息中存在自定义信息并且以 "_" 下划线间隔,则必须配置underscores_in_headers 否则 Head 无法向 Tomcat 转发!
http {
include mime.types;
default_type application/octet-stream;
underscores_in_headers on; #自定义 Head 必须定义
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
...此处省略...

本文详细解析了在使用Nginx进行反向代理Tomcat时,如何配置proxy_pass与proxy_set_header来正确传递自定义Head信息。特别指出移动端业务服务配置中,需注意Head信息的转发方式,特别是对于含有下划线分隔的自定义信息的处理。同时,介绍了在HTTP配置中如何启用underscores_in_headers特性以确保自定义Head信息能够被正确转发。
2万+

被折叠的 条评论
为什么被折叠?



