我认为,这是可能的,但有一些要求:
分配给调制解调器的静态外部 IP;
RPi 上的静态 IP;
在调制解调器上正确转发规则。
我的意思是,您需要转发所有请求,如下所示:
调制解调器:80 -> rp0:80
调制解调器:443 -> rp0:443
在 rp0 上的端口可能与 80 和 443 不同,因此,请设置正确的规则并在 nginx 配置中注明。
然后在网站配置中设置上游或使用 rp1-3 的 IP:
upstream rp1 {
server 192.168.1.11:port;
}
upstream rp2 {
server 192.168.1.12:port;
}
upstream rp3 {
server 192.168.1.13:port;
}
将 port 替换为 port,该端口在适当的 RPi 上进行侦听。
网站配置如下:
server {
server_name site1.com www.site1.com ;
location / { proxy_pass http://rp1 ; }
}
server {
server_name site2.com www.site2.com ;
location / { proxy_pass http://rp2 ; }
}
添加您需要的任何参数。
另外,如果您要托管一些静态网站,最好的方法是将它们放在 rp0 上。
编辑 1
工作配置示例:
server {
listen 80;
server_name site1.com www.site1.com ;
location / { rewrite ^ https://$host$request_uri permanent;}
}
server {
listen 443 ssl;
server_name site1.com www.site1.com;
ssl_certificate /etc/letsencrypt/live/site1/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site1/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://rp1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
port_in_redirect off;
proxy_redirect http://rp1/ /;
}
请注意,如果您要使用 Letsencrypt,最好的方法是在 rp0 上设置 certbot(或其他)。自动更新证书会更容易。另外,使用 /etc/letsencrypt/live/site1/fullchain.pem 。
为了使用多个 SSL 域,请确保安装 nginx 支持 SNI:
# nginx -V
nginx version: nginx/1.14.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled