Nginx:什么是WebSockets的X-Forwarded-For替代方案


在使用

WebSockets时,有没有办法将客户端身份传递给Nginx(以获得粘性会话)?类似于HTTP的"X-Forwarded-For"标头?

Websockets在HTTP升级握手下开始它们的生命。握手成功完成后,您将获得长时间运行的双向 websocket 连接。

如果你使用Nginx作为websockets的代理,那么你也可以使用"X-Forwarded-For",但只能在握手时使用。例如,请参阅此简单配置:

# WebSocket Proxy
#
# Simple forwarding of unencrypted HTTP and WebSocket to a different host
# (you can even use a different host instead of localhost:8080)
server {
    listen 80;
    # host name to respond to
    server_name ws.example.com;
    location / {
        # switch off logging
        access_log off;
        # redirect all HTTP traffic to localhost:8080
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # WebSocket support (nginx 1.4)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

。以及此页面上的一些参考资料。

您配置 Nginx 应该在升级请求中发送的内容(您用于识别客户端的信息),后端服务器的工作是使用握手中的信息来识别客户端,然后将 websocket 连接关联到您的客户端。基于该关联,该 websocket 连接上出现的任何消息都属于先前标识的客户端。

相关内容

  • 没有找到相关文章

最新更新