[英]Jenkins With Nginx Reverse Proxy And Resolver
我在Docker里面运行Jenkins,后面是一个Nginx反向代理。 现在我遇到了旋转变压器的问题。
当我用以下方法激活解析器时:
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;
}
}
根据您收到的错误消息,听起来您正在使用HTML页面代替JavaScript。
使用带变量的proxy_pass
范例,你告诉nginx它不应该进一步混淆值,例如,无论location
和URI如何,对后端的所有请求将始终与变量所说的一样(例如, ,在你的情况下具有相同的URI)。
最好的选择可能是使用$uri
, $is_args
和$args
,根据NGINX proxy_pass删除路径前缀并解析DNS :
- set $backend "http://jenkins:8080/";
- proxy_pass $backend;
+ proxy_pass http://jenkins:8080$uri$is_args$args;
另一个可能不太安全的选项是使用$uri_request
,它在某些有限的情况下与普通的$uri
略有不同,根据Nginx pass_proxy子目录而没有url解码 :
proxy_pass http://jenkins:8080$request_uri;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.