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; ...此处省略...