在 nginx.conf 中写入两个位置并出现 404 错误是怎么回事?

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

这是我的nginx.conf文件内容:

events { worker_connections 1024; }

http {
    server {
        listen 80;
        server_name localhost;

        location /prometheus/ {
            proxy_pass http://prometheus:9090/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }

        location /grafana/ {
            proxy_pass http://grafana:3000/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

当我将

/prometheus/
/grafana/
更改为
/
时,应用程序可以正常工作,但是当我在
/
之后写一个字时,我收到 404 错误!

所有应用程序都由docker运行。 (如果有帮助的话)

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

首先,确保 Nginx 配置中的位置路径 /prometheus/ 与您用于访问应用程序的 URL 路径匹配。例如,如果您尝试访问 http://prometheus:9090/prometheus/ 上的应用程序,您提供的配置应该可以工作。

请注意,您的位置和 proxy_pass 中是否包含尾部斜杠可能会影响行为。在您的情况下,仅当 URL 中有尾部斜杠时 /prometheus/ 才会匹配。如果您想让它在有或没有尾部斜杠的情况下工作,您可以使用重写指令来强制执行一致的行为:

location /prometheus/ {
    rewrite ^/prometheus(/.*)$ $1 break;
    proxy_pass http://prometheus:9090;
}

还请跟踪日志,看看当您尝试访问 URL 时是否有有用的内容

sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log

更不用说,您提供的配置中的 404 错误也可能是由其他几个因素引起的。

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