我有两个域在 Windows 版 Apache 2.2 上运行。
域 2 同时具有安全和非安全访问,并且运行良好。
域 1 包含域和四个子域。子域重定向到同一网络上另一台服务器上的端口。每个子域都有自己的 DNS A 记录。域和子域如下:
domain1.org media.domain1.org video.domain1.org dsm.domain1.org photo.domain1.org
域 1 未被使用。子域全部重定向至 NAS 上的端口。
只有第一个虚拟主机块有效。哪个子域首先列出并不重要。如果 media.domain1.org 首先列出,media.domain1.org 将正确重定向,但 video、dsm 和 photo 也将重定向到为 media.domain1.org 分配的端口。
这是 Apache 配置问题还是 DNS 问题?
谢谢
编辑1
我今天早上添加了 NameVirtualHost,但它没有任何作用。我尝试了内部和外部 IP 地址。
我不想升级到 Apache 2.4。我一开始使用的是 2.4,但无法访问 domain2 的目录。使用 Require All Granted 导致服务器无法启动。
我开始使用 Proxy 语句,但它们根本不起作用。我确实加载了代理模块,但它们没有转发到 NAS 上的任何端口。
一旦子域分离完成,我就会担心如何访问 NAS。
这是我的虚拟主机结构:
<VirtualHost *:80>
ServerName media.domain1.org
Redirect / http://domain1.org:7007/
ErrorLog c:/webroot/domain1/logs/error.log
CustomLog c:/webroot/domain1/logs/access.log common
</VirtualHost>
<VirtualHost *:80>
ServerName dsm.domain1.org
Redirect / http://domain1.org:5000/
ErrorLog c:/webroot/domain1/logs/error.log
CustomLog c:/webroot/domain1/logs/access.log common
</VirtualHost>
<VirtualHost *:80>
ServerName video.domain1.org
Redirect / http://domain1.org:6006/
ErrorLog c:/webroot/domain1/logs/error.log
CustomLog c:/webroot/domain1/logs/access.log common
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com
Serveralias www.domain2.com
ErrorLog c:/webroot/domain2/logs/error.log
CustomLog c:/webroot/domain2/logs/access.log common
DocumentRoot c:/webroot/domain2
<Directory c:/webroot/domain2>
Options Indexes FollowSymLinks Includes
DirectoryIndex index.html index.htm
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName domain2.com
Serveralias www.domain2.com
DocumentRoot c:/webroot/domain2
<Directory c:/webroot/domain2>
Options Indexes FollowSymLinks Includes
DirectoryIndex index.html index.htm
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog c:/webroot/domain2/logs/error.log
CustomLog c:/webroot/domain2/logs/access.log common
SSLEngine on
SSLCertificateFile "c:/apache2/sslkey/certificate.crt"
SSLCertificateKeyFile "c:/apache2/sslkey/private.key"
SSLCertificateChainFile "c:/apache2/sslkey/ca_bundle.crt"
</VirtualHost>
答案1
我终于完成了这项工作,并且我也通过同样的修复使 Proxypass 正常工作。
添加 NameVirtualHost 需要 IP 地址,不能使用通配符。一旦在此处指定了 IP 地址,则 Listen 语句中也需要包含相同的地址。
它无法与我的外部 IP 地址配合使用,但可以与我的内部 IP 地址配合使用。因此,以下是有效的配置:
NameVirtualHost 192.168.x.xxx:80
Listen 192.168.x.xxx:80
Listen 192.168.x.xxx:443
<VirtualHost 192.168.x.xxx:80>
ServerName media.domain1.org
ProxyPass / http://192.168.x.xxx:7007/
ProxyPassReverse / http://192.168.x.xxx:7007/
</VirtualHost>