如何在 apache 服务器上部署 nodejs 应用?

2016-12-06 23:21:22 +08:00
 pysama

服务器是 apache 的,但我的应用是 nodejs 的。 apache 用了 80 端口, nodejs 只能用其他其他端口 我想到的方案是利用反向代理或者 url rewrite 来实现。

我根据我查询的资料,反向代理貌似只能将某个目录下的请求转发到另一个域名的资源,比如: www.A.com/f 代理到 www.A.com/Fantasy 。 由于我的应用是通过二级域名访问( app.A.com )。所以貌似没法使用反向代理。(当然也可能是我理解的不深入,或者资料不对)

我想到了有个叫 rewrite 的东西。大概就是通过正则将访问者的请求转发到另外的地址,并保持 url 不变。 比如通过一个正则,将 app.A.com 域名下的请求都转发到 localhost:3000

疑问:

请各位大神指点下,给个方向,我再去研究。谢谢

认真回复我的都走桃花运~~~2333

7027 次点击
所在节点    问与答
4 条回复
pysama
2016-12-06 23:43:13 +08:00
我错了
反向代理也可以将二级域名整理代理到其他地址的。但问题来了,主域名也被代理了。
我只想将 app.A.com 代理到 localhost:3000 ,但是 A.com 也被代理到了 localhost : 300 。

我的配置如下:

```
<VirtualHost *:80>
ServerName child.A.com
ServerAlias child.A.com
ProxyRequests off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
```
yangg
2016-12-07 08:05:24 +08:00
location 这个标签去掉,只要里面的?
yangg
2016-12-07 08:08:21 +08:00
另外 node 建议用 pm2 之类的工具
jianzhiyao020
2016-12-07 09:54:47 +08:00
httpd.conf 里面添加这个试试
<VirtualHost *:80>
ServerName app.A.com
ServerAlias app.A.com *.app.A.com
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ErrorLog logs/app.A.com-error_log
CustomLog logs/app.A.com-access_log common
</VirtualHost>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/325776

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX