技术解析

请问 nginx 比 apache 性能高为什么 apache 现在依然流行?
0
2021-05-20 23:26:02
idczone
抗投诉服务器
因为大多数网站没啥流量压力

一般动态请求要 apache 去做, nginx 静态和反代
分工不同,没有孰优孰劣

apache 可以直接当应用服务器,nginx 可不行,所以有时候 apache 比较方便
另外在直接静态文件 serve 的时候,nginx 的 index 页面对于长文件显示不全,而且这个貌似没法解决,所以有时候我们会因为这个去用 apache

百度: nginx vs apache
你希望我复制几条

nginx vs apache 功能和角色上都不在同一个级别,没可比性。
倒是 nginx vs lighthttpd 后者基本没什么优势但是还是有一定用户群。

因为大多数网站对性能没有那么的敏感, Apache 足够用而且很多功能比 Nginx 还方便

有了 某宝 为啥 还要有 某东

原因是网上各种教程都是基于 10 年前的 apache 的。
nginx 配置好多也是抄袭得不完整。

Nginx 在处理静态页面上比 Apache 有优势。
Nginx 的设计初衷是提供一种快速高效多并发的 web 服务。

大而全与小而精的区别,具体需要用哪个看需求,就像原来 IIS 也有市场不是。

比如 webdav 服务, apache 上很容易就搞定了

不同业务场景选择不同的 websever 呗 这个没有什么好纠结的

哪怕真的全面碾压了也会有大量的历史遗留. 而碾压本来就不存在, 特别是功能上.

抬头一看发现是 PHP 节点,于是就不好意思发表意见了

那是实验环境下的性能高,你跑真实生产环境,决定性能的基本都不是 web server

这是一个多元的世界

有常识云:离开剂量谈毒性都是耍流氓。
同样,离开 profiling 谈性能也是耍流氓。

有了 git 还要 svn 干什么

为什么有了更好看的 OS X 还有人用 W indows 。
为什么有了更开放的 Linux 还有人用 OS X 。
为什么有了垃圾回收的 Java 还有人用 C++ 。
为什么有了性能更好的 Golang 还有人用 Java 。
为什么有了 Pepsi 还有人喝 Coca Cola 。
为什么有了 Nike 还有人穿 Adidas 。
为什么有了猫咪还有人养狗狗 。
不能再举例了。
你想用 nginx 就去用,不用找一万个理由来说服自己。多研究些问题,少谈些主义。

“为什么有了 Pepsi 还有人喝 Coca Cola 。 ”
因为现在 Pepsi 越来越甜了,甜的无法忍了....

└(^O^)┘红红火火恍恍惚惚

为什么我觉得新的 apache 比 nginx 配置起来顺手的多……
a2ensite a2enmod 逻辑及其清晰 配置文件也非常清晰

我不知道为什么有人说 nginx 可以跑 PHP

因为 Pepsi 垃圾

长文件显示不全? 感觉你在搞笑

百事根本不配在可乐界混。

nginx 是处理静态内容的

哈哈 php 和 python 节点下的提问简直惨不忍睹
现在的“程序员”都不会搜索了

我没谈什么主义啊,感觉在 PHP 节点下提问题好奇怪啊,大多都带着火药味,不感兴趣的话完全可以不回答啊

我也感觉 PHP 节点很怪,要不是嘲讽要不是喷,没几个正经的

不可以 用的是 unixsocks 传递给 php-fpm 处理 然后把数据拿过来展现

节点被玩坏了。。。。
话说回来, apache httpd 的功能那一个全面啊,几乎可以干任何事情!而 nginx ,除了速度快效率高之外,就真没什么了,当然正是这一点,让他有了目前的地位。

说 nginx 动态不行的用过 lua 么

不妨试试新的 nginx 配置环境?
OpenResty 也是可以一战的。

难道不是吗? 我也想别人证明这是搞笑啊

我也是这么想的

因为懒

Apache 大而全, nginx 小而快, 不谈场景谈应用都是扯淡...

你闻到火药味是因为你的问题根本就是带有偏见的,你只是想找到同意你观点的人,而不是寻找问题的答案。

多研究些问题,少谈些主义。

