【问题标题】:Jenkins With Nginx Reverse Proxy And ResolverJenkins 与 Nginx 反向代理和解析器
【发布时间】:2017-07-17 02:19:15
【问题描述】:

我在 Nginx 反向代理后面的 Docker 中运行 Jenkins。现在我遇到了解析器的问题。

当我激活解析器时:

set $backend "http://jenkins:8080/";
proxy_pass $backend;

所有的 javascript 文件都会出现以下错误:

Refused to execute script from 'http://localhost/static/....js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

当我只是在没有解析器的情况下代理传递:

proxy_pass http://jenkins:8080/;

它可以工作,但没有解析器。解析器是强制性的,否则当主机 jenkins 更改其 Ip(Docker DNS 服务器)时,设置将无法正常工作。

我的配置:

resolver 127.0.0.11  ipv6=off valid=30s;
client_max_body_size  100m;
keepalive_timeout     65;
types_hash_max_size   2048;

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    location / {
        set $backend "http://jenkins:8080/";
        proxy_pass $backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

【问题讨论】:

  • 好问题! :-)
  • 感谢您的支持、接受、奖励;顺便说一句,对于未来,您可能希望继续使用手动“奖励”部分,因为问题从特色选项卡中消失了,因此其他人将无法记录和投票。

标签: nginx jenkins docker proxy


【解决方案1】:

根据您收到的错误消息,听起来您正在获取 HTML 页面来代替 JavaScript。

使用带有变量的proxy_pass 范例,您是在告诉 nginx 它不应再与该值混淆,例如,无论location 和 URI 是什么,对您后端的所有请求都将始终是正如变量所说(例如,在您的情况下使用相同的 URI)。


最佳选择可能是使用$uri$is_args$args,根据NGINX proxy_pass remove path prefix & resolve DNS

-        set $backend "http://jenkins:8080/";
-        proxy_pass $backend;
+        proxy_pass http://jenkins:8080$uri$is_args$args;

另一个可能不太安全的选项是使用$uri_request,在某些有限的情况下,它的含义与普通的$uri略有不同,根据Nginx pass_proxy subdirectory without url decoding

proxy_pass http://jenkins:8080$request_uri;

【讨论】:

  • 为什么不proxy_pass $backend$uri$is_args$args;
  • @maybeg,任何一种变体都可以工作;但是,如果您在单个上下文中使用该变量,则没有它,代码可能看起来更清晰、更易于理解(否则,有人可能会认为您的变量具有特殊含义)。另外,请考虑定义上游“变量”的正确方法是使用 upstream 指令,尽管在该上下文中 server resolve 部分是非 OSS 功能,因此对您不起作用,除非你有订阅。
猜你喜欢
  • 2020-07-11
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多