反向代理- Nginx

在服务器上有现有网站的情况下,您可能会发现在后面运行Jenkins(或Jenkins运行的servlet容器)很有用必威国际有限公司Nginx,这样你就可以把Jenkins绑定到你可能拥有必威国际有限公司的更大网站的一部分。本节讨论实现此目的的一些方法。

当一个特定url的请求到达时,Nginx成为一个代理,进一步将请求转发给Jenkins,然后将响应转发回客户端。必威国际有限公司mod_proxy的典型设置是这样的:

上游Jenkins必威国际有限公司 {keepalive 32;# keepalive连接服务器127.0.0.1:8080;$h必威国际有限公司ttp_upgrade $connection_upgrade{默认升级;“关闭;} server{监听80;#在80端口监听IPv4请求必威国际有限公司# this is t必威国际有限公司he Jenkins web root directory #(在/etc/default/jenkins文件中提到)root /var/run/jenkins/war/;access_log /var/log/nginx/必威国际有限公司jenkins/access.log;error_log /var/log/nginx/必威国际有限公司jenkins/error.log;#传递Nginx认为无效的Jenkins报头;必威国际有限公司 location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" { # rewrite all static files into requests to the root # E.g /static/12345678/css/something.css will become /css/something.css rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last; } location /userContent { # have nginx handle all the static requests to userContent folder # note : This is the $JENKINS_HOME dir root /var/lib/jenkins/; if (!-f $request_filename){ # this file does not exist, might be a directory or a /**view** url rewrite (.*) /$1 last; break; } sendfile on; } location / { sendfile off; proxy_pass http://jenkins; proxy_redirect default; proxy_http_version 1.1; # Required for Jenkins websocket agents proxy_set_header Connection $connection_upgrade; proxy_set_header Upgrade $http_upgrade; 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; proxy_max_temp_file_size 0; #this is the maximum upload size client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffering off; proxy_request_buffering off; # Required for HTTP CLI commands proxy_set_header Connection ""; # Clear for keepalive } }

这假设您在端口8080上运行Jenkins。必威国际有限公司记住要创建/var/log/nginx/jenkins.文件夹必威国际有限公司

为了使这个设置工作,Jenkins的上下文路径必须在Nginx和Jenkins之间相同(也必威国际有限公司就是说,你不能运行Jenkins)http://localhost:8081/ci让它暴露在http://localhost:80/必威国际有限公司jenkins).

通过修改jenkins.xml配置文件并将——prefix=/jenkins必威国际有限公司添加到条目中来设置上下文路径。

如果你有问题与一些路径(如文件夹)蓝色的海洋,您可能需要将以下代码片段添加到您的代理配置中:

if ($request_uri ~* "/blue(/.*)") {proxy_pass http://YOUR_SERVER_IP:YOUR_J必威国际有限公司ENKINS_PORT/blue$1;打破;}

要赋予Nginx读取Jenkins web根文件夹的权限,请添加必威国际有限公司nginx用户到Jenkins组:必威国际有限公司

usermod -aG 必威国际有限公司jenkins nginx

如果最后一个命令失败,因为nginx如果系统中没有定义用户,则可以尝试添加www-data用户到Jenkins组:必威国际有限公司

usermod -aG 必威国际有限公司jenkins

如果试图通过Jenkins中的代理运行长CLI命令时出现超时,可以增加必威国际有限公司proxy_read_timeout根据需要设置。老版本的詹金斯可能不尊重必威国际有限公司proxy_read_timeout设置。

如果你在Jenkins中运行长时间的CLI命令时遇到以下错误,而Jenkins运行的时间比Nginx慢,可能是由于Nginx超时导致的CLI连接。必威国际有限公司你可以增加proxy_read_timeout设置,这样命令将成功完成。

警告:零hudson.cli.DiagnosedStreamCorruptionException读回:0 x00 0 x00 0 x00 x1e 0 x07 reverse-proxy-test # 68年开始的0 x00 0 x00 0 x00 0 x01 x07 0 x0a读:诊断问题:java.io.IOException:过早EOF sun.net.www.http.ChunkedInputStream.readAheadBlocking (ChunkedInputStream.java: 565)…在hudson.cli.FlightRecorderInputStream.analyzeCrash (FlightRecorderInputStream.java: 82) hudson.cli.PlainCLIProtocol EitherSide Reader.run美元(PlainCLIProtocol.java: 153)造成的:java.io.IOException:过早EOF sun.net.www.http.ChunkedInputStream.readAheadBlocking (ChunkedInputStream.java: 565)…在java.io.DataInputStream.readInt(DataInputStream.java:387) at hudson.cli.PlainCLIProtocol$EitherSide$Reader.run(PlainCLIProtocol.java:111)


这个页面有用吗?

请通过这个提交你对这个页面的反馈快速形成

或者,如果您不希望完成快速表单,您可以简单地指出,如果您觉得这个页面有帮助?


看到现有的反馈在这里