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

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

我在我的 VPS 服务器上使用 cPanel Apache 2 在端口 80 上托管 PHP/MySQL 网站。

假设我们有 myphp.com,它可以正常工作。

现在我安装了 Ruby / Rails / Passenger 和 nginx(也是 Ruby Entreprise Edition),它们在端口 3000 上运行良好。假设我有一个新的 Ruby on Rails 应用程序,并且想将其托管在 myruby.com 上,而不是 myruby.com:3000。

我该如何实现这一点?

我在 nginx 中配置域如下:

server {
   listen 3000;
   server_name www.myruby.com;
   root /home/myruby/public; 
   passenger_enabled on;
}

如果我将端口更改为 80,则它不起作用(显然与 Apache 冲突)。请注意,我没有将 myruby.com 域添加到 cPanel。

我有 2 个专用 IP 地址。我听说使用 2 个 IP 可以解决这个问题。但是如何指示 cPanel 的 Apache 仅监听特定 IP?此外,如果我将域指向我的服务器,如何指示 RoR 域指向 RoR IP?

答案1

供将来尝试使用 nginx 运行 cPanel Apache 和 Ruby on Rails 的人参考。

1)像这样配置nginx:

server {
    listen yourrubydomain.com:8001;
    server_name yourrubydomain.com;
    root /home/yourrubydomain/public; 
}   

1) 只需在 cPanel 中添加附加域 2) 登录 FTP,导航到新添加域的 WWW 目录 3) 创建一个包含以下内容的 .htaccess 文件:

重写规则 ^ “http://127.0.0.1:8001%{REQUEST_URI}” [P,QSA,L]

4) 就是这样! 5) 在您的第二个 Ruby on Rails 域中,不要忘记尝试与第一个不同的端口。例如,在 mysecondrubydomain.com 上使用端口 8002,而不是 8001,无论是在 nginx 还是 .htaccess 配置中。

答案2

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

好了,现在来了解 mod_proxy 和 ProxyPass。

答案3

您可以在 httpd.conf 文件中告诉 Apache 只监听某些 IP。默认值可能是

Listen 80

将其更改为

Listen XXX:80

其中 XXX 是您希望 apache 监听的第一个 IP。

然后你可以设置 nginx 来监听另一个 IP

listen YYY:80

或者,您可以配置 Apache 使用 mod_proxy 进行反向代理,以便某些域将转发到 localhost:3000 并使用 nginx 服务器。但我认为上述解决方案更好,因为它增加了系统的复杂性。

请注意,您可能会在更改时与 cPanel 发生冲突,因为它会在升级或您对域名进行更改时重写该文件。

相关内容