最近开始学习 Nodejs ,但是机子上已经有了 apache ,所以为了跑 Node ,要不就是停用 Apache 以使 Node 可以使用 80 端口,要不就是给 Node 使用另外的端口号,例如:8080,虽然,在本机上可以这么访问,但是如果放在公网上,让用户可以访问的话,如果不使用 80 端口,看起来总是不像一个可以实际使用的网站。可是如果 Node 使用 80 端口的话,就只能停掉 Apache 的网站,两者不能兼顾。那么有没有方法可以使 Node 和 Apache 在一个服务器上同时提供服务,并且都只使用域名而不用加端口号访问呢?答案是肯定的!
那么就来看,如何实现:
- 首先,在 Apache 的配置文件中,打开 mod_proxy 和 mod_proxy_http 至于其他的自己看着打开就好,例如需要 FTP 的话就打开相应的 FTP 选项。即:去掉 httpd.conf 中的
<pre class=“prettyprint”> LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so </pre>
这两行前面的 # 号即可。
-
配置虚拟主机,增加下面的代码: <pre class=“prettyprint”> <VirtualHost *:80> ServerName node.js ServerAlias www.node.js
ProxyRequests off
<Proxy *> Order deny,allow Allow from all </Proxy>
<Location /> ProxyPass http://localhost:8080/ ProxyPassReverse http://localhost:8080/ </Location> </VirtualHost> </pre> 此处 node.js 和 www.node.js 为绑定的要访问 Node 服务的域名。http://localhost:8080/ 为服务器上访问 Node 的网址和端口号,这里以 8080 为例。
-
打开你的 Node 服务,然后重启 Apache ,访问 node.js 这时候你就可以看到用 Node 提供服务的网站了。
其实原理就是使用 Apache 做代理服务器而已。
如果使用的是 Nignx 的话,也可以用同样的原理来实现,但是我只用了 Apache ,就没有尝试着去做 Nignx。当然了,其他服务器也一样。
nginx 也可
如果应用跑在 8888 端口下的话.
话说这些服务器配置跟具体跑的什么应用没关系, 只看域名到端口映射就好了.
mark 学习了
请问设置为node.js是什么意思呢? 我的外网机器是一台centos linux,没有域名,有公网ip地址。 现在也是面临楼主类似的问题,80端口被apache使用了,同时呢要弄一个nodejs server端,所以要做一个反向代理。 按照 Apache配置 httpd-vhosts.conf,配置无效。虽然httpd /S校验都通过了(几个module都重新编译过已经安装完毕)
NameVirtualHost *:80
<VirtualHost *:80>
ProxyRequests off
<Proxy *> Order deny,allow Allow from all </Proxy>
</VirtualHost>
@ghjan 你需要在系统的配置文件中配置127.0.0.1 www.node.js,即在hosts文件中如此即可访问了
mark一下
mark 收藏了,将要用到
mark一下,这个值得借鉴,马上就会用到了
LZ请问,我的apache是localhost,我的node是localhost:8080,我想让apache在localhost/node时访问localhost:8080,这样可以吗?
<pre class=“prettyprint”> </pre> apache会报错