如何解决nginx反向代理后面的django应用程序中的错误链接
我遇到了这个问题,我想按照以下方式部署我的 django 应用程序。想象一下一些具有一些 Nginx 配置的内网虚拟机,其中对 https://something.smth/django/
的所有请求都将转发到 docker 容器,在那里我有另一个 Nginx 和 django 应用程序。主页很好,django 应用程序正常加载,但是当我单击某个链接时,django 会将 url 设置为 https://something.smth/some-link/
而不是 https://something.smth/django/some-link/
。我在这里看到了很多问题,但没有一个能解决我的问题。
我对 Nginx 知之甚少,如果您能帮助我,我将不胜感激。谢谢!
这是我在 docker 容器中的 Nginx 配置(我无法控制 VM 中的 Nginx)
upstream app {
server web:8000;
}
server {
listen 80;
if ($http_x_forwarded_proto = 'http'){
return 301 https://$host$request_uri;
}
client_max_body_size 5000M;
location / {
proxy_pass http://app;
proxy_read_timeout 10h;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header SCRIPT_NAME /ecg;
}
location /static/ {
alias /usr/src/app/static/;
}
location /media/ {
alias /usr/src/app/media/;
}
}
如果有帮助,请使用 docker-compose
version: '3.7'
services:
web:
build: ./app
command: daphne -b 0.0.0.0 -p 8000 django.asgi:application
volumes:
- static_volume:/usr/src/app/static
- media_volume:/usr/src/app/media
- ./publish/:/usr/src/app/publish/
ports:
- 8000:8000
env_file:
- .env
depends_on:
- db
- redis
redis:
image: redis:alpine
ports:
- 6379:6379
db:
image: postgres:12.2-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- .env
Nginx:
build: ./Nginx
volumes:
- static_volume:/usr/src/app/static
- media_volume:/usr/src/app/media
ports:
- 80:80
depends_on:
- web
volumes:
postgres_data:
static_volume:
media_volume:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。