flask-socketio 怎么部署到nginx?

如题
使用flask-socketio 写了一个简单的基于websocket 的聊天室,现在如果想要将其部署到nginx,配置文件应该怎么写?

阅读 8.1k
2 个回答

下面是我的配置 你可以参考一下
这是启动gunicorn 命令:

/root/.pyenv/versions/flask/bin/gunicorn -c webshell.conf socketio_run:app

这是 webshell.conf

workers = 1
bind = 'unix:/tmp/gunicorn.sock'
pythonpath='/root/quleduo_manager_test/'
worker_class='geventwebsocket.gunicorn.workers.GeventWebSocketWorker'
threads=1
worker_connections=100
timeout=60
accesslog='/root/quleduo_manager_test/FileStores/log/gunicorn_access_test.log'
errorlog='/root/quleduo_manager_test/FileStores/log/gunicorn_error_test.log'

这是nginx 配置:

upstream api {
        server unix:/tmp/gunicorn.sock
        }
server {
        listen          80;
        charset         utf-8;
        client_max_body_size    75M;
        access_log  off;
        access_log /data/logs/salt_api.log  combined;
        error_log  /data/logs/salt_api.log;
        location / {
                proxy_pass https://api ;
        }
}

只是单纯部署到nginx很简单,就是在/etc/nginx/conf.d下新建一个配置文件。监听一个端口,然后将端口请求全部转发到你websocket监听的端口上就行。

#####
# /etc/nginx/conf.d/socketio.conf
#####
server {
    listen       8081;                           # 监听一个端口,供外部访问

    location / {
        proxy_pass http://localhost:10086;      # 将请求转发到本机10086端口
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;  # websocket这两个选项
        proxy_set_header Connection "upgrade";   # 需要明确的指定
    }

比如说你机器ip是192.168.1.110。
本地socketio监听的端口是10086。
需要访问聊天室的时候,请求192.168.1.110:8081,nginx会将请求转发到10086端口。

这只是最简单基本的配置,能让你的服务运行,具体优化什么的还需要你再进一步设置。

可以看一下这篇文章

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题