我正在自己的 Raspberry Pi 3 上托管两个单独的域名: https://www.iwasframed.com
并https://www.findyourchild.org
使用 Google Domains 及其动态 DNS API。 这些是我的A 记录和AAAA 记录这是我A 和 AAA 记录查找你的孩子。
我的硬件包括:
- 两个 Raspberry Pi 3 Model B
- 一台 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。
附加信息:如果站点将有许多同时连接,请考虑使用 Apachempm_event
模块而不是默认模块mpm_prefork
。
编辑:其他解决方案可以在前端拥有第三个 RPi,并具有所描述的虚拟站点配置,其中每个站点重定向到托管站点数据的真实 RPi(如果由于磁盘空间、端口或外部驱动器限制,单个 RPi 无法同时拥有两个 Web 树,则可以使用此方法)。