nginx反向代理django应用非80端口,跳转错误404的问题
·
以下方法是我从网上找来的,并没有完全解决我的问题,还需要进一步处理,如果找到方法会进一步完善。
在我们部署django应用的时候,通常的做法是用uwsgi或者gunicorn等wsgi server运行django工程,然后在前面放一个nginx做反向代理,但是如果我们nginx没有使用80端口的话,有可能访问应用的/跳转的时候会出现404错误,丢失了端口,
跳转到另一个网站或者404,如何解决这个问题呢?很简单
1. django settings中添加如下配置
USE_X_FORWARDED_HOST = True2. nginx中添加如下配置
proxy_set_header X-Forwarded-Host $host:$PORT;
其中$PORT表示你当前访问的端口,这样当你访问/或者其他需要跳转的链接的时候就
会带上端口信息了
最近使用 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 配置,重新访问,重定向时就会自动增加端口信息了
更多推荐
所有评论(0)