首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx配置错误

Nginx配置错误
EN

Stack Overflow用户
提问于 2018-11-06 14:17:45
回答 1查看 693关注 0票数 1

我在用url配置nginx反向代理时遇到了一些问题。我的配置是:

代码语言:javascript
复制
events {
      worker_connections 768;
}

http {
     include       mime.types;
     default_type  application/octet-stream;

     sendfile        on;
     keepalive_timeout  65;
     access_log /dev/stdout combined;
     error_log /dev/stdout warn;

  server {
    ssl_certificate        /opt/ssl/ca.crt;
    ssl_certificate_key    /opt/ssl/ca.key;
    listen 443 ssl;

location /api/v1/namespaces/mynamespace/services/prometheuslb/proxy/ {
          resolver 127.0.0.1 valid=30s;
          set $endpoint "http://prometheuslb.mynamespace.svc.skydns.local:9090/";
          proxy_pass $endpoint;
        }

        location /api/v1/namespaces/mynamespace/services/pushgatewaylb/proxy/ {
          resolver 127.0.0.1 valid=30s;
          set $endpoint "http://pushgatewaylb.mynamespace.svc.skydns.local:9091/";
          proxy_pass $endpoint;
        }

        location /api/v1/namespaces/mynamespace/services/cratedb/proxy/ {
          resolver 127.0.0.1 valid=30s;
          set $endpoint "http://cratedb.mynamespace.svc.skydns.local:4200/";
          proxy_pass $endpoint;
          proxy_http_version 1.1;
          proxy_set_header Connection "upgrade";
        }
}
}
  • 对于Prometheus,我有一个无限循环,所以页面不会加载。
  • 对于Pushgateway,它重定向错误,因为它应该在/api/v1/namespaces/mynamespace/services/pushgatewaylb/proxy/中查找样式,但是它不接受url部分,例如,它应该在/api/v1/namespaces/mynamespace/services/pushgatewaylb/proxy/static/jquery-2.1.4.min.js中查找样式。
  • 对于cratedb,我收到以下错误:资源被解释为样式表,但使用MIME类型text/html传输

我可以修改现有的服务器块,但不能创建单独的服务器块。

我测试了命中目标,它们可以正常工作,如果我不使用变量,它们也可以工作,但是我需要使用变量和解析器,因为我们需要nginx启动,即使端点不可用。

我如何纠正这些错误?谢谢。

Edit1:

非常感谢您的回复,我不是nginx方面的专家,非常感谢您的帮助:新配置:

代码语言:javascript
复制
location ~ ^/api/v1/namespaces/mynamespace/services/prometheuslb/proxy(/.*)$ {
          resolver 127.0.0.1 valid=30s;
          set $endpoint "http://prometheuslb.mynamespace.svc.skydns.local:9090";
          proxy_pass $endpoint$1;
        }

        location ~ ^/api/v1/namespaces/mynamespace/services/pushgatewaylb/proxy(/.*)$ {
          resolver 127.0.0.1 valid=30s;
          set $endpoint "http://pushgatewaylb.mynamespace.svc.skydns.local:9091";
          proxy_pass $endpoint$1;
        }

        location ~ ^/api/v1/namespaces/mynamespace/services/cratedb/proxy(/.*)$ {
          resolver 127.0.0.1 valid=30s;
          set $endpoint "http://cratedb.mynamespace.svc.skydns.local:4200";
          proxy_pass $endpoint$1;
          proxy_http_version 1.1;
          proxy_set_header Connection "upgrade";
        }

修正了cratedb型错误和Prometheus无限循环。

现在我在prometheus浏览器检查中出现了其他错误: GET =1541522597396 400 (坏请求),

因此,在配置中似乎还缺少一些东西(没有变量,它可以正常工作)。

对于Pushgateway,与上面解释的问题相同,它在/api/v1/namespaces/mynamespace/services/pushgatewaylb/proxy/static/jquery-2.1.4.min.js中应该是样式,但在jquery-2.1.4.min.js中看起来是这样的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 15:15:57

使用变量时,proxy_pass指令的行为会发生变化。基本上,如果指定URI,则需要指定完整的URI。详情请参见本文件

  • /变量中移除尾随的$endpoint
  • 要么使用rewrite...break语句转换URI,要么将位置转换为正则表达式并使用捕获

例如:

代码语言:javascript
复制
location ~ ^/api/v1/namespaces/mynamespace/services/prometheuslb/proxy(/.*)$ {
    resolver 127.0.0.1 valid=30s;
    set $endpoint "http://prometheuslb.mynamespace.svc.skydns.local:9090";
    proxy_pass $endpoint$1$is_args$args;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53173738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档