cPanel的Apache和nginx在同一台服务器上?

我在我的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,因为它会倾向于重新写入该文件升级时,或者您更改域时。