我有三个 Web 服务器,希望能够通过同一个路由器访问它们。我该怎么做才能在互联网上输入服务器 A、B 或 C 的 Web 地址时,转到正确的服务器?如果可以使用 Raspberry Pi 来实现这一点,有人可以指导我完成这个过程或为我指明正确的方向吗?
答案1
正如评论中提到的那样,反向代理是处理这种情况的方法。
如何设置反向代理?
您需要安装具有此功能的 Web 服务器,例如 Apache 或 Nginx。这两种 Web 服务器均可用于 Raspberry Pi。
Apache 示例
跳过特定于 Linux/Raspberry Pi 的细节,您可以使用 Apache虚拟主机实现你的目标(具体来说,基于名称的虚拟主机)。
概述
在你的 Raspberry Pi 上安装 Apache(根据需要)。
设置您的 Raspberry Pi 以接收端口 80 上的所有 Web 请求(这通常通过使用路由器中的端口转发来实现)。
确保适当的mod_proxy模块已在 Apache 配置中启用。您至少可能需要
mod_proxy
、mod_proxy_http
和。mod_proxy_html
为每个网址创建具有适当条目和 IP 的 Apache 虚拟
ProxyPass
主机ProxyPassReverse
。示例主机 1
<VirtualHost *:80> ServerName site1.example.com #ServerAlias *.site1.example.com #DocumentRoot "/unneeded" ProxyPass / http://192.168.1.10/ ProxyPassReverse / http://192.168.1.10/ </VirtualHost>
示例主机 2
<VirtualHost *:80> ServerName site2.example.com #ServerAlias *.site2.example.com #DocumentRoot "/unneeded" ProxyPass / http://192.168.1.20/ ProxyPassReverse / http://192.168.1.20/ </VirtualHost>
示例主机 3
<VirtualHost *:80> ServerName site3.example.com #ServerAlias *.site3.example.com #DocumentRoot "/unneeded" ProxyPass / http://192.168.1.30/ ProxyPassReverse / http://192.168.1.30/ </VirtualHost>