Nginx 是否支持使用单个 Jenkins 实例转发多个端口?
Does Nginx support multiple ports forward with a single Jenkins instance?
我们在单个 CI 服务器中为 DEV/STG/PRD 提供了 3 个 Jenkins 实例。
它分别使用 3001、3002 和 3003 TCP 端口。例如,如果我想访问 STG Jenkins,我可以使用 URL "192.168.0.3:3002".
访问服务器
但是现在我们必须将 Jenkins 实例移动到 Nginx 服务器后面供远程用户使用,用户只能通过 Nginx 和端口号 443 访问 Jenkins。他们的防火墙的 TCP 443 端口只为出站流量打开。由于这个原因(Single Nginx instance of TCP 443),区分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>
我们在单个 CI 服务器中为 DEV/STG/PRD 提供了 3 个 Jenkins 实例。 它分别使用 3001、3002 和 3003 TCP 端口。例如,如果我想访问 STG Jenkins,我可以使用 URL "192.168.0.3:3002".
访问服务器但是现在我们必须将 Jenkins 实例移动到 Nginx 服务器后面供远程用户使用,用户只能通过 Nginx 和端口号 443 访问 Jenkins。他们的防火墙的 TCP 443 端口只为出站流量打开。由于这个原因(Single Nginx instance of TCP 443),区分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>