我最近一直在研究 Apache 和 Nginx 之间的差异,并且对我应该选择哪个感到困惑。
我做了一些搜索,但两者之间没有明确的比较,我想知道这里是否有人可以就两者之间的差异发表意见。
我目前的知识让我明白 mod_php 比 fastcgi 更快、更安全,但是 Apache 在同时连接和内存消耗方面要差得多。
我的网站使用了大量的长轮询,但有一个非 AJAX 网络基础(即 Apache 的顶部有长轮询)。
我对 Apache 内存问题的原始解决方案是通过 node.js 发送长轮询,然后让 node.js 每 2 秒访问一次 Apache,在这种情况下,Apache 不会有一个开放的连接,而是 node.js 会。我已经意识到这可能还不够好,正在寻找不同的解决方案。我仍然对我最初的想法是否可行很感兴趣。
那么哪个更适合现代网络?Apache 还是 Nginx?
更新:给出的所有建议都是好的和有效的。我已经采用了最初的第二个想法,即使用完整的 Nginx 服务器。我很满意作为专用服务器,我不会受到 fastcgi 的安全问题的困扰,并且由于我的长轮询脚本需要用 PHP 编写,我需要一个可以处理高负载同时连接的服务器,而 Apache 无论如何都无法做到这一点我改变了结构,它仍然会占用大量内存。
我已经标记了 Martin F 的答案,因为他对我的问题给出了如此清晰和完整的答案,我觉得他应该得到这个分数,但是,所有三个答案都很好且有效,并且肯定会考虑为我拥有的另一个网站使用反向代理因为我刚刚发现了 Nginx 可以在代理中做的非常非常酷的事情。
谢谢,
我想在我网站的特定子域上允许 1GB 上传,称为upload.xxx.xx.xx.
目前我正在尝试类似的东西:
server {
if ( $host = 'upload.xxx.xx.xx' ) {
client_max_body_size 1000M;
}
}
Run Code Online (Sandbox Code Playgroud)
但当然它给了我一个关于client_max_body_size不应该在那里的错误。
有没有办法在不复制两个vhosts 的情况下完成我想要的,否则所有设置都相同,或者另一方面,我不应该费心去确保用户只能在upload子域上上传大于 10MB 的文件?
我知道如何扫描一个目录:
clamscan -r /home
Run Code Online (Sandbox Code Playgroud)
但在我的生活中,我似乎无法让多个目录工作,而且我似乎无法通过谷歌搜索这个简单的问题。
我试过了:
clamscan -r /home /otherdir
clamscan -r /home,/otherdir
Run Code Online (Sandbox Code Playgroud)
无济于事。
我究竟做错了什么?