美文网首页
nginx+uwsgi 502

nginx+uwsgi 502

作者: claylee | 来源:发表于2021-08-23 00:16 被阅读0次

    问题描述

    1. uwsgi --http-socket=:port --venv --plugin --pythonpath 启动后可以通过ip:port 访问
    2. 服务器同时存在另一个listen 80 的server 正在运行。
    3. nginx 配置 :
    server {
        server_name domain.com;
        listen 80;
        location / {
            alias /home/xxx;
       }
    
    }
    

    通过域名(domain.com)无法访问,返回502。

    1. nginx error.log

    xxxx/xx/xx 16:02:03 [error] 320570#320570: *10169 uepstream prematurely closed connection while reading response header from upstram, client: ip.xx.ip, server: xxx.com, request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:9191", host: "www.xxx.com"

    解决

    注意区分

    1. nginx 配置中 uwsgi_pass 和 proxy_pass 的区别。
    2. uwsgi 配置中 socket \ http \ http-socket 的区别。

    总结

    • nginx 中 使用uwsgi_pass, uwsgi 中必须使用 socket。如果 使用 uwsgi_pass 和 http-socket 组合,测试会出现上面502 错误。
    • 不通过nginx发布、需要直接把uwsgi暴露外网时,使用 http 选项。此时 uwsgi 会创建一个新的http进程。
    • 通过nginx发布,nginx 中使用proxy_pass 时,uwsgi 需要 http-socket 来暴露接口。

    简单的理解整理成下面的对应关系:

    编号 Nginx 配置 uWSGI 配置 备注
    1 uwsgi_pass 127.0.0.1:9191; --socket=127.0.0.1:9191 推荐配置
    2 proxy_pass http://127.0.0.1:9191 --http-socket=127.0.0.1:9191
    3 不使用 Nginx发布 --http=127.0.0.1:9191 --plugin=http 可能需要安装 uwsgi-http 和uwsgi-router_http

    相关文章

      网友评论

          本文标题:nginx+uwsgi 502

          本文链接:https://www.haomeiwen.com/subject/zgjriltx.html