我在我的VPS服务器上使用cPanel Apache 2来托pipe端口80上的PHP / MySQL网站。
所以,假设我们有myphp.com,它可以正常工作。
现在我安装了Ruby / Rails / Passenger(带有Ruby Entreprise Edition的nginx),它在3000端口上运行良好。假设我有一个新的Ruby on Rails应用程序,并希望在myruby.com而不是myruby.com上托pipe它: 3000。
我应该如何做到这一点?
我在nginx中configuration一个域如下:
server { listen 3000; server_name www.myruby.com; root /home/myruby/public; passenger_enabled on; }
如果我将端口更改为80,那么它不起作用(显然与Apache冲突)。 请注意,我不会将myruby.com域添加到cPanel。
我有2个专用的IP地址。 我听说有两个IP可以解决这个问题。 但是,你如何指示cPanel的Apache只监听特定的IP? 另外,如果我将一个域指向我的服务器,我如何指示RoR域指向RoR IP?
为将来的参考谁试图运行cPanel的Apache和Ruby on Rails的Nginx。
1)像这样configurationnginx:
server { listen yourrubydomain.com:8001; server_name yourrubydomain.com; root /home/yourrubydomain/public; }
1)只需在cPanel中添加附加域2)login到FTP,导航到新添加的域的WWW目录3)创build一个.htaccess文件,内容如下:
RewriteRule ^“http://127.0.0.1:8001%{REQUEST_URI}”[P,QSA,L]
4)就是这样! 5)在你的第二个Ruby on Rails领域,不要忘记尝试一个不同于第一个的端口。 因此,例如,在mysecondrubydomain.com使用端口8002,而不是8001,在nginx和.htaccessconfiguration。
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
你去,了解mod_proxy和ProxyPass。
您可以告诉Apache仅在httpd.conf文件中的某些IP上侦听。 默认是可能的
Listen 80
将其更改为
Listen XXX:80
其中XXX是您希望apache监听的第一个IP。
然后你可以设置nginx来监听其他IP
listen YYY:80
或者,您可以将Apacheconfiguration为使用mod_proxy执行反向代理,以便某些域将转发到localhost:3000并使用nginx服务器。 但我认为上述解决scheme更好,因为它增加了系统的复杂性。
请注意,您可能会与更改cPanel,因为它会倾向于重新写入该文件升级时,或者您更改域时。