我有一个前端应用程序,我希望它出现在除 /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 中。
解决方案是在 proxy_pass 字段末尾添加斜杠,例如
http://front/;
。我没有说明为什么它会这样工作,但是没关系