你会给旧应用做移植吗? 移植后的好处很多能赚回开发成本吗? 事实是成品有了就懒得再动手了.

然而和我说的并没有关系。
我说的是功能,你说得是资历。

试着去 stackoverflow 问一下这种问题

资历很重要啊, 有多少不好的东西因为沉没成本早就投下去了, 所以根本换不掉, apache 还没有差到那个地步.
这里的经济帐不能单纯从技术上算. 经验中, 新系统的设计和实现(或者是成本等重要的因素)必须比旧的好 10 倍以上, 才能用一种有损兼容性的方法去更新. 如果旧系统有若干种能够维持兼容性的提升方法肯定会优先采用, 比如硬件升级, 虚拟化等等都能给旧系统延命, 延命后的系统也很难找到优秀 10x 以上的替代品.

如果我的表达让你感到偏见了,我深表歉意。但是我真的不是我为了找什么认同观点的人(我问题里有观点吗?),如果你觉得我在引战,你完全可以无视我的存在。最近由于工作需要刚开始做 PHP ,对于我无知还请原谅。但请不要带着偏见看待。我对 ve2x 不是熟悉(至少不常上),不知道 PHP 节点为什么会这样,所以请注意你的措辞。

英语水平有限,为什么不能再这问?

1. 不是所有公司的运维都懂 nginx, 尤其是中小型企业,或者说,相当一部分公司根本就没专职运维。能照着手册或者文档让 Apache 跑起来已经不容易了
2. 99%的网站(按数量算), Apache 和 nginx 的性能差距实际影响大约为 0 ,因为 PV 根本就没几个
3. Windows 下, Apache 比 nginx 好很多

够用,简单,在各种老版本的 linux 发布版基本都有 httpd 直接包管理安装,而不像 nginx 需要编译安装.

因为性能和流行程度没关系啊

你应该学一下 nginx 怎么用了。

让我想起了一句话 不是所有运维都懂 Apache 于是 IIS 风生水起

因为 apache 配置简单?
反正我用 nginx

因为中小站长多,因为中小站长写 php 的也多,

稳。线程安全。

别在网上乱找野鸡教程

不知道可不可以这样类推,真正有价值的东西都被少数人了解或拥有。



http://www.rbrussell.com/2014/12/10/nginx-display-full-filename-directory-listing/
这个问题要改 nginx 代码的,想我从来都是 apt-get 安装的不想去这么折腾

来来,找个野鸡教程给你看: http://unix.stackexchange.com/questions/145587/nginx-long-filenames-in-directory-listing

。。。醉了。。你开心就好

碰到这种问题我为什么要开心呢?

总之,有人找我推荐,我的原则就是:先参考你要跑的程序的兼容性。
其次,对于像我自己博客那种一天几个 pv 的情况,随意选择,喜欢哪个用哪个。
如果你的站流量较大, nginx 。
初学者,兼容性 ok 的情况下,还是建议试试 nginx ,毕竟配置比较简单,而且是未来的趋势。

看到星形头像想到是你,点开资料看到网址确认是你,打开网址,怀疑不是你,百度觅茶集,然后对比域名才发现一个 https 一个 http ,你微博好久没更新了

正好相反,当你觉得是好东西的时候别人早就发现了

你觉得,一个日 PV 不过十的小博客需要用 nginx 吗?
能照着 Apache 的手册把服务器配好我都觉得我很牛逼了!

原来我都这么高调引起过路人注意了?阿里 ACE 倒闭了,所以 SSL 去掉了。

好多人说漏一点,其实 Apache 与 Nginx 在实用性方面最大的区别是伪静态(url rewrite)的支持, Apache 在根目录放个.htaccess 就好了,而且这个.htaccess 还都是各个程序自带和标配的,而 nginx 需要修改 .conf 并且还不一定自带,还需要自己从.htaccess 转换格式。
光这一点上,起码在虚拟主机市场这块, Nginx 就无法占有。

233 所以我根本没说这个啊。

这不是伪静态支持,而是动态配置文件支持。
好处是灵活,坏处是需要不停扫描磁盘搜索.htaccess (因为有继承所以目录深的时候会大大影响效率)。

