Proxy Nginx背后的Rundeck反向代理

Proxy Nginx背后的Rundeck反向代理,proxy,reverse,rundeck,Proxy,Reverse,Rundeck,我已经为Nginx后面的Rundeck配置了反向代理。下面是位于路径/etc/nginx/sites enabled中的Rundeck.conf ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_session_cache shared:SSL:1m; ssl_prefer_server_ciphers on; ## server config

我已经为Nginx后面的Rundeck配置了反向代理。下面是位于路径/etc/nginx/sites enabled中的Rundeck.conf

ssl_certificate      /etc/nginx/ssl/server.crt;
ssl_certificate_key  /etc/nginx/ssl/server.key;
ssl_session_cache shared:SSL:1m;
ssl_prefer_server_ciphers   on;
## server configuration
server {
    listen 443 ssl;
    listen 80 ;
    server_name ~(?<repo>.+)\.pilot1 pilot1;
    if ($http_x_forwarded_proto = '') {
        set $http_x_forwarded_proto  $scheme;
    }
    ## Application specific logs
    ## access_log /var/log/nginx/pilot1.ci1.peapod.com-access.log timing;
    ## error_log /var/log/nginx/pilot1.ci1.peapod.com-error.log;
# rewrite ^/$ /rundeck/menu/home redirect;
   rewrite ^/rundeck/?(/rundeck)?$ /rundeck/menu/home redirect;
   chunked_transfer_encoding on;
    client_max_body_size 0;

location ^~ /rundeck/ {
        proxy_pass          http://localhost:4440;
        proxy_read_timeout  900;
}
}
ssl\u证书/etc/nginx/ssl/server.crt;
ssl\u certificate\u key/etc/nginx/ssl/server.key;
ssl_会话_缓存共享:ssl:1m;
ssl首选服务器上的密码;
##服务器配置
服务器{
听443ssl;
听80;
服务器名称~(?。+)\.pilot1 pilot1;
如果($http_x_forwarded_proto=''){
设置$http\u x\u转发的\u协议$scheme;
}
##特定于应用程序的日志
##access_log/var/log/nginx/pilot1.ci1.peapod.com-access.log定时;
##error_log/var/log/nginx/pilot1.ci1.peapod.com-error.log;
#重写^/$/rundeck/menu/home重定向;
重写^/rundeck/?(/rundeck)?$/rundeck/menu/home重定向;
分块传输编码;
客户端\最大\主体\大小0;
位置^~/跑道甲板/{
代理通行证http://localhost:4440;
代理读取超时900;
}
}
当我浏览并登录到Rundeck时,反向代理可以正常工作。但是当我单击注销时,重定向到登录页面会显示端口:4440 如下 登录-->pilot1/rundeck重定向到pilot1/rundeck/menu/home(正常工作) 注销-->pilot1:4440/rundeck/user/loggedout


我不希望端口暴露在外。如何解决此问题?

以下是我必须做的:

在NGINX配置中,在适当的“服务器”部分下设置一个位置:

  location /rundeck/ {
    proxy_pass http://localhost:4440;
    proxy_set_header X-Forwarded-Host $host:$server_port;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
Rundeck配置:

sed -i "/^grails.serverURL/c grails.serverURL = ${RUNDECK_URL}" /etc/rundeck/rundeck-config.properties
sed -i "/^framework.server.url/c framework.server.url = ${RUNDECK_URL}" /etc/rundeck/framework.properties
sed -i '/^RDECK_JVM="$RDECK_JVM/ s/"$/ -Dserver.web.context=\/rundeck"/' /etc/rundeck/profile

其中
RUNDECK\u URL
应该指向您的NGINX ip(dns名称),那么

您是否将framework.RUNDECK.URL和grails.serverURL设置为使用https?检查
/etc/rundeck/framework.properties
中的
framework.rundeck.url
,以及
/etc/rundeck/rundeck-config.properties
中的
grails.serverURL
。只需了解一些细节:1]似乎“server.web.context”参数不再存在(rundeck 3.2.8),新参数是“server.contextPath”。2] 您不应该更改/etc/rundeck/profile,因为它可以在rundeck升级时被覆盖。正如文档所建议的,您应该使用/etc/default/rundeckd(on-DEB install)和以下内容:
RDECK\u JVM\u OPTS=“-Dserver.contextPath=/rundeck”
文档:其中一部分不应作为
/etc/rundeck/profile
,可以在升级时更新。保存到
/etc/defaults/rundeckd