是否可以为端口号指定别名?

是否可以为端口号指定别名?

我想在自定义端口上运行服务(例如 8080 上的 jenkins),并且我更喜欢通过浏览器用我能记住的名称来访问它,http://localhost:jenkins例如http://localhost:8080

  1. 这种事可能吗?
  2. 如果是这样,它会仅仅是 HTTP 的事情吗,或者所有网络协议都知道这个别名?
  3. 此外,如果 (1) 为真,那么其他操作系统(centos、windows 等)是否支持此功能?

编辑:

  1. 从我输入地址到地址解析的那一刻,移动的部分是什么?我猜是浏览器解析器,因此可能有一个浏览器支持我的请求。之后,解析后的 URL 可能会传递给 OS 进程,该进程反过来也可以实现我的请求并接受 str 而不是 int... 这些部分中的任何一个是否可以配置以满足我的需求?

答案1

这可以通过“反向代理”来解决 - 因此对这个领域进行一些研究。

它无法满足您的实际要求(为端口号设置别名),但它可以为您提供另一种为每项服务创建简单路径的方法(通过将 DNS 记录转发到特定的 IP 和端口)。

基本上,你使用反向代理可以做的是:

  • 确保所有网站都提供 SSL 证书,并且(如果您选择)HTTPS在这种情况下强制执行
  • 映射http://localhost:8080https://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/hosts192.168.1.1 Jenkins完成此操作后,假设您的 Jenkins 正在运行,192.168.1.1:3000您可以通过 访问它http://jenkins:3000

即使你这样做,所有的网络协议也无法工作,你将无法使用 访问 Jenkins https://jenkins:3000

希望这可以帮助!!

答案4

可能最简单的解决方案是使用redir重定向端口,例如运行redir :80 127.0.0.1:8080,或者最好将其放入您的inetd.conf。如果您不喜欢流量浪费地通过另一个进程,可以使用iptables转发来实现相同的目的(但这更麻烦)。

创建别名的真正方法是使用SRV 记录在你的 DNS 服务器中,这样就可以很好地工作,没有任何开销,但由于历史原因,对于 http/https 协议,SRV 记录将被忽略

相关内容