https://ooo.0o0.ooo/2016/06/08/57583899d6e66.jpg
https://ooo.0o0.ooo/2016/06/08/5758389aa4fbc.jpg

nginx 处理静态文件有优势
但是处理 php 并不比 Apache 好

po 主的 13 个帖子全是问题

嗯,说得不好。 不过这个方便性在虚拟主机里,无法替代啊,那个虚拟主机服务商能接受不单要手工加入 .conf 还得每次重启一次 Nginx 的事情,光重启 Nginx 就得让其他用户骂死了。 而虚拟主机份额又不少,就算不用 Apache 也得选择完全兼容 .htaccess 的,绝不会选择 Nginx 的

楼上有些怕是弄混了 apache httpd 和 apache tomcat , httpd 并没有渲染动态内容的能力

nginx -s reload apache 都能从容重启, nginx 怎么就不能呢

为什么你不想想虚拟主机的应用场景? 一台主机就一个用户? 不客气的说,上百个用户的不同网站在跑,某个用户的网站也许正在做交易,你服务器莫名其妙重启一次 Nginx ,这影响怎么算?

apache httpd 可以通过 mod_php 在同一个进程内运行 php 代码.

https://en.wikipedia.org/wiki/Apache_%28disambiguation%29

nginx 定位是 http 协议服务器而不是 web 服务器
因为架构不允许阻塞,所以开发上层服务会很困难,一般更多是是用做反代 /静态资源服务 /缓存
nginx 还可以反代 http 以外的协议,比如 smtp / pop3 / imap
而 apache 则是 http 和 web 服务器的整体,由于允许阻塞,可以直接支持 cgi ,开发上层服务自然是很容易, php 就是个典型
这两者其实并没有太大的可比性

楼主,别人老婆比你的漂亮,你怎么不去娶别人老婆!合适才是最重要!

不行吗

@xierch
https://ooo.0o0.ooo/2016/06/08/5758d3c7306f0.jpg
https://ooo.0o0.ooo/2016/06/08/5758d3c730408.jpg



nginx 确实是可以 reload 的,因为端口由 master 进程监听然后传递给 worker ,所以 reload 的时候是:
1. 用新配置启动新 worker
2. 确认新 worker 存活之后停止给旧 worker 派发请求
3. 等旧 worker 完成所有请求,退出
这样新旧交接是理论上无缝的
但是,这并不意味这 nginx 就可以用在虚拟主机里。别的不说,如果有个用户往自己的配置里加点料,谁都 reload 不了。虽然 reload 可以保证新 worker 的活的,但不能保证新 worker 配置合理。 htaccess 的优势就在于就算用户煞笔,不至于影响别人。

因为我一直是用 restart 而不是 reload 重置 Nginx ,可能这里理解有出入了。不过我的原意是明确,在虚拟主机市场上, Nginx 从来都不是选项,主机商就算不选用 Apache 也一定会选用能兼容 .htaccess 的。而对于市场份额占有来说,主机商选择与否是非常明显的。 Nginx 无法进入虚拟主机市场,份额可想而知。
.htaccess 好处就是傻瓜化自动化,.conf 修改需要一定权限,还需要检验,人肉成本也会增加。无法外包给客服公司去做,这对于像美帝这样硬件成本不值钱,人工成本高的国家是非常要命的。

因为看过你写的短网址那篇文章,就关注你的微博和网站了。

新的配置环境是指?

虽然我觉得有些回答很搞笑。这第一个 open topic?总能看到一些人说 Apache 动态处理比 nginx 好,给我个解释或者链接啊!我是个 new fish 啊!这里有很多 new fish 啊。抱歉,抱怨太多。我附上我找到的链接,https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations

apache 是先驱者,占领的市场份额是最高的,一些老项目所占比重较大, 但现在最新的高并发高流量项目的 技术选型的趋势一定是 nginx !

由于 php-fpm 内存泄漏和崩溃的问题,php 还是搭配 apache 更加稳定,而且网上的 php 入门教程也是 apache+php 的多

java、c++、node、go、python 现在一般都搭配 nginx 了

-

不过 V 站有多少人用 nginx + c 语言写的 so 来开发网站?

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服