odi*_*die 6 tomcat nginx reverse-proxy hudson jenkins
我现在正在尝试将 nginx 设置为 Hudson 的反向代理,以便它可以访问
http://build.example.com直接地。我已经在 Tomcat 上安装了 Hudson 并验证我可以访问 Hudson
http://127.0.0.1:8080/hudson
在http://build.example.com/hudson上访问可以访问 hudson 的地方非常简单。但是当我尝试设置代理以重新映射 /hudson 目录时,事情开始出错。没有加载任何 css 或图像文件。
快速查看 nginx 访问日志告诉我,对 /hudson 或 /hudson/static 中的资源发出了大量请求。这些请求没有被正确地转发(或重写)到 Tomcat。但是在挖掘了几个小时之后,我不知道如何解决这个简单的问题。
我正在使用的 nginx 设置看起来像
server {
listen 80;
server_name build.example.com;
location / {
proxy_pass http://127.0.0.1:8080/hudson;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以对此有所了解吗?设置非常简单,但我似乎无法在网上的任何地方找到解决方案。
更新
我衷心感谢所有花时间回答这个问题的人。在尝试了各种解决方案之后,我认为处理这个特定问题的最直接的方法是……
A)不要管它正如@VonC 建议的那样,让它留在子目录中。这是直截了当的,我们可以确定不会有任何问题。或者...
B)将应用程序部署到 tomcat webapp 目录的 ROOT如果您想通过 tomcat 安装托管多个webapp,这可能不是最好的处理方式。但是管理员可能想要设置一个单独的 tomcat 安装来运行 Hudson/Jenkins。Tomcat 无法以不同的用户身份运行不同的托管应用程序,并且任何为 CI 设置 Hudson/Jenkins 的人都可能希望以特定用户身份运行它(例如“构建”)。在这种情况下,在 ROOT 中部署最有意义,它可以非常简单地映射到 build.example.com。
这是我的 nginx 配置文件,即使我通过 https(端口 443)访问 Hudson:
反向代理(Apache 或 Nginx)的技巧是始终保持相同的路径:
如果您想重定向到a_long_and_complex_address/hudson
,请保留 /hudson 部分:myserver/hudson
。
不要尝试重定向myserver
到a_long_and_complex_address/hudson
:带有绝对路径('')的各种脚本和图片/
都会损坏。
重定向myserver/hudson
到a_long_and_complex_address/hudson
.
另外,您也可以重定向myserver/other_services
到;)a_long_and_complex_address/other_services
worker_processes 1;
error_log logs/error.log debug;
pid logs/nginx.pid;
events {
worker_connections 250;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 150;
#gzip on;
port_in_redirect on;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
server {
listen 443;
server_name (some alias);
# default max client body size was 1m! => Error code is 413
# here: max 10Go
client_max_body_size 10000m;
ssl on;
ssl_certificate /home/xxx/.ssl/my.crt;
ssl_certificate_key /home/xxx/.ssl/my.key;
ssl_session_timeout 5m;
#ssl_protocols SSLv2 SSLv3 TLSv1; # NO: SSLv2 prohibited
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
rewrite ^/hudson$ https://myserver/hudson/ redirect;
location /hudson/ {
proxy_pass https://complex_address:8xx3/hudson/;
}
}
}
Run Code Online (Sandbox Code Playgroud)