配置完成Nginx后发现之前的Streamlit的页面通通无法访问,具体如下:

image.png 但是其他gradio、Vue的网站,都是正常访问的,

F12->网络,可以看到 image.png

我这里 WebSocket 连接失败 ,是由于Nginx未对应配置,

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

打开nginx.conf修改对应配置后,重启nginx即可

示例:

server {
   listen 80;
   server_name yoururl.xyz;
   location / {
       proxy_pass http://127.0.0.1:8001; # frps.ini中的vhost_http_port     	
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
   }
}

WebSocket 是一种基于 TCP 的网络通信协议,旨在实现客户端和服务器之间的双向通信。它允许在单个 TCP 连接上进行全双工(即同时进行发送和接收)通信。WebSocket 特别适用于需要实时更新的应用,比如在线游戏、聊天应用、实时数据流等。

WebSocket特点

  • WebSocket 建立的连接是持久的,客户端和服务器在一次连接后可以持续交换消息,而不需要频繁建立和关闭连接,从而减少了网络延迟和开销。
  • WebSocket 协议在数据传输中相对轻量,不需要像 HTTP 那样包含大量的头信息,数据包开销更小。

连接步骤

  • 客户端通过发送 HTTP 请求向服务器发起 WebSocket 连接。请求中包含一些特定的头信息,如 Upgrade: websocketSec-WebSocket-Key
  • 服务器收到请求后,如果支持 WebSocket,会返回一个包含 Sec-WebSocket-Accept 头的响应,完成握手过程
  • 握手成功后,HTTP 连接升级为 WebSocket 连接