子目录中的另一个 nginx 代理

子目录中的另一个 nginx 代理

我正在尝试让下面的配置在 Nginx 中工作,基本上重置是另一个 Web 应用程序,它是更大的应用程序的一部分,它会重置更大应用程序的数据库。

目前,每当我尝试访问 domain.com/reset/ 时,它都会采用 domain.com/ 作为路径,然后将其传递到服务器,并要求服务器对 /reset/ 进行响应。

太长不看;http://domain.com/reset/正在触发第三个位置块而不是第一个。

    location /reset/ {
        proxy_pass http://127.0.0.1:9091;
        proxy_read_timeout 3600;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /reset/media {
        alias /home/jsoft/reset/srv/static/;
        expires 1y;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_read_timeout 300;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

答案1

下面是一个快速示例配置,删除了所有动态部分,以测试 nginx 的最基本功能,即位置匹配:

location /reset {
    return 200 "reset";
}

location /reset/media {
    return 200 "reset media";
}

location / {
    return 200 "default";
}

如果触发了正确的位置,那么您可以将动态内容放回去,因为它们不会产生影响。

确保您的配置已应用:

  1. 使用以下方法测试nginx -t
  2. 检查错误日志,检查是否有service nginx reload任何错误导致重新加载失败

一旦您正确测试了位置并切换回您提供的配置,任何以下错误很可能来自后端或您配置的 nginx 与其对话的方式,而不是位置本身。

相关内容