nginx pynecone self-hosting get WebSocket error

mv1qrgav  于 2023-04-11  发布在  Nginx
关注(0)|答案(1)|浏览(201)

这是自托管的文档实际上,从document
我不太明白pcconfig.py中每个字段的含义。
是否有任何自我托管的演示?
或者有更完整的官方文件吗?
这是我的

pcconfig.py

config = pc.Config(
    app_name="myapp",
    api_url="http://myhost:8100",
    bun_path="$HOME/.bun/bin/bun",
    db_url="sqlite:///pynecone.db",
)

我在我的网站上使用nginx。它得到错误消息。

WebSocket connection to 'wss://myhost:8100/event/?EIO=4&transport=websocket' failed

我不知道怎么回事,但这行不通,
我不太清楚文件上写了什么
我的www.example.com有什么问题吗pcconfig.py?
你有什么建议吗?
谢谢。

xe55xuns

xe55xuns1#

在这里,我可以简单分享一下我在nginx上的自托管经验。如果你想了解详细信息,可以阅读这个article

场景

我的资源

  • 我只有一个IP为**111.123.xxx.33.的主机( 在我的真实的情况中,我在linux上运行,它完全是linux
  • 在主机上,它可以很好地运行pynecone项目。
  • 我的域名是mydomain.net
  • 我已经有了我的SSL证书/xxx/xxx/fullchain.pem和/xxx/xxx/privkey. pem。(* 在我的真实的案例中,我使用Let's Encrypt SSL,每3个月由Certbot管理一次 *)
  • 我可以为我的域名设置DNS。(* 在我的真实的情况下,我使用路由器-53*)
  • 在主机中,没有人使用端口37118701

目标

对于一个松果项目,最终将构建到前端部分和后端部分。我希望实现以下目标。

  • 我只想在一台IP为111.123.xxx.33的主机上运行前端和后端。
  • 用户可以从**https://xxxxx-frontend.mydomain.net**打开我的服务
  • 我希望pynecone的前端运行在端口3711
  • 我希望pynecone的后端运行在端口8701

为了在现有资源的情况下实现这一目标,我们有以下3个步骤来完成这一使命。

1. DNS设置

我的主机IP为111.123.xxx.33
我可以在DNS上添加两个A记录。

*xxxxx-frontend.mydomain.net-〉111.123.xxx.33
*xxxxx-backend.mydomain.net-〉111.123.xxx.33

  • 两个域的IP相同 *

2. Pynecone项目

pcconfig.py

import pynecone as pc
my_deploy_config = pc.Config(
    app_name="myapp",
    port=3711,
    backend_port=8701,
    api_url="https://xxxxx-backend.mydomain.net",
    bun_path="$HOME/.bun/bin/bun",
    db_url="sqlite:///pynecone.db",
    env=pc.Env.PROD,
)
config = my_deploy_config

此文件给予以下信息。

  • 前端将在http://localhost:3711中提供服务
  • 后台服务地址http://localhost:8701
  • 前端的源代码将在**https://xxxxx-backend.mydomain.net**上与后端通信

启动项目的pc命令

  • pc初始化
  • pc运行

3. Nginx设置

/etc/nginx/nginx.conf

插入以下内容以包括设置。

include /somepath/my-nginx-sites-enabled/*

/somepath/my-nginx-sites-enabled/xxxxx-backend.mydomain.net

server{
    server_name xxxxx-backend.mydomain.net;
    location / {
        proxy_pass http://localhost:8701;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $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_redirect off;
   }
    listen 443 ssl; # managed by Certbot
    ssl_certificate /xxx/xxx/fullchain.pem; # managed by Certbot
    ssl_certificate_key /xxx/xxx/privkey.pem; # managed by Certbot
}

上面设定了以下4件事。

  • SSL支持
  • WebSocket支持
  • HTTP支持
    *xxxxx-backend.mydomain.net-〉http://localhost:8701

(this根据您的www.example.com,是pynecone的后端pcconfig.py)

/somepath/my-nginx-sites-enabled/xxxxx-frontend.mydomain.net

server{
    server_name xxxxx-frontend.mydomain.net;
    location / {
        proxy_pass http://localhost:3711;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $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_redirect off;
    }
    listen 443 ssl; # managed by Certbot
    ssl_certificate /xxx/xxx/fullchain.pem; # managed by Certbot
    ssl_certificate_key /xxx/xxx/privkey.pem; # managed by Certbot
}

上面设定了以下4件事。

  • SSL支持
  • WebSocket支持
  • HTTP支持
    *xxxxx-frontend.mydomain.net-〉http://localhost:3711(根据您的www.example.com,这是pynecone的前端pcconfig.py)

相关问题