我为自己的网络服务器制作了自己的配置,如果我通过IP访问我的网站,一切工作都很顺利 - http://179.188.3.54
我还没有改变我的域名,我修改了我的/ etc / hosts本地:
179.188.3.54 cinegloria.com
因此,当我尝试在浏览器上访问我的网站时,我得到了错误的请求(400)。这是我的nginx配置:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/www;
index index.html index.htm;
access_log /var/log/nginx/domain-access.log;
error_log /var/log/nginx/error.log;
server_name cinegloria.com www.cinegloria.com;
location /static {
alias /cinegloria/cinegloria/cinegloria/static/;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://0.0.0.0:8000/;
fastcgi_split_path_info ^()(.*)$;
}
}
我不知道可能出现什么问题,据我所知,我不需要改变其他任何事情。有什么想法吗?
答案 0 :(得分:3)
什么意思是proxy_pass http:// 0.0.0.0 :8000 /?也许必须有127.0.0.1或179.188.3.54
并检查您在proxy_pass中的端口
root@RDE-1.3:~# curl -I http://179.188.3.54
HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Tue, 24 Feb 2015 15:46:10 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
root@RDE-1.3:~#
root@RDE-1.3:~#
root@RDE-1.3:~# curl -I http://179.188.3.54:8000
curl: (7) couldn't connect to host
PS: 你添加ALLOWED_HOSTS了吗? 默认值:[](空列表)
ALLOWED_HOSTS = [
'.example.com', # Allow domain and subdomains
'.example.com.', # Also allow FQDN and subdomains
]
表示此Django的主机/域名的字符串列表 网站可以服务。这是一种防止攻击者的安全措施 中毒缓存和密码重置电子邮件与恶意链接 通过伪造的HTTP主机头提交请求的主机,即 甚至可以在许多看似安全的Web服务器配置下使用。
此列表中的值可以是完全限定名称(例如 ' www.example.com'),在这种情况下,他们将匹配 请求的主机头正确(不区分大小写,不包括端口)。 以句点开头的值可以用作子域通配符: ' .example.com的'将匹配example.com,www.example.com和任何其他 example.com的子域名。价值为' *'会匹配任何东西;在这 如果您有责任提供自己的主机验证 标题(可能在中间件中;如果是这样,则必须列出此中间件 首先在MIDDLEWARE_CLASSES中。
如果主机标头(或X-Forwarded-Host,如果USE_X_FORWARDED_HOST是 enabled)与此列表中的任何值都不匹配 django.http.HttpRequest.get_host()方法将引发 SuspiciousOperation。
当DEBUG为True或运行测试时,主机验证被禁用; 任何主人都会被接受。因此,通常只需要设置它 在生产中。
此验证仅适用于get_host();如果您的代码访问 直接来自request.META的主机头您绕过此安全性 保护。