Nginx是否支持使用单个Jenkins实例转发多个端口?

时间:2015-07-09 15:41:26

标签: nginx jenkins forward

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

但是现在我们必须将Jenkins实例移动到远程用户的Nginx Server之后,用户只能通过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是否支持使用单个实例转发多个端口?

1 个答案:

答案 0 :(得分:1)

是的,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>