【问题标题】:Invalid address when startup gunicorn启动gunicorn时地址无效
【发布时间】:2015-03-30 12:10:08
【问题描述】:

将gunicorn监听地址绑定到我的nginx服务器时遇到错误,事情是这样的:

1.gunicorn_wsgi.py

import multiprocessing

bind="192.168.239.145:8080"(my nginx server ip address)

workers = multiprocessing.cpu_count()  2 + 1

2.nginx.conf

http{
     upstream realservers{
       server 192.168.239.146:8080;(my django and gunicorn address)
     }
     servr{
         listen 80;
         server_name example.com
         location / {
              proxy_pass http://realservers
         }
     }
}

当我运行gunicorn -c gunicorn-wsgi.py myproject.wsgi 时,出现错误:

[2015-03-30 04:56:05 -0700] [38656] [INFO] Starting gunicorn 19.3.0
[2015-03-30 04:56:05 -0700] [38656] [ERROR] Invalid address: ('192.168.239.145', 8080)

我注意到 gunicorn 提到如果您在与 gunicorn 不同的主机上运行 nginx,您需要告诉 gunicorn 信任 nginx 发送的 x-forward-* 标头。

如果您在与 Gunicorn 不同的主机上运行 Nginx,则需要 告诉 Gunicorn 信任 Nginx 发送的 X-Forwarded-* 标头。经过 默认情况下,Gunicorn 将仅在连接时信任这些标头 来自本地主机。这是为了防止恶意客户端 伪造这些标题:

gunicorn -w 3 --forwarded-allow-ips="10.170.3.217,10.170.3.220" test:app

我按照它所说的,但仍然是同样的错误。我将地址更改为 127.0.0.1 和 0.0.0.0 ,它们工作正常,但不安全,如何配置,请帮助我!

【问题讨论】:

    标签: django nginx gunicorn


    【解决方案1】:

    这显然不是您的问题,但是您将配置文件称为“gunicon_wsgi.py”令人困惑。这不是您的 WSGI 文件。将其称为“gunicorn_conf.py”或类似名称。

    但是,您的问题是您误解了绑定到 IP 地址的含义。你不能将你的 gunicorn 服务器绑定到不同机器上的 IP 地址;这根本没有意义。绑定到 0.0.0.0 也不是“不安全的”。

    【讨论】:

    • 配置文件名任意,gunicorn可以使用gunicorn --config命令行指定配置文件,如你所指,我将gunicorn监听地址改为127.0.0.1并配置x-forwarded -* 标头到我的 nginx 服务器地址,但仍然不起作用。
    • 是的,但如果不是,请不要将其称为 WSGI 文件,这会造成不必要的混乱。如果您的 nginx 从另一台机器转发,则没有必要绑定到 127.0.0.1:您需要绑定到 all 地址 (0.0.0.00) 或 gunicorn 实际上正在侦听的地址 (192.168. 239.146)。
    • 哇,原谅我,我太粗心了,现在它工作得很好,无论如何,谢谢你的帮助:)我真丢脸!!!
    猜你喜欢
    • 2012-04-05
    • 2017-03-19
    • 1970-01-01
    • 2016-11-08
    • 2013-12-08
    • 1970-01-01
    • 2016-05-23
    • 2021-10-10
    • 1970-01-01
    相关资源
    最近更新 更多