django+gunicorn+nginx部署时,nginx反向代理非80端口时重定向报错

最近使用django+gunicorn+nginx部署archer项目时,反向代理使用的是9123端口,当访问http://127.0.0.1:9123 时会重定向到http://127.0.0.1/login/, 导致无法访问,需要手动添加端口,同时admin管理后台的跳转也是类似情况,异常麻烦,最后记录下解决方案。

settings文件增加

1
2
# 解决nginx部署跳转404
USE_X_FORWARDED_HOST = True

nginx配置修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server{
listen 9123; #监听的端口
server_name archer;

location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host:9123; #这里增加监听的端口即可
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;
}

location /static {
alias /opt/archer/static;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

reload配置,重新访问,重定向时就会自动增加端口信息了