![Nginx:proxy_set_header“升级”减慢了服务器速度](https://linux22.com/image/740168/Nginx%EF%BC%9Aproxy_set_header%E2%80%9C%E5%8D%87%E7%BA%A7%E2%80%9D%E5%87%8F%E6%85%A2%E4%BA%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%80%9F%E5%BA%A6.png)
我有一个网站,想使用基于 WebSocket 的功能来增强它。该网站位于 Nginx 反向代理后面。
我的服务器配置如下:
location / {
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_ignore_client_abort on;
proxy_redirect http://weblogic:8080/ $scheme://$host:$server_port/;
proxy_pass http://weblogic:8080/;
access_log /var/log/nginx/weblogic.frontend.access.log main;
}
有问题的更改是proxy_set_header Connection "Upgrade";
行。这是我因为 WebSocket 而添加的行。
我试过了,它确实有效,但问题是,一旦配置中有这行代码,每次重定向都会变得非常慢。几秒钟内完成的请求现在需要半分钟才能完成。我该如何避免这个问题,同时又能使用 WebSocket?
附言:我做了进一步的测试,可以确认只有返回 302 的请求才会很慢。我尝试将属性更改proxy_redirect
为不使用变量的属性,但运气不佳。
答案1
我找到了一个解决方案。我不知道它是否“解决”了这个问题,但到目前为止,它确实很好地掩盖了这个问题。
我所做的是将 websocket 通信放在具有上述设置的不同位置,而非 websocket 位置保持正常proxy_pass
。
请详细说明,如果这个解决方案真的只是在粉饰太平