无法向外部公开 Jenkins

无法向外部公开 Jenkins

我在 Windows 上托管 jenkins(历史原因)刚刚从1.6202.62

一切都按预期运行,除了一些小细节,我无法再访问它。只有从主机访问它才有效。

我发现了很多关于它的帖子,他们都建议将启动参数更改为:

--httpListenAddress=0.0.0.0

或者

--httpListenAddress=HOST

我尝试了两种解决方案,结果相同。当通过以下方式从主机访问时,Jenkins 可以正常工作:

  • 127.0.0.1
  • 10.0.1.11(内部 IP)
  • xxxx(外部 IP)
  • 主持人

但从任何其他机器访问时不起作用。

我检查了防火墙和 Azure 设置。其他服务 (nexus:8081) 可以按预期访问。将端口更改为 8080 也无济于事。

那是jenkins.xml

<service>
  <id>jenkins</id>
  <name>Jenkins</name>
  <description>This service runs Jenkins continuous integration system.            
</description>
  <env name="JENKINS_HOME" value="%BASE%"/>
  <env name="HTTP_HOST" value="HOST.cloudapp.net"/>
  <executable>%JAVA_HOME%\jre\bin\java</executable>
  <arguments>-Xrs -Xmx512M -Dfile.encoding=UTF8 -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=80 --httpListenAddress="%HTTP_HOST%" --webroot="%BASE%\war"</arguments>
  <logmode>rotate</logmode>
  <onfailure action="restart" />
</service>

这是詹金斯日志

INFO: Started w.@1750fbeb{/,file:///E:/Program%20Files%20(x86)/Jenkins/war/,AVAILABLE}{E:\Program Files (x86)\Jenkins\war}
May 25, 2017 2:17:51 AM org.eclipse.jetty.server.AbstractConnector doStart
INFO: Started ServerConnector@7ae0a9ec{HTTP/1.1,[http/1.1]}{HOST.cloudapp.net:80}
May 25, 2017 2:17:51 AM org.eclipse.jetty.server.Server doStart
INFO: Started @4534ms
May 25, 2017 2:17:51 AM winstone.Logger logInternal
INFO: Winstone Servlet Engine v4.0 running: controlPort=disabled
May 25, 2017 2:17:54 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started initialization
May 25, 2017 2:17:55 AM jenkins.InitReactorRunner$1 onAttained
INFO: Listed all plugins
(removed few lines about ruby failing)
INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb:36
May 25, 2017 2:18:04 AM jenkins.InitReactorRunner$1 onTaskFailed
SEVERE: Failed Loading plugin ruby-runtime v0.12 (ruby-runtime)
May 25, 2017 2:18:40 AM hudson.WebAppMain$3 run
INFO: Jenkins is fully up and running

日志什么时候httpListenAddress发生0.0.0.0

INFO: Started ServerConnector@7ae0a9ec{HTTP/1.1,[http/1.1]}{0.0.0.0:80}

答案1

事实证明,这个问题与詹金斯无关。因此,我向所有试图回答的人表示歉意。(正确的设置是使用默认值httpListenAddress或将其设置为--httpListenAddress=0.0.0.0

这是 Windows 防火墙。对于老版的 jenkis -1.620防火墙有规则Java 6和端口 80。新詹金斯正在使用Java 8被阻止了。

更改防火墙规则解决了该问题。

答案2

对于任何尝试使用 PowerShell 脚本在 Windows 上安装 Jenkins 的人来说,以下是如何告诉防火墙打开端口:

New-NetFirewallRule -Name jenkins -DisplayName 'Jenkins' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 8080

相关内容