我想在自定义端口上运行服务(例如 8080 上的 jenkins),并且我更喜欢通过浏览器用我能记住的名称来访问它,http://localhost:jenkins
例如http://localhost:8080
- 这种事可能吗?
- 如果是这样,它会仅仅是 HTTP 的事情吗,或者所有网络协议都知道这个别名?
- 此外,如果 (1) 为真,那么其他操作系统(centos、windows 等)是否支持此功能?
编辑:
- 从我输入地址到地址解析的那一刻,移动的部分是什么?我猜是浏览器解析器,因此可能有一个浏览器支持我的请求。之后,解析后的 URL 可能会传递给 OS 进程,该进程反过来也可以实现我的请求并接受 str 而不是 int... 这些部分中的任何一个是否可以配置以满足我的需求?
答案1
这可以通过“反向代理”来解决 - 因此对这个领域进行一些研究。
它无法满足您的实际要求(为端口号设置别名),但它可以为您提供另一种为每项服务创建简单路径的方法(通过将 DNS 记录转发到特定的 IP 和端口)。
基本上,你能使用反向代理可以做的是:
- 确保所有网站都提供 SSL 证书,并且(如果您选择)
HTTPS
在这种情况下强制执行 - 映射
http://localhost:8080
到https://jenkins.local
(端口转发) - 地图
http://localhost/jenkins
指向https://jenkins.local
(前进位置)
以上适用于内部和外部 DNS 解析
我个人使用Nginx 代理管理器, 但特拉菲克也是一个受欢迎的选择。
为了了解要设置什么,Nginx 代理管理器如下所示:
答案2
来自 rfc 1738 https://datatracker.ietf.org/doc/html/rfc1738#section-3.1
url 中的端口是一个数字
port The port number to connect to. Most schemes designate protocols that have a default port number. Another port number may optionally be supplied, in decimal, separated from the host by a colon. If the port is omitted, the colon is as well.
答案3
可以使用 Nginx、Apache、squid、lighthttpd 等解决方案。请注意,这些解决方案会将您的端口映射到您提供的任何名称,但它将独立于内部本地主机。您可以在基于 Linux 和 Windows 的系统中使用此软件。
这是一个 Apache 示例。
Listen IP_ADDR:80
NameVirtualHost IP_ADDR:80
<VirtualHost IP_ADDR:80>
ServerName yourname.yourdomain
ProxyPass / http://localhost:10000/
ProxyPassReverse / http://localhost:10000/
</VirtualHost>
另一种解决方案是,如果您希望服务器易于记忆,则通过在不同的服务器上运行 Jenkins 并将其映射到 (基本上就是将其添加到文件中) 来为 Jenkins 提供不同的 IP /etc/hosts
。192.168.1.1 Jenkins
完成此操作后,假设您的 Jenkins 正在运行,192.168.1.1:3000
您可以通过 访问它http://jenkins:3000
。
即使你这样做,所有的网络协议也无法工作,你将无法使用 访问 Jenkins https://jenkins:3000
。
希望这可以帮助!!