Web 代理背后的 Rundeck

Rundeck behind web proxy

我正在内部设置 Rundeck 以供自己测试。 我目前正在尝试访问插件的官方存储库,但我知道服务器没有互联网连接这一事实。

我在文档中找不到有关如何将 webproxy 应用于 rundeck 应用程序的说明。

以前有人做过吗?

编辑

服务器是 RHEL8 机器。 我不是指使用反向代理。

** 找到答案**

经过几天的搜索:

解决方案

  1. 编辑您的 /etc/sysconfig/rundeckd 文件

  2. 在文件末尾粘贴自定义 RDECK_JVM_SETTINGS

RDECK_JVM_SETTINGS="${RDECK_JVM_SETTINGS:- -Xmx1024m -Xms256m -XX:MaxMetaspaceSize=256m -server -Dhttp.proxySet=true -Dhttp.proxyHost=server -Dhttp.proxyPort=8080 -Dhttps.proxySet=true -Dhttps.proxyHost=server -Dhttps.proxyPort=80 -Dhttp.nonProxyHosts=*.place.com }"

您可以使用 Docker Compose 快速测试它。

想法是将 NGINX 容器放在 Rundeck 容器前面。

/your/path/docker-compose.yml内容:

version: "3.7"
services:
  rundeck:
    build:
      context: .
      args:
        IMAGE: ${RUNDECK_IMAGE:-rundeck/rundeck:3.3.10}
    container_name: rundeck-nginx
    ports:
    - 4440:4440
    environment:
      RUNDECK_GRAILS_URL: http://localhost
      RUNDECK_SERVER_FORWARDED: "true"
  nginx:
    image: nginx:alpine
    volumes:
      - ./config/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    ports:
    - 80:80

/your/path/Dockerfile内容:

ARG IMAGE
FROM ${IMAGE}

如果检查卷块,则需要在 /config 路径中​​进行特定的 NGINX 配置:

/your/path/config/nginx.conf内容:

server {
    listen 80 default_server;
    server_name rundeck-cl;

    location / {
        # get the rundeck internal address/port
        proxy_pass http://rundeck:4440;
     }
}

建造:

docker-compose build

至运行:

docker-compose up

查看您的 Rundeck 实例:

打开浏览器输入localhost,可以看到NGINX代理服务器后面的Rundeck

编辑:我在 CENTOS/RHEL

上留下了一个使用 NGINX 的例子

1- 通过 YUM 在 Rundeck 服务器上安装 Rundeck。

2- 通过 YUM 安装 NGINX,只需执行 sudo yum -y install nginx(如果你愿意,你可以在同一台 Rundeck 服务器或另一台服务器上执行此操作)。

3- NGINX 方面。转到 /etc/nginx/nginx.conf 并在 server 部分添加以下块:

        location /rundeck {
            proxy_pass http://your-rundeck-host:4440;
        }

保存文件。

4- RUNDECK 侧。 Create 在名为 rundeckd/etc/sysconfig 路径中创建一个新文件,其内容如下:

RDECK_JVM_OPTS="-Dserver.web.context=/rundeck"

授予 运行deck 用户权限:chown rundeck:rundeck /etc/sysconfig/rundeckd 并保存。

5- RUNDECK 侧。打开 /etc/rundeck/rundeck-config.properties 文件并检查 grails.serverURL 参数,您需要输入外部 IP 或服务器 DNS 名称以及在 NGINX 端配置中定义的正确上下文。

grails.serverURL=http://your-nginx-ip-or-dns-name/rundeck

保存。

6- NGINX 端。启动 NGINX 服务:systemctl start nginx(稍后如果你想在每次启动时启用,只需执行 systemctl enable nginx)。

7- RUNDECK 侧。启动 Rundeck 服务,systemctl start rundeckd(这需要几秒钟,稍后您可以使该服务在每次服务器启动时启动,只需执行:systemctl enable rundeckd)。

现在 运行deck 位于 NGINX 代理服务器后面,只需打开浏览器并输入:http://your-nginx-ip-or-dns-name/rundeck.

经过几天的搜索:

  • 如果您使用的服务器与互联网断开连接
  • 有一个内部代理来路由外部流量
  • 使用rundeck的RHEL包

解决方案

  1. 编辑您的 /etc/sysconfig/rundeckd 文件

  2. 在文件末尾粘贴自定义 RDECK_JVM_SETTINGS

    RDECK_JVM_SETTINGS="${RDECK_JVM_SETTINGS:- -Xmx1024m -Xms256m -XX:MaxMetaspaceSize=256m -server -Dhttp.proxySet=true -Dhttp.proxyHost=server - Dhttp.proxyPort=8080 -Dhttps.proxySet=true -Dhttps.proxyHost=服务器 -Dhttps.proxyPort=80 -Dhttp.nonProxyHosts=*.place.com }"

假设您的 rundeck 在 运行 内部服务器中,域名为“internal-rundeck.com:4440”,并且您想将其公开到“external-rundeck.com/rundeck”通过 nginx 域---按照以下步骤

第一步: 跑台

RUNDECK_GRAILS_URL="external-rundeck.com/rundeck"
RUNDECK_SERVER_CONTEXTPATH=/="/rundeck"
RUNDECK_SERVER_FORWARDED=true

在部署文件中设置以上配置为环境变量

第 2 步: 在 nginx 中

location /rundeck/ {

proxy_pass http://internal-rundeck.com:4440/rundeck/;

}

将它添加到你的 nginx 配置文件中它有效