使用1个IP运行2个名称虚拟主机。例如,{1}}和front1.httpd.example.com
可以在1个服务器的1个httpd(父)进程上访问(我想在front1和front2中侦听端口80)。
httpd 2.4和Ubuntu 11(32位)
我根据最新的官方文档Name-based Virtual Host Support添加到httpd.conf上的两个虚拟主机。
我还更新了我的服务器/ etc / hosts和客户端主机,如下所示。
服务器的主机(220.xxx.xxx.xxx是一些实际的IP)
front2.httpd.example.com
客户主持人
127.0.0.1 front1.httpd.example.com front2.httpd.example.com localhost
220.xxx.xxx.xxx front1.httpd.example.com
222.xxx.xxx.xxx front2.httpd.example.com
此外,我的主机名是220.xxx.xxx.xxx front1.httpd.example.com
220.xxx.xxx.xxx front2.httpd.example.com
(注意:我还尝试在VirtualHost部分之前添加front1.httpd.example.com
,但它只返回附加消息“NameVirtualHost无效...”)
当我访问NameVirtualHost *:80
时,会返回front1.httpd.example.com/index.html
。这是我的预期,但当我访问htdocs/xxxx/index.html
时,尽管我打算显示front2.httpd.example.com/index.html
,也会返回htdocs/xxxx/index.html
。
(在浏览器控制台消息中,找到htdocs/yyyy/index.html
,然后302重定向到front2.httpd.example.com/index.html
)
如果没有匹配的结果可供访问,虚拟主机将返回第一个虚拟主机值。所以,我也尝试改变虚拟主机的行为,如下所示:
首先尝试:
front1.httpd.example.com/index.html
第二次尝试:
<VirtualHost *:80>
DocumentRoot "/opt/APACHE/httpd/htdocs/xxxx"
ServerName front1.httpd.example.com
ServerAlias front1.httpd.example.com
ErrorLog "logs/dummy-host1.example.com-error_log"
<Directory "/opt/APACHE/httpd/htdocs/xxxx">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/opt/APACHE/httpd/htdocs/yyyy"
ServerName front2.httpd.example.com
ServerAlias front2.httpd.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
<Directory "/opt/APACHE/httpd/htdocs/yyyy">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
因此,<VirtualHost *:80>
DocumentRoot "/opt/APACHE/httpd/htdocs/yyyy"
ServerName front2.httpd.example.com
ServerAlias front2.httpd.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
<Directory "/opt/APACHE/httpd/htdocs/yyyy">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/opt/APACHE/httpd/htdocs/xxxx"
ServerName front1.httpd.example.com
ServerAlias front1.httpd.example.com
ErrorLog "logs/dummy-host1.example.com-error_log"
<Directory "/opt/APACHE/httpd/htdocs/xxxx">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
会返回front2.httpd.example.com/index.html
,但htdocs/yyyy/index.html
也会返回front1.httpd.example.com/index.html
。因此,我猜访问请求的虚拟主机并不多。
我检查了类似Virtual Host on CentOS5这样的类似问题,但在我的情况下,我在服务器和客户端都写了hosts文件,所以我觉得DNS不适合我。
我已经设置了几年的httpd服务器,并且还使用了htdocs/yyyy/index.html
旧的东西VirtualHost
,但这次我搞砸了或者我不知道。
请提供任何想法?
NameVirtualHost
答案 0 :(得分:0)
我在此服务器实例上使用OpenAM Web策略代理。
因此,只需将每个FQDN添加到OpenAm代理配置文件上的FQDN虚拟映射即可实现我的目标。