1.增加NameVirtualHost,在httpd.conf添加NameVirtualHost将其打开。
NameVirtualHost 192.168.30.95:80

2.尝试使用两个不同域名VirtualHost的方案,未能实现。

PHP应用 – www.wenjuanpai.com

Java应用 -  java.wenjuanpai.com

因为单点登录需要使用Cookies,而该方案使用了"www"和"java"两个子域,默认的,每个域的Cookies是独立的。

事实上,跨域Cookies共享是可行的,需要程序员额外的Code工作。

3.尝试使用不同端口VirtualHost的方案,可以实现。

 

配置如下

NameVirtualHost 192.168.30.95:80
NameVirtualHost 192.168.30.95:81

<VirtualHost 192.168.30.95:80>
    DocumentRoot "D:/wamp/www/wenjuanpai"
    ServerName www.wenjuanpai.com
    <Directory "D:/wamp/www/wenjuanpai">
    allow from all
    Options +Indexes
     </Directory>
     ……
</VirtualHost>

<VirtualHost 192.168.30.95:81>
    ServerName www.wenjuanpai.com
    ProxyPass / ajp://localhost:8009/
    ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>

以上方案,直观上看,和之前的采用8888端口的方案,似乎丢失一样的,但是内部机制已经改变了。

为什么要这么做?引用某位老师的一段说明:

既然 Tomcat 本身已经可以提供这样的服务,我们为什么还要引入 Apache 或者其他的一些专门的 HTTP 服务器呢?原因有下面几个:

1. 提升对静态文件的处理性能

2. 利用 Web 服务器来做负载均衡以及容错

3. 无缝的升级应用程序

这三点对一个 web 网站来说是非常之重要的,我们希望我们的网站不仅是速度快,而且要稳定,不能因为某个 Tomcat 宕机或者是升级程序导致用户访问不了,而能完成这几个功能的、最好的 HTTP 服务器也就只有 apache 的 http server 了,它跟 tomcat 的结合是最紧密和可靠的。

当然,完美的方案,肯定不是“不同端口VirtualHost”的方案。只要我们的程序员够给力,能在代码中实现Cookies跨域,那才是真正的无缝整合。