Apache 和 Nginx 都在端口 80 [关闭]

Posted

技术标签:

【中文标题】Apache 和 Nginx 都在端口 80 [关闭]【英文标题】:Apache and Nginx both on port 80 [closed] 【发布时间】:2012-12-15 00:51:50 【问题描述】:

我正在尝试在我当前安装并运行 Apache httpd 的云 Cent OS 服务器上安装 nginx

我的托管公司告诉我,Nginx 和 Apache 可以同时在 80 端口上运行,所以我的计划是在通过 Yum 安装之后,将 Wordpress 网站的 .htaccess 和 Apache conf 转换为 Nginx。

我也在谷歌上搜索过,有些人建议使用 Nginx 作为反向代理并仅提供静态文件,但使用 php 运行 Apache,因为 Apache 嵌入了 PHP,并且即使它不支持像 Nginx 这样的多个并发请求也会消耗更少的内存.

我的直觉是,将所有东西都切换到 Nginx 会是有益的,但目前还不确定。

另外,在切换时有什么需要注意的吗?

如果是你,你会怎么做?

【问题讨论】:

我以前运行 Apache,然后切换到 Nginx,php 和静态文件的速度差异很大。 Nginx 运行速度更快。 没有运行 2 个服务在同一个端口上监听的事情。可以在不同网络接口上的端口 80 上运行,但不能在同一个接口上运行(也就是每个服务都必须侦听不同的 ip。) 托管公司告诉我 Nginx 和 Apache 可以同时在端口 80 上运行...至少对我来说这是一个新的。 是时候找一家新的托管公司了。如果它们在不同的 IP 地址上是可能的(不仅仅是接口@Xnoise),但不可能让两个服务在同一个 IP 和同一个端口上侦听(你怎么知道哪些流量是针对哪个的?)跨度> 所有站点都在唯一的 IP 地址下,并且它们都与 VirtualHost 单独映射。我可以在端口 80 上同时运行并为我要传输的站点删除 Virtualhost 并在 Nginx 配置中配置它吗? 【参考方案1】:

我不太确定您的托管公司的评论是什么意思,但是您将无法在端口 80 上同时运行 Apache 和 Nginx。一旦绑定到端口 80,另一个将无法绑定到它.

在您目前的情况下,最好的配置可能是将 Nginx 放在端口 80 上,将 Apache 放在 8000 或类似端口上。

使用 nginx 提供静态文件(请参阅 try_files,因为 "if" is evil),然后使用 HTTP proxy module 将所有 PHP 请求代理到端口 8000。

PHP 与 Nginx 的另一个常见配置是通过 FastCGI 使用 PHP-FPM 和代理,只需 google “PHP-FPM Nginx Your OS tutorial”获取教程。

much debate 关于 PHP-FPM/mod_php 的性能,但根据我的个人经验,我发现 PHP-FPM 的性能更高。

【讨论】:

我同意,PHP-FPM 在我的服务器上比 mod_php 快得多。 @Thom Seddon:谢谢。对于任何一种缓存方法(例如 APC)的转换是否还有其他含义?因为它是一个 PHP 包,它不会有任何影响吗? 你说的很对,因为它是一个 PHP 扩展,它不会有什么不同。我能想到的唯一区别是 mod_php 确实公开了一些额外的 PHP 函数 (php.net/manual/en/ref.apache.php) 但你绝对可以在没有它们的情况下工作(PHP 5.4 实际上将其中一些带入核心,因此它们始终可用,例如 php.net/manual/en/function.apache-request-headers.php ) 除非每个服务都附加到不同的 IP。那么 Apache 和 Nginx 都可以使用 80 端口。【参考方案2】:

我将使用 nginx 作为端口 80 上的面向 Web 的服务器,并将代理传递给将在不同端口上运行的 apache。许多站点运行此配置。使用 nginx 提供静态文件比使用 apache 更有效。它实际上比听起来要简单得多。

This document详细讲解。

【讨论】:

TRENT 您的链接目前已损坏。你知道内容转移到哪里了吗?您是否可以在答案中总结该内容?【参考方案3】:

您应该将面向外部的网络服务器绑定到公共 IP 地址,将面向内部的网络服务器绑定到 localhost (127.0.0.1:80)。

因此,如果您公开使用 Nginx,则将其绑定到公共 IP 地址,并将其代理到本地主机上的 Apache。

最好使用单独的端口,以便于调试。

【讨论】:

你能准确解释一下如何做到这一点吗?

以上是关于Apache 和 Nginx 都在端口 80 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何让iis和apache公用80端口或者有其他更好的方法? - 技术问答

nginx80端口被占用,启动失败。

iis服务与apache 80端口冲突了怎么办

phpstudy刚启动apache就关闭

求iis与apache共用80端口方法的详细方法

Apache的网站,使用Nginx进行反向代理(1个IP绑定多个域名,对应多个网站)解决方案