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 (将#修改为@)