没有端口号的nodejs域
我已经在VPS(Ubuntu 10.04)上部署了我的nodejs应用程序。 我已经在一个子域(subdomain.myapp.com:3000)上托pipe它,我只有一个IP地址
默认情况下,Apache默认使用80端口。 我只是希望我的应用程序应该在3000端口上运行,但URL应该是(subdomain.myapp.com)
这是可能的nodejs或我必须调整我的虚拟主机或Apache的文件。
对的,这是可能的
在你的apache虚拟主机文件中configuration如下
<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的默认configuration)
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
它必须在你的httpd.conf文件中
那么你应该重新启动Apache,它一定很好!
只需更新@drinchev与Apache 2.4的答案。*
启用代理模式:
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>
我需要做同样的事情和@ drinchev的答案几乎为我工作,但因为我在我的开发箱上运行几个虚拟主机,它不完全。 一些小小的调整阻止了我所有的其他鬼。
<Proxy *>
需要成为
<Proxy mynodejs.mydevbox.local>
和
<VirtualHost *:80>
需要成为
<VirtualHost mynodejs.mydevbox.local:80>
所以,我的本地开发机器名为“mydevbox.local”,我的节点vhost正在端口3000上进行侦听,我的最终configuration看起来更像是:
<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>
其他的鬼可以跟随