nodejs域没有端口号

时间:2013-01-13 12:56:28

标签: node.js url port

我已经在VPS(ubuntu 10.04)上部署了我的nodejs应用程序。我已将其托管在子域(subdomain.myapp.com:3000)上,我只有一个IP地址

默认情况下,apache默认使用端口80。我只是希望我的应用程序应该在端口3000上运行,但URL应该是(subdomain.myapp.com)

这在nodejs中是可行的还是我必须调整我的虚拟主机或apache的文件。

3 个答案:

答案 0 :(得分:15)

是的,有可能

在您的apache虚拟主机文件中配置以下

<VirtualHost *:80>
    ServerName subdomain.myapp.com

    ProxyRequests off

    <Proxy *>
            Order allow,deny
            Allow from all
    </Proxy>

    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    ProxyPreserveHost on
</VirtualHost>

你应该

NameVirtualHost *:80

在您的文件顶部以及为apache安装的代理模块(我认为它是ubuntu的默认配置)

LoadModule proxy_module lib/httpd/modules/mod_proxy.so

它必须在你的httpd.conf文件中

然后你应该重新启动apache,一定很好!

答案 1 :(得分:3)

使用 Apache 2.4。*

更新@drinchev答案

启用代理模式:

a2ensite proxy_http
a2ensite proxy

然后:

<VirtualHost *:80>
    ServerName subdomain.myapp.com

    ProxyRequests off

    <Proxy *>
            Require all granted
    </Proxy>

    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    ProxyPreserveHost on
</VirtualHost>

答案 2 :(得分:0)

我需要做同样的事情,@ drinchev的回答几乎对我有用,但是因为我在我的开发盒上运行了几个vhosts它并不完全。一些小的调整使它不会破坏我所有的其他虚拟对象。

<Proxy *>

需要

<Proxy mynodejs.mydevbox.local>

并且

<VirtualHost *:80>

需要

<VirtualHost mynodejs.mydevbox.local:80>

因此,我的本地开发机器命名为“mydevbox.local”而我的节点vhost正在侦听端口3000,我的最终配置看起来更像:

<VirtualHost mynodejs.mydevbox.local:80>
    DocumentRoot "/Library/WebServer/Documents/mynodejs"
    ServerName mynodejs.mydevbox.local
    ServerAlias mynodejs.mydevbox.local

    ProxyRequests off

    <Proxy mynodejs.mydevbox.local>
            Order allow,deny
            Allow from all
    </Proxy>

    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    ProxyPreserveHost on
    ErrorLog "/private/var/log/apache2/mynodejs_error_log"
    CustomLog "/private/var/log/apache2/mynodejs_access_log" common
</VirtualHost>

<VirtualHost myothervhost.mydevbox.local:80>
    DocumentRoot "/Library/WebServer/Documents/myothervhost"
    ServerName myothervhost.mydevbox.local
    ServerAlias myothervhost.mydevbox.local
    ErrorLog "/private/var/log/apache2/myothervhost_error_log"
    CustomLog "/private/var/log/apache2/myothervhost_access_log" common
</VirtualHost>

其他vhost可以跟随