Nginx配置Websocket

1 前言
软工大作业的服务器实现了一个自动聊天机器人的功能,经过测试在Django自带服务器中没有问题,但是在部署到Nginx后,出现了Nginx不能成功转发的问题。
经过调研后,发现是之前一直使用位于8080端口的uwsgi服务器接收从nginx监听的80端口发送来的请求,而对于websocket请求,应当使用asgi服务器来处理,因此使用uwsgi无法正常的处理websocket请求,从而出现错误。

对于wsgi和asgi,可以简单的介绍:
WSGI,全称Web服务器网关接口(Python Web Server Gateway Interface, WSGI),是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。
WSGI是基于http协议模式开发的,不支持websocket。
ASGI,是异步网关协议接口,解决了python中的WSGI不支持当前的web开发中的一些新的协议标准,同时ASGI支持原有模式和websocket的扩展,即ASGI是WSGI的扩展。

 

nginx 配置多个server

复制代码
http {
    server {
        listen       80;
        server_name  example.com;
        root         /var/www/example.com;
        location / {
            index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  blog.example.com;
        root         /var/www/blog.example.com;
        location / {
            index  index.html index.htm;
        }
    }
}
复制代码

在上面的示例中,我们定义了两个server块,分别对应example.com和blog.example.com两个虚拟主机。每个server块都有自己的listen、server_name和root配置,用于指定监听端口、域名和网站根目录。location块用于指定请求的处理方式,例如index文件和其他配置。

需要注意的是,如果有多个server监听同一个端口,nginx会根据server_name来匹配请求,找到匹配的虚拟主机进行处理。如果没有匹配的虚拟主机,则会使用默认的server块进行处理。因此,在配置多个server时,需要确保server_name唯一。

 检查配置是否正确:

 

posted @   瘋耔  阅读(92)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2018-01-04 ring0
2017-01-04 计算机网络中通信协议都有哪些
跳至侧栏
点击右上角即可分享
微信分享提示