这是我的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 配置中的位置路径 /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 错误也可能是由其他几个因素引起的。