【发布时间】:2017-01-08 15:20:42
【问题描述】:
我有一个在 8080 端口上运行的 java spring 应用程序,这个应用程序应该返回一个标头“x-auth-token”,这个应用程序在 nginx 反向代理后面运行。
应用程序正确生成标头,当我直接向它请求时(绕过 nginx):
http://169.54.76.123:8080
它以响应标头集中的标头进行响应
但是当我通过 nginx 反向代理发出请求时,没有出现标头
https://169.54.76.123
nginx 处理 ssl 终止。
我的 nginx 配置文件
upstream loadbalancer {
server 169.54.76.123:8080 ;
}
server {
listen 169.54.76.123:80;
server_name api.ecom.com;
return 301 https://api.ecom.com$request_uri;
}
server {
listen 169.54.76.123:443 ssl;
keepalive_timeout 70;
server_name api.ecom.com;
ssl_certificate /etc/ssl/api_chained.cert ;
ssl_certificate_key /etc/ssl/api.key ;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv3 SSLv2;
ssl_ciphers ALL:!ADH:RC4+RSA:HIGH:!aNULL:!MD5;
charset utf-8;
location / {
proxy_pass http://loadbalancer/$request_uri ;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
问题是:为什么 nGinx 不将“x-auth-token”传递给响应?
如何将其包含在响应中?
我试图获取变量中的值,但nGinx似乎没有它:
我使用了$sent_http_x_auth_token 和$upstream_htto_x_auth_token,但这些变量不包含任何值(我认为)
我尝试使用这些变量自己添加标题:
add_header x-auth-token $sent_http_x_auth_token; 没有成功
也试过了:
add_header x-auth-token $upstream_http_x_auth_token; 也没有成功。
我也试过了:
proxy_pass_header x-auth-token;
没有成功
有什么问题?我该如何调试它? 哪个部分阻止或阻止“x-auth-header”?上游或代理还是什么?
感谢您的帮助
【问题讨论】:
标签: nginx spring-boot proxy spring-session