配置Nginx+Gunicorn+Django时,发现所有请求都是返回“Bad Request (400)”。
最开始,很直观地想到是Django的settings.py中配置的ALLOWED_HOSTS,检查了一下我的配置已经为:ALLOWED_HOSTS = [‘*’]表示允许所有的host。注:如果DEBUG=True,则不检查request header中的HTTP_HOST;只有关闭DEBUG模式才有这个检查。 这样的情况下,我就很奇怪了~~
后来找了好一阵子才忽然发现,我用Nginx作了反向代理,但是没有设置转发后request的host,所以关键要要加上“proxy_set_header Host $host;”的设置;后来,我是将proxy相关的信息放到proxy.conf文件中,然后在nginx.conf中“include proxy.conf”来引用。proxy.conf示例:https://github.com/smilejay/other-code/blob/master/config/nginx-proxy.conf
代码如下 | 复制代码 |
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; client_max_body_size 20m; client_body_buffer_size 256k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 128k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; |
这样配置了“proxy_set_header Host $host;”后,问题就解决了。
但是,还有一点儿没想得太明白,为啥 ALLOWED_HOSTS = [‘*’] 这个设置没有匹配上通过代理过来的请求;看文档是说通过 HttpRequest.get_host() 获得host,我打开DEBUG,不加”proxy_set_header Host $host;”,获得到了 request.get_host() 是我在nginx中通配置的”music_server”(因为配置为:proxy_pass http://music_server;)。
荒野乱斗国际版 (BrawlStars)最新版本v56.274
下载一波超人内置修改器菜单版 安卓版v1.0.2
下载敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载继承了一座戏园子无限声望铜钱版 内置菜单最新版v1.7
继承了一座戏园子折相思版是游戏的破解版本,在该版本中为玩家提
山河半世橙光清软金手指版 无限鲜花v3.24
山河半世是一款超级好玩的橙光恋爱游戏,在游戏中玩家们需要扮演
蓬莱手游折相思版 安卓版v1.0.0
蓬莱免广告版是游戏的修改版本,在该版本中为玩家去除了广告,玩
当红影后橙光游戏破解版2025 最新版v1.0
当红影后橙光破解版是一款超级好玩的娱乐圈题材的橙光游戏,在这
忽然成了万人迷清软完结版 无限鲜花版v12.15
忽然成了万人迷破解版是一款非常好玩的男性向橙光游戏,在有一天