使用同一网络上的路由器提供的一个公共 IP 地址在两个独立的 Raspberry Pi 上托管两个域名

使用同一网络上的路由器提供的一个公共 IP 地址在两个独立的 Raspberry Pi 上托管两个域名

我正在自己的 Raspberry Pi 3 上托管两个单独的域名: https://www.iwasframed.comhttps://www.findyourchild.org使用 Google Domains 及其动态 DNS API。 这些是我的A 记录AAAA 记录这是我A 和 AAA 记录查找你的孩子。

我的硬件包括:

  1. 两个 Raspberry Pi 3 Model B
  2. 一台 AT&T U-verse Pace 5268AC 网关互联网无线调制解调器路由器

cat /proc/设备树/模型

Raspberry Pi 3 Model B Rev 1.2

cat /etc/os-release

PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Apache2-v

Server version: Apache/2.4.52 (Raspbian)
Server built:   2022-01-03T21:27:14

mysql-V

mysql  Ver 15.1 Distrib 10.5.12-MariaDB, for debian-linux-gnueabihf (armv7l) using  EditLine wrapper

IP 地址 && IP 地址

(iwasframed.com):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether b8:27:eb:82:72:4d brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:d7:27:18 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.76/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
       valid_lft 70852sec preferred_lft 60052sec
    inet6 2600:1700:3b01:2a70:b648:20cf:994:626/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 3599sec preferred_lft 3599sec
    inet6 fe80::cdc9:5bc:9b4e:7f4b/64 scope link
       valid_lft forever preferred_lft forever
default via 192.168.1.254 dev wlan0 proto dhcp src 192.168.1.76 metric 303
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.76 metric 303

(findyourchild.org):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether b8:27:eb:3f:84:2e brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:6a:d1:7b brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.80/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
       valid_lft 78792sec preferred_lft 67992sec
    inet6 2600:1700:3b01:2a70:bffc:91d3:e3f7:9f3a/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 3555sec preferred_lft 3555sec
    inet6 fe80::4915:c978:283e:7c4a/64 scope link
       valid_lft forever preferred_lft forever
default via 192.168.1.254 dev wlan0 proto dhcp src 192.168.1.80 metric 303
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.80 metric 303

sudo nano /etc/resolv.conf

(iwasframed.com)和(findyourchild.org):

# Generated by resolvconf
domain attlocal.net
nameserver 192.168.1.254
nameserver 2600:1700:3b01:2a70::1

000-默认.conf

(iwasframed.com):

<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.iwasframed.com [OR]
RewriteCond %{SERVER_NAME} =iwasframed.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

000-默认.conf

(findyourchild.org):

<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

我遇到的问题是,我在设置我的第一个 Raspberry Pi 和域时没有遇到任何问题,https://www.iwasframed.com但是,当我尝试使用域设置我的第二个 Raspberry Pi 时,https://www.findyourchild.org,打开80和443端口,然后路由器抛出错误:

HTTP 与 iwasframed.com 上当前正在使用的 Web 服务器冲突。HTTP 和 Web 服务器使用相同的资源,不能同时托管。要使用 HTTP,您必须先从 iwasframed.com 的应用程序列表中删除 Web 服务器。或者,您可以在一台计算机上安装这两个应用程序,然后将这两个应用程序配置文件添加到该计算机的应用程序列表中。

其次,由于它们具有相同的公网 IP,因此https://wwww.findyourchild.org指向https://www.iwasframed.com:----检查你的网站

如果可以使用相同的路由器和公共 IP 在同一网络上为我的第二台 Raspberry Pi 打开端口 80 和 443,有人可以提供一些指导吗?或者我应该只使用一台 Raspberry Pi 来托管两个域名?

答案1

最简单的解决方案是将两个域作为虚拟站点托管在同一个 RPi/Apache 中。

每个站点在 Apache 中都有自己的配置文件,在其中声明域名ServerName和相应的页面目录,DocumentRoot如下所示:

/etc/apache/sites-available/iwasframed.conf:

<Virtual Host *:80>
    ServerName www.iwasframed.com
    DocumentRoot /var/www/html/iwasframed
    RedirectMatch /(.*)$ https://www.iwasframed.com/$1
      :
</VirtualHost>

<Virtual Host *:443>
    ServerName www.iwasframed.com
    DocumentRoot /var/www/html/iwasframed
      :
</VirtualHost>

/etc/apache/sites-available/findyourchild.conf:

<Virtual Host *:80>
    ServerName www.findyourchild.org
    DocumentRoot /var/www/html/findyourchild
    RedirectMatch /(.*)$ https://www.findyourchild.org/$1
      :
</VirtualHost>

<Virtual Host *:443>
    ServerName www.findyourchild.org
    DocumentRoot /var/www/html/findyourchild
      :
</VirtualHost>

注意我更喜欢使用mod_redirect来强制将 HTTP 转换为 HTTPS。此外,端口 443 部分必须具有相关的 SSL 配置指令。

要启用站点,请使用以下a2ensite命令创建到配置文件的链接(sites-available省略sites-enabled文件扩展名):

sudo a2ensite iwasframed findyourchild

并重新启动/重新加载 Apache。

参考:Apache2.4 基于名称的虚拟主机支持

附加信息:如果站点将有许多同时连接,请考虑使用 Apachempm_event模块而不是默认模块mpm_prefork

编辑:其他解决方案可以在前端拥有第三个 RPi,并具有所描述的虚拟站点配置,其中每个站点重定向到托管站点数据的真实 RPi(如果由于磁盘空间、端口或外部驱动器限制,单个 RPi 无法同时拥有两个 Web 树,则可以使用此方法)。

相关内容