在本地机器上使用子域而不指定端口

在本地机器上使用子域而不指定端口

我有一个从我的网络主机购买的域名。我想使用我在本地机器上创建的子域名,因为我正在使用的文件无法安装在主机上。

截至目前,子域名可以正常工作,但是我必须在末尾包含端口才能查看我想要的站点/文件。我托管 statping,以防我的主机出现故障,状态页面仍然可用。我在 Windows 10 计算机上托管 statping,statping 有自己的 HTTP 服务器。我使用的是 XAMPP。

答案1

听起来你想使用 Apache(在 XAMPP 中)作为反向代理为了斯塔平

简而言之,您需要一个类似以下的 Apache 虚拟主机:

<VirtualHost *:80>

ServerName subdomain.example.com

ProxyPass / http://host:port/
ProxyPassReverse / http://host:port/

</VirtualHost>

在哪里:

  • subdomain.example.com是您的子域名。

  • host:port是 Statping 主机的域名或 IP,以及 Statping 正在运行的端口。

笔记

  • 如果 Statping 与 Apache(XAMPP)在同一本地主机上运行,​​您可以简单地使用127.0.0.1或主机的本地 IP 作为该host值。

  • 为了使ProxyPassProxyPassReverse正常工作,您需要mod_proxy在 Apache 中启用。您可能还希望/需要启用mod_proxy_htmlmod_proxy_http以及mod_proxy_http2。特别是,启用mod_proxy_http2可以避免在完成 Statping 设置后出现潜在的(轻微的)代理错误。这些都应该在您的主 Apache 配置中(例如httpd.conf):

    ....
    LoadModule proxy_module modules/mod_proxy.so
    ....
    ....
    LoadModule proxy_html_module modules/mod_proxy_html.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_http2_module modules/mod_proxy_http2.so
    ....
    
  • 使用反向代理时,Statping 似乎在子域的根目录下工作效果最好(因为它的 URL 形成方式)。因此,如果您需要在同一台机器上运行第二个 Statping 实例,则应使用第二个子域。


当尝试在同一网络上访问时phpmyadmin,它会重定向到 Statping,并显示错误“页面不存在”。

如果上面的虚拟主机条目是您唯一的虚拟主机,Apache 会将所有请求转发到该主机。更一般地,如果请求的主机是 Apache“不知道”的,它会将请求重定向到第一个定义的虚拟主机。显然,如果 Statping 不知道要求它服务的 URL,则这是一个问题。

您可以通过在上面列出的虚拟主机之前定义另一个虚拟主机来解决这个问题,以作为不会阻止访问的“默认”主机,例如phpmyadmin

<VirtualHost *:80>

ServerName localhost
DocumentRoot "C:/path/to/xampp/htdocs/"

Redirect permanent /subdomain http://host:port

</VirtualHost>


<VirtualHost *:80>

ServerName subdomain.example.com

ProxyPass / http://host:port/
ProxyPassReverse / http://host:port/

</VirtualHost>

补充笔记

  • 上述第一个虚拟主机应该适用于localhost127.0.0.1并且无论 PC 的本地 IP 是什么(例如192.168.1.x)。

  • 对于具有与上述类似的“默认”虚拟主机的一个小警告是,它可能会(潜在地)提供给连接到例如的某人subdomain.example.com(假设 Apache 发生主机名错误)。

  • 在上面的例子中,Redirect permanent /subdomain是运行 Statping 组合的可选快捷方式host:port。这意味着您可以键入 eg192.168.1.x/subdomain并在本地转到 Statping ( host:port),而无需实际摆弄您的hosts文件或本地 DNS。

  • Redirect permanent /subdomain将在地址栏中显示端口,就像您手动host:port在浏览器中输入一样。

  • ProxyPass与给出的指令不同subdomain.example.com,如果Redirect permanent /subdomain使用本地地址,则它只能在本地使用。但是,您也可以使用公共 IP 或(子)域名。

答案2

将端口更改为 80 (HTTP) 或 443 (HTTPS)。这些是这些协议的默认端口,当未指定时,浏览器会默认采用这些端口。

相关内容