我正在使用NGINX作为反向代理。以下是nginx.conf文件中的设置。我想将自定义标头从代理传递到后端HTTP服务器。我确实在HTTP服务器中获得了自定义标头,但在我的sockJs连接中却没有得到它。
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-RealIPRemote $realip_remote_addr;
proxy_set_header X-RemoteAddr $remote_addr;
proxy_set_header Host $host;
proxy_set_header mycustomhdr customname;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.1.1:18000;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header mycustomhdr customname;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
在连接到的http服务器中:
sockServer = sockJs.createServer(
...
sockServer.on('connection', function (conn) {
console.log("conn.headers")
console.log(conn.headers)
这就是我得到的:
{ 'x-forwarded-for': '192.168.1.222',
'x-real-ip': '192.168.1.222',
host: 'example.com',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8' }
我没有获得自定义标头 mycustomhdr 。
〜
答案 0 :(得分:1)
是的,您不会。您会注意到其他几个标头也丢失了。并非所有标头都公开。
来自the docs:
标头(对象)散列,包含从上次复制的各种标头 在该连接上接收请求。公开的标题包括:
origin
,referer
和x-forwarded-for
(和朋友)。我们明确 不要授予对cookie
标头的访问权限,因为使用标头可能很容易导致 安全问题(有关详细信息,请阅读“授权”部分。)