这基本上就是我想做的事情:
- http 请求进入,路由器中的端口转发将其发送到本地网络中的服务器(服务器 A)
- 服务器识别虚拟主机的请求
- 服务器 a 对该虚拟主机有一条重写规则,该规则会重写请求并将其发送到位于同一本地网络上的服务器 B
- 服务器 B 收到请求,识别虚拟主机并根据虚拟主机设置设置文档根目录
直到服务器 B 为止,请求始终以默认定义结束。这可能吗?我正在运行 Debian Wheezy。
服务器 A apache 配置文件/etc/apache/sites-enabled/wiki
<Directory /var/lib/shared/websites/wiki/www>
Options None
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
ServerName wiki
ServerAlias wiki.asus.local
ServerAlias wiki.mydomain.net
DocumentRoot /var/lib/shared/websites/wiki/www
CustomLog /var/lib/shared/websites/wiki/log/access.log combined
ErrorLog /var/lib/shared/websites/wiki/log/error.log
RewriteEngine on
RewriteRule ^/(.*) http://192.168.10.91/$1 [P,L]
</VirtualHost>
服务器 B apache 配置文件/etc/apache/sites-enabled/wiki
<Directory /var/lib/shared/websites/wiki/www>
Options None
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
ServerName wiki
ServerAlias wiki.mydomain.net
DocumentRoot /var/lib/shared/websites/wiki/www
CustomLog /var/lib/shared/websites/wiki/log/access.log combined
ErrorLog /var/lib/shared/websites/wiki/log/error.log
</VirtualHost>
哦,另外,服务器 Bapache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
在重新启动 Apache 时会抱怨,这可能与此有关,但通常的答案只是添加到ServerName localhost
在apache.conf
这种情况下不正确,我所有的其他服务器都缺少定义,apache.conf
并且它们都没有抱怨。
有人知道吗?这是甚至可能,我想做什么?(重写虚拟主机,然后再次将请求放入虚拟主机)
谢谢你的帮助!
答案1
我认为你的问题是RewriteRule ^/(.*) http://192.168.10.91/$1 [P,L]
。如果你用 IP 访问第二台服务器,虚拟主机将无法工作。你可以尝试为服务器 B 设置一个特定的域名,并在重写规则中用它替换 IP