当前位置: 首页 > 知识库问答 >
问题:

双代理的Nginx Websocket配置

戚默
2023-03-14

我正在尝试通过两个nginx代理发出websocket请求。是做SSR(服务器端渲染)

我的堆栈是这样的:外部世界

当我在做《外部世界》的时候

Websocket连接建立得非常好。但是当我实现rendora(SSR)并向nginx添加另一个代理时,它不起作用。握手时 Websocket 连接失败。我猜“升级”请求在我的nginx服务器的某个地方失败了。我的nginx conf如下:

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套接字。

SSR本身工作得很好,除了websocket请求。但是我不知道为什么当请求必须通过两个nginx代理时,websocket升级没有完成。

共有1个答案

尹俊雅
2023-03-14

我通过发出/graphql websocket请求直接进入Daphne服务器来解决它。我仍然不知道为什么当我将它们路由到另一个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;
            }
 类似资料:
  • 本文向大家介绍nginx代理服务器配置双向证书验证的方法,包括了nginx代理服务器配置双向证书验证的方法的使用技巧和注意事项,需要的朋友参考一下 生成证书链 用脚本生成一个根证书, 一个中间证书(intermediate), 三个客户端证书. 中间证书的域名为 localhost. 服务器 nginx 配置 客户端 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的

  • 我正在设置一个 OpenShift 源服务器。我所做的配置在很大程度上依赖于演练说明: https://github.com/openshift/origin/blob/master/examples/sample-app/README.md 创建项目后,我添加了一个像这样的新应用程序(成功): oc new-app centos/ruby-22-centos7~https://github.co

  • 问题内容: 我需要通过代理服务器从Gradle进行Web访问,才能将Gradle / Artifactory集成用于Jenkins。为了减少可能的问题原因,我在build.gradle中手动添加了Artifactory插件,并从命令行运行它: 按照此描述,我在主目录的.gradle / gradle.properties中指定了以下内容: 使用上面的代理配置(已知可以正常工作),它将失败: 11:

  • 我正在尝试使用jmeter加载测试https网站。我已经在proxyserver中使用keytool安装了客户端证书(.pfx)。jmeter/bin中的jks文件。 我还使用jmeter手册配置了jmeter代理和firefox(http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf). 还将HTTP请求采样器配置为将协

  • 4.7 配置代理 从0.7.1版本开始,WebMagic开始使用了新的代理APIProxyProvider。因为相对于Site的“配置”,ProxyProvider定位更多是一个“组件”,所以代理不再从Site设置,而是由HttpClientDownloader设置。 API 说明 HttpClientDownloader.setProxyProvider(ProxyProvider proxyP

  • 我试图使用nginx作为双向SSL/相互SSL的web逻辑的反向代理。 客户端<=双向SSL=>NGINX<=双向SSL=>WebLogic服务器 客户端到NGINX双向SSL工作良好,但在上游连接到web逻辑上出现以下错误。 nginx调试日志: 以下是我对上游的nginx配置: 我尝试了各种选项,包括注释下面的配置。 如果我尝试使用openssl c_client命令行,我能够连接并获得HTT