nginx 和代理传递中的多个位置块
multiple location blocks in nginx and proxy pass
我正在尝试 运行 NGINX 服务器后面的 2 个应用程序。
一个在3000(grafana)上监听,一个在9090(prometheus)上监听
我当前的服务器块 nginx.conf 如下所示:
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_pass http://localhost:3000/;
}
location /prometheus{
proxy_pass http://localhost:9090/;
}
}
现在对于 Grafana,这非常有效,并且一切都在仪表板中正常工作。
但是当输入 Domain/prometheus 时,它仍然会将我重定向到 grafana 而不是 Prometheus。
我是否需要做一些特定的事情才能让它在这个设置中工作,除了 /prometheus 之外的所有内容都被重定向到 grafana?
默认情况下,http://localhost:9090
将被重定向到 http://localhost:9090/graph
,因此请求被重定向如下:
# the origin request
http://Domain/prometheus
# the request redirect by nginx
http://localhost:9090/
# the request redirect by prometheus
http://Domain/graph
# the request redirect by nginx again
http://localhost:3000/graph
您可以在 Chrome 中使用 F12 进行检查。
要解决此问题,我建议您将域分为两个域:
server {
listen 80;
server_name Domain-Grafana; # Domain for Grafana
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_pass http://localhost:3000/;
}
}
server {
listen 80;
server_name Domain-Prometheus; # Domain for Prometheus
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_pass http://localhost:9090/;
}
}
所以我现在通过这样做解决了它:
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location /prometheus {
proxy_pass http://localhost:9090/prometheus;
}
location / {
proxy_pass http://localhost:3000/;
}
}
我正在尝试 运行 NGINX 服务器后面的 2 个应用程序。
一个在3000(grafana)上监听,一个在9090(prometheus)上监听
我当前的服务器块 nginx.conf 如下所示:
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_pass http://localhost:3000/;
}
location /prometheus{
proxy_pass http://localhost:9090/;
}
}
现在对于 Grafana,这非常有效,并且一切都在仪表板中正常工作。 但是当输入 Domain/prometheus 时,它仍然会将我重定向到 grafana 而不是 Prometheus。
我是否需要做一些特定的事情才能让它在这个设置中工作,除了 /prometheus 之外的所有内容都被重定向到 grafana?
默认情况下,http://localhost:9090
将被重定向到 http://localhost:9090/graph
,因此请求被重定向如下:
# the origin request
http://Domain/prometheus
# the request redirect by nginx
http://localhost:9090/
# the request redirect by prometheus
http://Domain/graph
# the request redirect by nginx again
http://localhost:3000/graph
您可以在 Chrome 中使用 F12 进行检查。
要解决此问题,我建议您将域分为两个域:
server {
listen 80;
server_name Domain-Grafana; # Domain for Grafana
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_pass http://localhost:3000/;
}
}
server {
listen 80;
server_name Domain-Prometheus; # Domain for Prometheus
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_pass http://localhost:9090/;
}
}
所以我现在通过这样做解决了它:
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location /prometheus {
proxy_pass http://localhost:9090/prometheus;
}
location / {
proxy_pass http://localhost:3000/;
}
}