Nginx+Gunicorn+Django配置时出现“Bad Request (400)”解决方法

配置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;)。

时间: 2024-09-28 05:05:59

Nginx+Gunicorn+Django配置时出现“Bad Request (400)”解决方法的相关文章

拨号上网时电脑假死的解决方法

用拨号上网时,有时候遇到电脑假死, 就是刚装了宽带的时候,电脑一开机出现拨号连接的时候电脑就死机, 其实电脑没有死机, 就是假死,要过上几分钟电脑自动好.没什么大问题,只是对于电脑初学者来说难免有一些惊慌.下面就给大家介绍拨号上网时电脑假死的解决方法. 造成这种拨号上网电脑假死的原因是, Windows XP在默认安装方式下,对网卡的TCP/IP设置础"自动获取"状态.当系统启动后,系统首先检测网卡配置中是否有固定的IP地址,如果没有找到固定IP地址,则会向外发送数据包请求网络中的DH

mysql安装时出现各种常见问题的解决方法_Mysql

小编为大家整理许多mysql安装时出现各种常见问题的解决方法,供大家参考,具体内容如下 问题一: 当各位在安装.重装时出现could not start the service mysql error:0原因: 卸载mysql时并没有完全删除相关文件和服务,需要手动清除. 安装到最后一步execute时不能启动服务的解决方法: 首先,在管理工具->服务里面将MySQL的服务给停止(有的是没有安装成功,有这个服务,但是已经停止了的),win+R->cmd,打开命令提示符窗口,输入命令:sc de

JSP中内建exception对象时出现500错误的解决方法_JSP编程

本文实例讲述了JSP中内建exception对象时出现500错误的解决方法.分享给大家供大家参考,具体如下: 尝试使用JSP的内建exception对象,写了下面三个文件.思路很简单,文件index若提交字串为空,则get抛出异常,交由error.jsp处理.但实际却不能正常运行,会出现IE的500错误页面.环境为Tomcat 5.5,IE6.0. 在sun的论坛上有人贴出了原因,是IE的某个设置.Tomcat5.0以后的版本error page在处理时会返回error code 500.而IE

jquery ajax多次请求数据时 不刷新问题的解决方法

jquery的ajax在频繁请求数据,或者重复请求数据的时候出现了一个情况,那就是非ie浏览器正常,ie浏览器会设置缓存,导致第二次请求的时候不会刷新,系统报304 not modify, 解决方案: jquery的ajax方法提供配置参数:cache,(只需将属性设置为false即可) 详细: cache:Boolean 默认: true, dataType为"script"和"jsonp"时默认为false如果设置为 false ,浏览器将不缓存此页面. 以上就

使用Wordpress插件时出现中文乱码的解决方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 用wordpress建网站的好处就在于,可以使用N多主题和N多的插件,由于wordpress在国外的使用时期较长,很多插件都是国外的用户开发的.对于中文的支持不是很好.经常使用WP一定会遇到插件编码问题,今天影子给大家讲一下关于使用wordpress插件时出现中文乱码的解决方法. 一.起因: 今天就遇到一个插件,输入中文后,保存,查看,显示输

win8系统安装Office时提示”错误1911“的解决方法

win8系统安装Office时提示"错误1911"的解决方法 1.看到安装的过程中,一个名为INKDIV.dll的动态库文件无法正常完成注册.说明之前Office程序的参与还在,需要清理一下; 2.这个问题比较普遍,这是Office程序特有的故障,而且微软也有专用工具用以处理这样的问题.这个专用工具,是一个全英文的程序,但是操作还是比较简单的.首先下载工具.解压.百度云网盘分享路径是:全部文件 > 维护电脑 > 清理卸载 > [微软专用卸载工具]地址:http://p

Win8系统笔记本创建WiFi时提示错误1061的解决方法

Win8系统笔记本创建WiFi时提示错误1061的解决方法   解决方法如下: 1.检查笔记本电源是否连上,接上电源看是否能启用wifi共享服务. 2.设备管理-网络适配器 里面将驱动程序升级到最新(如果装的是win8驱动一般是最新的),再尝试启用共享. 3.如果前两步还没有解决,仍然提示错误1061,你就试试最麻烦的一步:准备杀毒吧. windows7教程 windows8教程 windows10教程

Win7系统安装时出现错误代码0x800700B7的解决方法

  Win7系统安装时出现错误代码0x800700B7的解决方法.有些用户在安装Win7纯净版64位系统的过程中出现错误代码0X800700B7,导致安装失败.安装win7系统遇到错误代码问题相信很多用户都有遇到过,已经不是什么新鲜事了,然而引起安装Win7系统出现错误代码0x800700B7的原因有很多种,遇到这错误代码问题该怎么来解决?针对此问题,小编研究整理出解决方法给大家. 解决方法: 1.更改设置,显示系统的隐藏文件和文件夹.左键单击:资源管理器 - 组织 - 文件夹和搜索选项 - 查

Win7系统打开QQ提示配置不正确的原因及解决方法

  原因之一:您的计算机的Windows Installer服务没有开启. 解决方法: 打开控制面板→管理→服务,将Windows Installer服务开启,并设为自动,再重启电脑. 原因之二:您的计算机上没有安装Visual Studio的运行库. 该应用程序是Visual Studio 2005及其以上版本开发的,其依赖于相应的运行库,而您的电脑上没有安装该运行库.(对于VC6或VS2003开发的应用程序, 如果缺少库文件,是会提示缺少"**.dll",但VS2005或VS200