jenkins - 使用公共 IP 转发端口后出现 HTTP ERROR: 404 for Jenkins
问题描述
我在办公室设置的 linux 机器上的 8081 端口上本地运行 Jenkins。我有一个公共 IP,我试图用它来让 Jenkins 公开可用。我已经在 Manage Jenkins -> Configure System -> Jenkins URL 中输入了带有端口的公共 IP,例如:http://182.156.xxx.xx:8081/
现在,如果我指向http://182.156.xxx.xx:8081/
,它会给我 HTTP 404 错误(附截图)。
注意:我已经在 Ubuntu 中使用以下命令设置了 Jenkins:
- wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key 添加 -
- sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ >
/etc/apt/sources.list.d/jenkins.list' - sudo apt-get 更新
- sudo apt-get install jenkins
等/默认/詹金斯文件:
# defaults for Jenkins automation server
# pulled in from the init script; makes things easier.
NAME=jenkins
# arguments to pass to java
# Allow graphs etc. to work even when an X server is present
JAVA_ARGS="-Djava.awt.headless=true"
#JAVA_ARGS="-Xmx256m"
# make jenkins listen on IPv4 address
#JAVA_ARGS="-Djava.net.preferIPv4Stack=true"
PIDFILE=/var/run/$NAME/$NAME.pid
# user and group to be invoked as (default to jenkins)
JENKINS_USER=$NAME
JENKINS_GROUP=$NAME
# location of the jenkins war file
JENKINS_WAR=/usr/share/$NAME/$NAME.war
# jenkins home location
JENKINS_HOME=/var/lib/$NAME
# set this to false if you don't want Jenkins to run by itself
# in this set up, you are expected to provide a servlet container
# to host jenkins.
RUN_STANDALONE=true
# log location. this may be a syslog facility.priority
JENKINS_LOG=/var/log/$NAME/$NAME.log
#JENKINS_LOG=daemon.info
# Whether to enable web access logging or not.
# Set to "yes" to enable logging to /var/log/$NAME/access_log
JENKINS_ENABLE_ACCESS_LOG="no"
# OS LIMITS SETUP
# comment this out to observe /etc/security/limits.conf
# this is on by default because http://github.com/jenkinsci/jenkins/commit/2fb288474e980d0e7ff9c4a3b768874835a3e92e
# reported that Ubuntu's PAM configuration doesn't include pam_limits.so, and as a result the # of file
# descriptors are forced to 1024 regardless of /etc/security/limits.conf
MAXOPENFILES=8192
# set the umask to control permission bits of files that Jenkins creates.
# 027 makes files read-only for group and inaccessible for others, which some security sensitive users
# might consider benefitial, especially if Jenkins runs in a box that's used for multiple purposes.
# Beware that 027 permission would interfere with sudo scripts that run on the master (JENKINS-25065.)
#
# Note also that the particularly sensitive part of $JENKINS_HOME (such as credentials) are always
# written without 'others' access. So the umask values only affect job configuration, build records,
# that sort of things.
#
# If commented out, the value from the OS is inherited, which is normally 022 (as of Ubuntu 12.04,
# by default umask comes from pam_umask(8) and /etc/login.defs
# UMASK=027
# port for HTTP connector (default 8080; disable with -1)
HTTP_PORT=8081
# servlet context, important if you want to use apache proxying
PREFIX=/$NAME
# arguments to pass to jenkins.
# --javahome=$JAVA_HOME
# --httpListenAddress=$HTTP_HOST (default 0.0.0.0)
# --httpPort=$HTTP_PORT (default 8080; disable with -1)
# --httpsPort=$HTTP_PORT
# --argumentsRealm.passwd.$ADMIN_USER=[password]
# --argumentsRealm.roles.$ADMIN_USER=admin
# --webroot=~/.jenkins/war
# --prefix=$PREFIX
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT"
在这个 jenkins 文件中,我只将 HTTP 端口从 8080 更改为 8081。与端口 8080 一样,jenkins 已经使用相同的公共 IP 运行。
Jenkins 版本:2.289.2 Java 版本:8 Ubuntu 版本:20.04
解决方案
推荐阅读
- c++ - 使用 NVCC 编译/链接时,预处理指令 #\ 无效
- javascript - 在引用组件时在 vue 中制作 onClick="" 属性
- html - 如何让我的图像跨越多列?
- volttron - 如何在 volttron 中使用 gevent 和请求进行并发 jsonrpc
- drupal - 将补丁应用于 webform 模块返回错误
- regex - 如何使用 GAS 中的正则表达式将匹配限制在电子邮件正文的前 5 行
- android - 为什么“queueInputBuffer”中的“MediaCodec CodecException”只发生在 Android API 29 上?
- sqlalchemy - Airflow DAG 抛出通过 Web 控制台触发的 RecursionError
- javascript - 平台中的语法错误
- c# - 复制图像并覆盖现有图像的问题 c# wpf