apache设置反向代理访问 NodeJs 网站(wdcp 安装代理模块+配置虚拟主机)

来源:互联网 发布:centos yum 安装ssh 编辑:程序博客网 时间:2024/05/16 23:53

一《服务器环境》

操作系统:Linux 2.6.32-431.23.3.el6.x86_64

wdcp版本: wdcp_v2.5.15(20150826)

apache版本:httpd-2.2.24


二《wdcp 安装代理模块》如果已经安装代理模块请直接跳过这一步

  1. cd /root/lanmp/httpd-2.2.24/modules/proxy/ #进入源码目录
  2. /www/wdlinux/httpd-2.2.24/bin/apxs -i -c -a mod_proxy.c proxy_util.c #编译安装
  3. /www/wdlinux/httpd-2.2.24/bin/apxs -i -c -a mod_proxy_http.c
  4. /www/wdlinux/httpd-2.2.24/bin/apxs -i -c -a mod_proxy_ftp.c
  5. /www/wdlinux/httpd-2.2.24/bin/apxs -i -c -a mod_proxy_connect.c

如果正常的话会在/www/wdlinux/httpd-2.2.24/modules/生成mod_proxy.so、mod_proxy_connect.so、mod_proxy_ftp.so、mod_proxy_http.so几个文件。同时查看一下/www/wdlinux/httpd-2.2.24/conf/httpd.conf是否增加了如下几行,如果没增加手动增加:


  1. LoadModule proxy_module modules/mod_proxy.so
  2. LoadModule proxy_http_module modules/mod_proxy_http.so
  3. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
  4. LoadModule proxy_connect_module modules/mod_proxy_connect.so

安装代理参考文章:http://huikon.cn/post-306.html


三《配置虚拟主机》

1、要先有一个可以正常使用的域名,可以正常访问到wdcp上创建的网站

2、配置虚拟主机:/www/wdlinux/apache/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>ServerName live01.netServerAlias www.live01.netProxyRequests off<Proxy *>Order deny,allowAllow from all</Proxy><Location />ProxyPass http://localhost:3000/ProxyPassReverse http://localhost:3000/</Location></VirtualHost>

此处 live01.net 和 www.live01.net 为绑定的要访问 Node 服务的域名。
http://localhost:3000/ 为服务器上访问 Node 的网址和端口号,这里以 3000 为例。

以上配置意思就是外部访问 www.live01.net 时会转到 http://localhost:3000/,同时访问子路径也会同时被转发,如:www.live01.net/room ->http://localhost:3000/room

PS:上面的<Location />我一度怀疑应该是<Location>,但后来想这应该是匹配根路径用的吧。

3、配置httpd.conf, 路径:/www/wdlinux/apache/conf/httpd.conf

因为用到了httpd-vhosts.conf,所以在httpd.conf中将conf/extra/httpd-vhosts.conf 给include上(把include前面的#去掉就行了,如下)

# Virtual hostsInclude conf/extra/httpd-vhosts.conf

参考文章:

https://cnodejs.org/topic/50f90289df9e9fcc58a5015c

http://www.cnblogs.com/plusice/p/3484597.html


以上完成后,重启服务器就可以正常访问了。

大家可以试一下访问我做的NodeJs直播室:http://live01.net/

这样就可以实现:同一个服务器上apache能够正常使用,nodejs也能用域名访问,各不影响,哈哈


怎样在apache设置多个域名反向代理访问 NodeJs 网站?

如果想要设置多个域名对应到NodeJs不同的网站, 那一样的在httpd-vhosts.conf添加多几个<VitrualHost>就行了, 例子如下:

这样设置后就有2个一级域名 + 1个二级域名可以对应到3个端口,那就满足要求啦!!

xyz.net -> http://localhost:3000/

abc.net -> http://localhost:3001/

sub.abc.net -> http://localhost:3010/

<VirtualHost *:80>ServerName xyz.netServerAlias www.xyz.netProxyRequests off<Proxy *>Order deny,allowAllow from all</Proxy><Location />ProxyPass http://localhost:3000/ProxyPassReverse http://localhost:3000/</Location></VirtualHost><VirtualHost *:80>ServerName abc.netServerAlias www.abc.netProxyRequests off<Proxy *>Order deny,allowAllow from all</Proxy><Location />ProxyPass http://localhost:3001/ProxyPassReverse http://localhost:3001/</Location></VirtualHost><VirtualHost *:80>ServerName sub.abc.netProxyRequests off<Proxy *>Order deny,allowAllow from all</Proxy><Location />ProxyPass http://localhost:3010/ProxyPassReverse http://localhost:3010/</Location></VirtualHost>

注意:在《VitrualHost》里设置的ServerName (域名)后面不要加/,曾经我犯的这个低级错误折腾了我一个下午。。。血的教训!!!!

1 0
原创粉丝点击