我有一台 Hetzner 服务器,以及一些 Google Domains 域名。我有一个在端口 80 上运行的 Apache 服务器,以及一个在端口 8080 上运行的 Node 服务器。
如果我的服务器 IP 是 192.0.2.4,我的域名是 example.com,那么我想要设置 Google Domains 以便:
- http://example.com打开http://192.0.2.4(但仍然显示http://example.com在浏览器中)
- http://www.example.com打开http://192.0.2.4(但仍然显示http://www.example.com在浏览器中)
- http://a.example.com打开http://192.0.2.4:8080(但仍然显示http://a.example.com在浏览器中)
到目前为止,我在 Google Domain 中添加了以下规则:
@ A 1h 192.0.2.4
www CNAME 1h example.com
a CNAME 1h ghs.googlehosted.com (added as a subdomain redirection from a.example.com to 192.0.2.4:8080)
我有这种行为:
- http://example.com导致 404(来自 Google,而不是我的 Apache 服务器)
- http://www.example.com按预期工作
- http://a.example.com重定向至http://192.0.2.4:8080但http://192.0.2.4:8080显示在浏览器中,而不是http://a.example.com
我需要做哪些更改才能使其正常工作?我需要在 Hetzner 端做些什么吗?
答案1
问题是你重定向 http://a.example.com
至http://192.0.2.4:8080
。浏览器重定向会导致 Web 浏览器中的地址栏发生变化。
你可能想要的是:
- 通过 DNS A 记录将 a.example.com 指向您的 apache 网络服务器的 ip 地址。
- 在 Apache 中设置一个额外的基于名称的虚拟主机
a.example.com
- 将 VirtualHost配置
a.example.com
为端口 8080 上的节点服务器的反向代理。
您可能需要一些额外的指令,但大致上您需要的是类似这样的指令:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/html/
</VirtualHost>
<VirtualHost *:80>
ServerName a.example.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>