当尝试在 1 个域上托管 2 个应用程序时,Nginx 会进入无限重定向循环

问题描述 投票:0回答:1

我有一个前端应用程序,我希望它出现在除 /admin 之外的所有网址上。在 /admin 上我需要另一个来显示应用程序。

前端应用程序工作正常,但是当我转到域名/管理时,我会遇到无限重定向循环,直到浏览器抛出错误。

我的 nginx 配置:

upstream front {
    server frontend:3000;
}

upstream admin {
    server web:8000;
}

server {
    
    listen 80;

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name "domain_name";
    ssl_certificate /etc/nginx/certs/domain_name.crt;
    ssl_certificate_key /etc/nginx/certs/domain_name.key;
    
    location / {
        proxy_pass http://front;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
    
    location /admin/ {
        proxy_pass http://admin/admin;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /home/app/web/staticfiles/;
    }
    
    location /media/ {
        alias /home/app/web/mediafiles/;
    }

}

我尝试了多种 url 路由变体,例如在上游设置 web:8000/admin 并尝试将

server
块分成 2,但遇到了另一个错误。我该如何解决这个问题?

Nginx 位于 docker 中。

nginx ssl nginx-reverse-proxy nginx-config
1个回答
0
投票

解决方案是在 proxy_pass 字段末尾添加斜杠,例如

http://front/;
。我没有说明为什么它会这样工作,但是没关系

© www.soinside.com 2019 - 2024. All rights reserved.