Rundeck 背后和 SSL 代理
Rundeck behind and SSL Proxy
我目前正在尝试设置一个带有 Rundeck 运行ning 和 nginx 反向 ssl 代理的环境。我在网上找到了针对这种情况的不同教程,但其中 none 对我有用。我在 linux 环境中工作,运行deck 和 nginx 运行 都在其中。我的 运行deck 的 nginx 配置文件看起来像这样:
server {
access_log /var/log/nginx/rundeck.access.log main;
listen 443;
listen [::]:443;
ssl on;
ssl_certificate /etc/nginx/conf.d/cert.crt;
ssl_certificate_key /etc/nginx/conf.d/key.rsa;
location / {
proxy_pass http://localhost:4440/;
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-Ssl on;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
此外,我在 运行deck 中配置了这些参数:
framework.server.url = https://localhost:4440
和 grails.serverURL=https://lde71d6p.de.top.com:443
我尝试了 https 或仅 http 的不同组合,不带端口和带端口。 None 个正常工作。
使用当前配置,我得到以下错误情况。
如果我尝试调用 http://hostname.top.com -> Connection Error(看起来没问题,因为 nginx 不处理端口 80)
https://hostname.top.com -> gets a 302 and is redirected to http://hostname.top.com/user/login;jsessionid=xxxxxxx 然后出现连接错误。
https://hostname.top.com/user/login 让我直接进入 运行deck 的登录界面。一切顺利。
任何人都可以帮我解决我首先提到的错误情况吗?
亲切的问候,
最大
要运行 Rundeck behind SSL proxy,需要进行以下三项设置:
https://github.com/rundeck/rundeck/wiki/FAQ#can-i-do-ssl-offloading
- 将 RunDeck 设置为 http
- 在配置文件中,将选项 -Drundeck.jetty.connector.forwarded=true 添加到 RDECK_JVM
- 设置 framework.rundeck.url 和 grails.serverURL 使用 https
在你的情况下,配置文件设置似乎还没有完成。
配置文件位于 /etc/rundeck/profile
。 (可能取决于分布)
将选项 -Drundeck.jetty.connector.forwarded=true
添加到 RDECK_JVM
如下:
RDECK_JVM="-Djava.security.auth.login.config=$JAAS_CONF \
-Dloginmodule.name=$LOGIN_MODULE \
-Drdeck.config=$RDECK_CONFIG \
-Drundeck.server.configDir=$RDECK_SERVER_CONFIG \
-Dserver.datastore.path=$RDECK_SERVER_DATA/rundeck \
-Drundeck.server.serverDir=$RDECK_INSTALL \
-Drdeck.projects=$RDECK_PROJECTS \
-Drdeck.runlogs=$RUNDECK_LOGDIR \
-Drundeck.config.location=$RDECK_CONFIG/rundeck-config.properties \
-Djava.io.tmpdir=$RUNDECK_TEMPDIR \
-Drundeck.server.workDir=$RUNDECK_WORKDIR \
-Dserver.http.port=$RDECK_HTTP_PORT \
-Drundeck.jetty.connector.forwarded=true"
错误背后的原因
错误-1:
listen 443
您的服务器未侦听端口 80,要修复它,请在您的配置中添加 listen 80;
。
错误 2:location / {
proxy_pass http://localhost:4440/;
将请求重定向到 4440,得到错误代码 302
.
错误 3 和 4:错误的代理配置。
请使用以下配置来解决您的问题。
server {
listen 80;
server_name <hostname>;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect http://localhost:4440/ /;
proxy_pass http://localhost:4440/;
}
}
我目前正在尝试设置一个带有 Rundeck 运行ning 和 nginx 反向 ssl 代理的环境。我在网上找到了针对这种情况的不同教程,但其中 none 对我有用。我在 linux 环境中工作,运行deck 和 nginx 运行 都在其中。我的 运行deck 的 nginx 配置文件看起来像这样:
server {
access_log /var/log/nginx/rundeck.access.log main;
listen 443;
listen [::]:443;
ssl on;
ssl_certificate /etc/nginx/conf.d/cert.crt;
ssl_certificate_key /etc/nginx/conf.d/key.rsa;
location / {
proxy_pass http://localhost:4440/;
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-Ssl on;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
此外,我在 运行deck 中配置了这些参数:
framework.server.url = https://localhost:4440
和 grails.serverURL=https://lde71d6p.de.top.com:443
我尝试了 https 或仅 http 的不同组合,不带端口和带端口。 None 个正常工作。
使用当前配置,我得到以下错误情况。 如果我尝试调用 http://hostname.top.com -> Connection Error(看起来没问题,因为 nginx 不处理端口 80) https://hostname.top.com -> gets a 302 and is redirected to http://hostname.top.com/user/login;jsessionid=xxxxxxx 然后出现连接错误。 https://hostname.top.com/user/login 让我直接进入 运行deck 的登录界面。一切顺利。
任何人都可以帮我解决我首先提到的错误情况吗?
亲切的问候,
最大
要运行 Rundeck behind SSL proxy,需要进行以下三项设置:
https://github.com/rundeck/rundeck/wiki/FAQ#can-i-do-ssl-offloading
- 将 RunDeck 设置为 http
- 在配置文件中,将选项 -Drundeck.jetty.connector.forwarded=true 添加到 RDECK_JVM
- 设置 framework.rundeck.url 和 grails.serverURL 使用 https
在你的情况下,配置文件设置似乎还没有完成。
配置文件位于 /etc/rundeck/profile
。 (可能取决于分布)
将选项 -Drundeck.jetty.connector.forwarded=true
添加到 RDECK_JVM
如下:
RDECK_JVM="-Djava.security.auth.login.config=$JAAS_CONF \
-Dloginmodule.name=$LOGIN_MODULE \
-Drdeck.config=$RDECK_CONFIG \
-Drundeck.server.configDir=$RDECK_SERVER_CONFIG \
-Dserver.datastore.path=$RDECK_SERVER_DATA/rundeck \
-Drundeck.server.serverDir=$RDECK_INSTALL \
-Drdeck.projects=$RDECK_PROJECTS \
-Drdeck.runlogs=$RUNDECK_LOGDIR \
-Drundeck.config.location=$RDECK_CONFIG/rundeck-config.properties \
-Djava.io.tmpdir=$RUNDECK_TEMPDIR \
-Drundeck.server.workDir=$RUNDECK_WORKDIR \
-Dserver.http.port=$RDECK_HTTP_PORT \
-Drundeck.jetty.connector.forwarded=true"
错误背后的原因
错误-1:
listen 443
您的服务器未侦听端口 80,要修复它,请在您的配置中添加 listen 80;
。
错误 2:location / {
proxy_pass http://localhost:4440/;
将请求重定向到 4440,得到错误代码 302
.
错误 3 和 4:错误的代理配置。
请使用以下配置来解决您的问题。
server {
listen 80;
server_name <hostname>;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect http://localhost:4440/ /;
proxy_pass http://localhost:4440/;
}
}