apache - 反向代理有效,但辅助 RPi Web 服务器中的虚拟主机无效
问题描述
我有两个 RPi(3+),都用于 LAMP Web 服务器。他们的关系就像这张图片
因此,Rpi1 是直接与我的家庭路由器通信的路由器,我设置了反向代理来检索 RPi2 数据。
我的问题是我能够使用它们的域(static1.com 和 wordpress1.com)访问两个 RPi1 站点,但是两个 RPi2 域(static2.com 和 wordpress2.com)都指向同一个站点(wordpress2.com)。
我假设我在 RPi2 中的虚拟主机设置有一些问题,但还没有找到任何线索......我需要帮助解决这个 apache 设置问题!
这是我在 RPi 1 Apache 服务器中的设置,
static2.com 设置:
pi@cloelee:/etc/apache2/sites-available $ cat static2.com.conf
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName static2.com
ServerAlias www.static2.com
SSLProxyEngine on
ProxyPass / http://192.168.1.18/
ProxyPassReverse / http://192.168.1.18/
ProxyPreserveHost Off
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@example.com
ServerName static2.com
ServerAlias www.static2.com
SSLProxyEngine on
ProxyPass / http://192.168.1.18/
ProxyPassReverse / http://192.168.1.18/
ProxyPreserveHost Off
SSLCertificateFile /etc/letsencrypt/live/static2.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/static2.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
wordpress2.com 设置:
pi@cloelee:/etc/apache2/sites-available $ cat wordpress2.com.conf
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName wordpress2.com
ProxyPass / http://192.168.1.18/
ProxyPassReverse / http://192.168.1.18/
ProxyPreserveHost Off
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@example.com
ServerName wordpress2
ProxyPass / http://192.168.1.18/
ProxyPassReverse / http://192.168.1.18/
ProxyPreserveHost Off
</VirtualHost>
这是我在 RPi2 Apache Server 中的设置,
static2.com 设置:
pi@kyongoh:/etc/apache2/sites-available $ cat static2.com.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName static2.com
ServerAlias www.static2.com
DocumentRoot /var/www/static2.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(www\.)?static2\.com$
RewriteRule (.*) https://static2.com/$1 [L,R,NE]
</VirtualHost>
pi@kyongoh:/etc/apache2/sites-available $ cat static2.com-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName static2.com
ServerAlias www.static2.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/static2.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/static2.com/privkey.pem
</VirtualHost>
</IfModule>
wordpress2.com 设置:
pi@kyongoh:/etc/apache2/sites-available $ cat wordpress2.com.conf
<VirtualHost *:80>
<Directory "/var/www/wordpress2.com">
AllowOverride All
</Directory>
ServerName wordpress2.com
ServerAdmin webmaster@local_wordpress
DocumentRoot /var/www/wordpress2.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@example.com
ServerName wordpress2.com
ServerAdmin webmaster@local_wordpress
DocumentRoot /var/www/wordpress2.com
</VirtualHost>
您可能意识到 wordpress2.com 还没有 SSL,但 static2.com 有。你明白为什么两个 RP2 域都请求 wordpress2 数据了吗?我错过了什么?
感谢帮助!
解决方案
这是一个简单的修复,只是错过了打开 ProxyPreserveHost
ProxyPreserveHost Off
至
ProxyPreserveHost On
推荐阅读
- angular - 使用 ionic 中的社交共享插件发送图像
- c# - 实体框架,在不指定主键的情况下无法添加新对象
- python - 如何从hrefs 中获取hrefs?
- django - 如何在我的视图是基于功能的视图的情况下为 django rest api 生成招摇
- typescript - 执行 tsc 运行服务器
- c# - 如何在C#中传递参数rowIndex
- python - 使用python更改或更新mongodb的架构结构
- java - 圆形图像上的海拔没有唤醒Android
- r - 具有多个绘图的动态选项卡集 r markdown
- android - 如何捕捉对 get 方法 android 改造的响应?