我的 Raspberry Pi 上有一个自托管的 Apache 网站,其中包含 php 和 mysql。现在我需要为我的新域名再创建一个,但我没有其他计算机来运行服务器。有没有办法在同一台机器上使用相同的端口运行服务器?如果没有,我该如何更改端口,这样就不需要输入 example.com:portnumber 了。我需要的是 example.com。
答案1
是的您可以在一台机器上拥有两个不同的网站。
我知道两种不同的可能性,但我很确定还有更多的可能性:
选项1:
只需运行一个 Apache 实例即可通过虚拟主机区分域名。
您可以创建这些/etc/apache2/sites-available
,然后从/etc/apache2/sites-enabled
您想要启用的相应文件创建符号链接或使用 cmd a2ensite
。
为每个虚拟主机创建一个<Virtual Host>
-Block并添加相应的ServerName-Tag(您的域名)和文件的DocumentRoot。
进一步阅读和示例:基于名称的虚拟主机支持
选项 2:
用一个反向代理例如 nginx。在端口 80 上运行此反向代理,并让 apache 使用除 80 之外的 2 个端口(每个站点一个)。至于 apache,您必须在 中设置多个服务器块/etc/nginx/sites-available
并通过从 进行符号链接来启用它们/etc/nginx/sites-enabled
。
在这种情况下,反向代理还处理 https(SSL 证书等),并且反向代理后面的流量(仅在本地计算机上)要么完全未加密,要么由 apache 加密,然后由 nginx 解密并重新加密。
进一步阅读和示例:NGINX 反向代理
或者,您也可以使用 nginx 作为新网站的独立网络服务器,并且仅对“旧”网站进行反向代理。
我不确定是否有可能在同一台机器上运行完全独立的 apache 实例,但我也不明白为什么这是必要的。您可以更改每个虚拟主机所需的大部分(如果不是全部)设置。如果可能的话,您可以再次使用 nginx(或另一个反向代理)让它们都可以从端口 80 访问。
答案2
是的 !
您必须创建所需的虚拟主机。每个虚拟主机都将响应其 DocumentRoot,如果启用了 HTTPS,则使用其证书。请记住:虚拟主机基于用户在 URL 中提供的主机名。在 Apache 中,检查/etc/apache2/站点可用/复制现有文件并调整服务器名配置条目。重新加载 Apache 即可运行!如果 DNS 是公开的,请不要忘记在 DNS 中创建新条目。