我在端口处有一个 Java Socket 监听器:5000
。由于我的服务器上有一个公共 IP 地址,因此可以通过以下方式访问它:
123.123.123.123:5000
没事。
但是现在,如果我不想使用 IP 地址,而是使用域名,该怎么办?请问我该如何将我的域名应用于 IP 地址之上。我的意思是,像这样:
www.example.com:5000
我的 DNS 已指向服务器。但我不知道如何将域名应用(或)绑定到现有端口。
请帮忙指点。我的网络知识很差。可以用 NGINX 或其他东西来做吗?
更新:
在某个地方,我了解到这Reverse Proxying
与 NGINX 有关。所以我尝试了这个:
server {
listen 5050 default_server;
server_name www.example.com;
location / {
proxy_pass http://123.123.123.123:5000;
}
}
你可以想象,它现在的工作方式是:
http://www.example.com:5050
但:它仍然没有完全解决我的问题。因为我不想再不同的端口被使用(或)打开。
如何使用与我的应用程序正在监听的完全相同的端口(在本例中是端口:5000
)?
答案1
DNS 服务器大部分仅提供域名到 IP 地址的转换。
[编辑新评论后更新]
DNS 翻译最基本的记录是 A 记录。域名请求时会返回此记录。
DNS 的规范之一是 RFC 1035。第 20 页是 A 记录格式。请注意,该记录是一个 32 位字段,其中包含 IP 地址。没有 IP 端口字段。
转换 TCP / UDP 端口不是 DNS 名称转换的一部分。
端口转发完全不同。创建一个新问题来涵盖此主题。
答案2
当您在浏览器中输入 URL 时,如果您不提供端口,则方案将把浏览器定向到默认端口,例如 http -> 80、https -> 443 等。没有与端口 5000 关联的方案,因此您必须使用不同的方法来提供它,并且 DNS 通常不是解决方案的一部分。
您的选择是使用 URL 中的端口、使用反向代理、使用防火墙对端口进行 DNAT 或其他操作。
幸运的是,您接下来的许多问题的答案已经在 Server Fault 和更广泛的互联网上找到了。您有很多阅读和研究要做 - 开始编织吧。
如何使用与我的应用程序正在监听的完全相同的端口(在本例中是端口:5000)?
考虑到您的其他限制,您可以在 URL 中提供一个端口。