我正在尝试使用django,gunicorn和nginx建立一个项目,我遇到了nginx配置问题。更确切地说,当我使用try_files
时。
如果我使用if (!-f $request_filename) {...}
一切正常,但如果使用的话
try_files ...
Django生成异常:
Invalid HTTP_HOST header: 'myproject_server'. The domain name provided is not valid according to RFC 1034/1035.
一旦使用if ...
一切正常,我会假设其他设置
(gunicorn等)是正确的。
我正在使用的配置文件是:
/home/myproject/myproject/settings.py (django)
...
ALLOWED_HOSTS = [192.168.200.100, ]
...
/ etc / nginx / sites-available / myproject(this this WORKS)
upstream myproject_server {
unix server:/home/myproject/run/gunicorn.sock fail_timeout = 0;
}
server {
listen 80;
server_name 192.168.200.100;
root /home/myproject;
location /media/ {}
location /static/ {}
location / {
proxy_set_header Host $HTTP_HOST;
proxy_set_header X-Real-IP $REMOTE_ADDR;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
if (!-f $request_filename) {
proxy_pass http://myproject_server;
break;
}
}
}
/ etc / nginx / sites-available / myproject(这个没有用)
upstream myproject_server {
unix server: /home/myproject/run/gunicorn.sock fail_timeout = 0;
}
server {
listen 80;
server_name 192.168.200.100;
root /home/myproject;
location /media/ {}
location /static/ {}
location / {
proxy_set_header Host $HTTP_HOST;
proxy_set_header X-Real-IP $REMOTE_ADDR;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
try_files $uri @myproject_backend;
}
location @myproject_backend {
proxy_pass $scheme://myproject_server;
}
}
我做错了什么?
提前感谢任何帮助。
PS:英语不是我的母语,所以我为(很多)错误道歉。
答案 0 :(得分:2)
proxy_set_header
应与proxy_pass
位于同一位置。
location / {
try_files $uri @myproject_backend;
}
location @myproject_backend {
proxy_set_header Host $HTTP_HOST;
proxy_set_header X-Real-IP $REMOTE_ADDR;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://myproject_server;
}