期望/目标
- 我们有一个域名(比如说)示例.com购买于Google 域名以及一台运行 Windows 10 Pro 的 PC
- 我们打算将这台电脑用作托管我们两个网络应用程序的服务器应用程序1和应用2 目前我们没有静态 IP 地址,因此我们将公共地址称为:192.0.2.0
- 网络应用程序应用程序1和应用2在不同的应用程序库和端口上运行8081&8082
- 我们想跑应用程序1和应用2在子域名上app1.example.com和app2.example.com分别。
以下是所有正常运行的程序:
- web 应用程序在 tomcat(v9)中单独的应用程序基础上通过单独的端口运行,可以从本地和内联网访问。
- 通过成功的端口转发,也可以从互联网访问 Web 应用程序(192.0.2.0:8081和192.0.2.0:8082成功加载应用程序1和应用2分别)。
问题:URL 域名被公共 IP 地址替换:
现在端口转发已成功,我尝试了域转发(在阅读有关如何进行 DNS 配置之前)。
这是我进行域名转发的方式:
- 我进入了网站部分(网站部分裁剪后的屏幕截图.png)点击添加转寄地址(添加转发地址SS_cropped.png)。
- 然后在生成的表单中,填写标有转发自和转发和app1.example.com和192.0.2.0:8081分别。
现在完成此操作后,地址app1.example.com将重定向至应用程序1但 URL 会取代app1.example.com和192.0.2.0:8081
然后,我阅读了许多文章和博客,告诉人们要添加 A 类型记录或 CNAME 类型记录,但我不知道该如何做,也不明白需要哪些记录组合才能使其正常工作。
我尝试了组合(在领域部分):
组合1:
{ hostname=example.com, type=A, TTL=3600, Data:192.0.2.0 }
{ hostname=app1.example.com, type=CNAME, TTL=3600, Data:192.0.2.0:8081 }
组合2:
{ hostname=app1.example.com, type=TXT, TTL=3600, Data:192.0.2.0:8081 }
但都不起作用,后来它对我来说也不再有意义了。
请帮助我,我没有为网站设置 DNS 的经验和/或满足上述期望所需的任何其他经验。
更新
感谢@fvu,我能够开始使用 nginx,在本地配置它,让它正常工作,并掌握了代理服务器的工作原理(当然,仅限于最佳情况)
现在又出现了一个问题,我无法在服务器机器上成功打开 80 端口。
我尝试并测试了所有方法:
- nginx 成功启动并在端口 80 上工作,这意味着 80 没有被任何其他进程阻塞。
- 所有其他端口均已正确转发,但在许多端口检查器站点(主要是 portchecker.co)上未显示端口 80 已打开
- 为了检查发生了什么,我编辑了防火墙设置以添加规则并开始记录所有配置文件(域,公共和私人)的允许和拒绝数据包
- 在日志中我看到有一些针对 443 端口的请求。我怀疑端口 80 中的请求是否以某种方式转换为 443,但不确定。可能吗?
- 端口 80 上有许多请求被允许,但端口检查器网站上仍然显示端口 80 已关闭
现在我要么必须修复端口 80 未打开的问题,要么将 nginx 端口更改为 80 以外的其他端口
但是如果端口发生变化,我将需要在 DNS 记录等地方提及,这对我来说有点不清楚。
我在想也许在路由器中我可以将端口 80 转发到 81 并让 nginx 在 81 左右运行。但我需要尝试一下。
同时,如果您能告诉我如何使用在 80 以外的端口上运行的 nginx 来管理反向代理。
[我很着急,所以可能包含错别字或细节不详细。如有需要,请询问!]
答案1
由于您没有服务器的静态 IP 地址,您将不得不通过其中一个动态 DNS 提供商绕道而行(也许 google 域名已经实现了这样的服务,不知道)。
然后,您将能够将该名称 CNAME 为 app1.example.com 和 app2.example.com(两个 CNAME 记录,要清楚!!!)。您不能在 CNAME 记录中指定端口(请参阅这里以了解相关问题)。
此时,你将能够发布你的服务地址但您将始终必须指定端口号,这可能很烦人。
现在,为了摆脱自定义端口,同时能够在两个主机名指向的一个地址上运行两个服务,请在 Tomcat 前面使用支持 SNI 的反向代理。我喜欢nginx,在使用之前磅对于简单配置来说,它更容易设置,但还有很多其他选择。或者,在一个 Tomcat 中运行两个服务并使用 Tomcat 的内置 SNI 支持。
要使这种设置起作用,确实需要很多步骤(和辅助设置),我希望我的解释足以帮助您。