nginx - Nginx 是否支持单个 Jenkins 实例的多个端口转发?

标签 nginx jenkins forward

我们在单个 CI 服务器中拥有 3 个用于 DEV/STG/PRD 的 Jenkins 实例。 它分别使用 3001、3002 和 3003 TCP 端口。例如,如果我想访问STG Jenkins,我可以使用URL“192.168.0.3:3002”访问服务器。

但是现在我们必须将 Jenkins 实例移至 Nginx 服务器后面以供远程用户使用,用户只能通过 Nginx 和端口号 443 访问 Jenkins。仅防火墙的 TCP 443 端口开放用于出站流量。由于这个原因(TCP 443的单个Nginx实例),区分DEV/STG/PRD的唯一方法是使用不同的URI。

例如:

  • “192.168.0.3:3001”-->“192.168.0.3:443/dev”
  • “192.168.0.3:3002”-->“192.168.0.3:443/stg”
  • 等等。

下面是我期望的端口转发的示例 NginX 配置。

server (
listen 443;
server_name localhost;
location /dev (
proxy_pass http://localhost:3001;
)
location /stg (
proxy_pass http://localhost:3002;
)
location /prd (
proxy_pass http://localhost:3003;
)
)

这可能吗? Nginx是否支持单实例多端口转发?

最佳答案

是的,Nginx 支持多个上游,您需要做的唯一更改是自定义 Jira 服务器 XML 配置路径:

查看下面的完整配置:https://gist.github.com/mikhailov/8562320

    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Context path="/jira" docBase="${catalina.home}/atlassian-jira" reloadable="false" useHttpOnly="true">
          <Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction"
            factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60"/>
          <Manager pathname=""/>
        </Context>
      </Host>
    ....
    </Engine>

关于nginx - Nginx 是否支持单个 Jenkins 实例的多个端口转发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31322229/

相关文章:

nginx - 客户端在 Nginx 中发送了无效的 header 行

ruby-on-rails - 使用 SSL 的 Nginx 后面的 Rails 5 中的 InvalidAuthenticityToken

jenkins - 从jenkins插件以编程方式触发jenkins hudson.model.Job

c++ - 右值引用和文字

django - 使用 Daphne 和 Nginx 部署 django channel 时遇到问题

ssl - 强制 nginx 验证上游证书

php - $this->forward 丢失了用户的请求路由?

c++ - std::forward 在参数传递中的用法是什么?

msbuild - UnitTestFramework 引用无法解析

jenkins - 从 Jenkins 工作流(管道)插件获取登录 Jenkins 的用户名