双代理的Nginx Websocket配置
我试图通过两个nginx代理发出websocket请求。它用于执行SSR(服务器端渲染) 我的堆栈如下所示: 外部世界nginx rendora(SSR)nginx daphne django 当我在做 外部世界nginx daphne django Websocket连接建立得非常好。但当我实现rendora(SSR)并向nginx添加另一个代理时,它就不起作用了。握手时Websocket连接失败。我猜“升级”请求在我的nginx服务器的某个地方失败了。我的nginx配置如下所示:双代理的Nginx Websocket配置,nginx,websocket,Nginx,Websocket,我试图通过两个nginx代理发出websocket请求。它用于执行SSR(服务器端渲染) 我的堆栈如下所示: 外部世界nginx rendora(SSR)nginx daphne django 当我在做 外部世界nginx daphne django Websocket连接建立得非常好。但当我实现rendora(SSR)并向nginx添加另一个代理时,它就不起作用了。握手时Websocket连接失败。我猜“升级”请求在我的nginx服务器的某个地方失败了。我的nginx配置如下所示: serve
server {
listen 8000;
location / {
include proxy_params;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
}
}
server {
server_name mydomain;
charset utf-8;
location /static {
alias /home/ubuntu/myproject/apps/web-build/static;
}
location / {
include proxy_params;
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
listen 443 ssl; # managed by Certbot
...
}
因此,位置/端口443将所有来自外部世界的请求发送到rendora(SSR服务器)正在侦听的127.0.0.1:3001。SSR服务器(rendora)将它们转发到127.0.0.1:8000,其中nginx代理连接到daphne unix套接字
除了websocket请求之外,SSR本身运行良好。
但我不知道当请求必须通过两个nginx代理时为什么不进行websocket升级。我通过将/graphql websocket请求直接发送到Daphne服务器来解决这个问题。当我将websocket连接路由到另一个nginx代理服务器时,我仍然不知道为什么websocket连接不起作用
location /graphql {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
include proxy_params;
proxy_pass http://127.0.0.1:3001;
}