2

遇到问题

最近一直有个问题困惑着我,apache、nodejs、tomcat不能同时在服务器80端口运行,对域名进行设置时使用ip:port又不能得到期望的结果(结果一直是以一个iframe的形式),因此就在segmentFault上发问:同一台服务器运行多个http服务如何实现?之后得到了数位大神的回答,大意就是采用反向代理来实现。因此百度了一些文章,也看了看apache的手册,大概解决了这个问题。

apache的思路

apache的思路应该是将服务和参数转发给真正的服务器,然后从服务器拿到结果返回给浏览器,思路和以前的模拟登录获取结果有点相似,不过这里apache都已经做好了,只需要配置好就可以了。

apache的域名和代理配置

首先是域名配置,还是和以前的vhosts配置一样

<VirtualHost *:80>
    ServerName www.eg.com
</VirtualHost>

我觉得要是做整个域名的转发这样就行了,接下来添加配置

<VirtualHost *:80>
    ServerName www.eg.com
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

这样就将www.eg.com的请求转发到了8080端口。
我用nodejs启动了一个express应用,当然,只不过是输出了一句“hello world”。
clipboard.png
然后在浏览器中输入www.eg.com,就会顺利的出现“hello world”了。

其他事项

  • 需要开启apache代理的拓展

    LoadModule proxy modules/proxy.so
    LoadModule proxy_connect modules/proxy_connect.so
    LoadModule proxy_http modules/proxy_http.so
    LoadModule proxy_html modules/proxy_html.so
  • 需要设置hosts
    windows下位置在c:/windows/system32/drivers/etc/hosts,linux下在/etc/hosts下。

  • 经过我的测试,apache对apache自身的其他端口的代理和对nodejs的代理是正常工作的。


小狗快跑嘟嘟
2.8k 声望19 粉丝

探索,是认识这个世界的唯一方式。