问题描述
我遇到了这个问题,我想按照以下方式部署我的 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 (将#修改为@)