Articles of apache2

Apache中worker和prefork MPM的nginx是什么?

我正认真考虑从Apache转换到nginx,我想更好地理解nginx – 我也不是Apache大师,所以我想我会在这些问题的答案中学习更多关于Apache的知识。 我认为从我的问题中可以明显看出,我在这方面确实有很多要学习,可能已经被误解了很多。 但这就是为什么我问: 那么nginx有没有相当于Apache的prefork MPM? 如果是这样,那么nginx与worker MPM有什么不同呢? 而如果它像工人MPM那么为什么不会有同样的担心线程安全,使人们不使用Apache的mod_php与工人MPM? 如果一个进程是一个OS进程,并且一个进程可以有多个线程(类似于Java,其中java可执行文件是单个进程,并且可以启动多个线程),那么请求如何适合这个模型呢? 我知道一个客户端请求不会导致一个新的操作系统进程与nginx,但是它会导致一个新的线程或一个线程可以处理多个同时请求? 或者,如果没有,那么多个顺序连接,当一个线程完成一个请求,它可以处理另一个? “请求”和“连接”之间的关系是什么? 如果客户端发出10个请求,这10个连接,还是1个连接? 连接持续多久? 我意识到,如果一个客户端在一个月的时间内发出了10个请求,那么这些请求可能是同一个会话的一部分(如果会话cookie仍然存在),但肯定不会是相同的连接。 那么,为什么构成连接的线路在哪里? 从nginx使用PHP有什么不同的方法? 除非我错了,Apache有3(mod_php,mod_fastcgi和mod_fcgid)。 对于nginx我听说过PHP-FPM和FastCGI。 还有其他的select,或者这些是唯一的两种方式,如果有的话,它们又有什么不同? 我一直在阅读PHP-FPM是做FastCGI的另一种方式 ,所以我不确定它们有什么不同。 如果有10个客户端连接到访问PHP页面的服务器,那么如果使用nginx运行“top”命令,我会看到多less个进程,他们将被命名为什么? (我想,答案取决于对前一段中问题的回答。)如果这是Apache prefork MPM和mod_php,如果我理解正确,那么我认为运行'top'时会看到10个httpd进程。 现在我的服务器上有多less个端口被占用? 之前它只是Apache的80端口。 现在我想象一下nginx将会有80端口,另外还有一些其他的端口用于nginx与实际处理PHP的东西进行通信。 究竟是运行PHP的东西,是'PHP'可执行文件,还是'FastCGI',还是其他的东西? 所以如果nginx被configuration为使用多个“后端”PHP处理器(这是可能的?)将有多less个APC实例? 那么来自nginx的请求将如何传递给它们(例如,它会使用会话cookie将同一用户发送回同一个PHP处理器?) 我知道这么多的问题,但希望有一些真正了解这一切的人也能帮助我理解。 我真的很想! 谢谢。

HTTP基本authentication,读取密码文件和性能

我很想知道在Apache或者lighttpd或者nginx这样的web服务器上使用HTTP Basic Auth的性能影响是什么。 我想象的瓶颈是服务器实际读取文件来validation用户。 在我看来,阅读文件来validation用户的成本与该文件中的用户数量成正比。 我有的问题是: 1.是否有特定数量的用户在基本身份validation通过文件开始大幅下降,或者是线性相对于文件中的用户数量? 2.鉴于http的无状态性质,如果用户已经通过Web服务器的HTTP基本身份validation在一个请求上进行了身份validation: – 是否只是在每个请求中转发凭据,Web服务器必须每次parsing密码文件以确定这是否是来自有效用户的请求? 要么 – 在后续的请求中获取它在http头中使用的令牌,从而允许服务器避免再次parsing密码文件? 提前致谢

关于nginx给Apache2多less内存占用减less?

我想知道是否将Apache2 + Passenger的Rails应用程序移植到Nginx + Passenger是值得的。 我们这样做的主要原因是释放RAM或处理给定数量的RAM的更多请求。 有谁知道Nginx + Passenger在使用RAM时效率如何?

设置Apache + Nginx的后端设置

backend default { .host = "localhost"; .port = "8080"; } 在清漆configuration,什么端口应该分配? 我在后端使用Apache来监听1740 ,Nginx正在使用proxy_pass监听80到上游127.0.0.1:1740 。

如何replaceHTTP请求URI中的特殊字符?

在基于Zend Framework 2的网站上(在nginx上的testing环境和Apache上的实时环境),有一个“课程”类别,它的页面具有这样的URI: domain.tld/courses/123-Name of course that can contain ®, €, (, ), and other special chars 课程名称来自数据库,并且是内部链接的URL编码: domain.tld/courses/123-Name%20of%20course%20that%20can%20contain%20%C2%AE%2C%20%E2%82%AC%2C%20%C3%A4%2C%20(%2C%20)%2C%20and%20other%20special%20chars 这工作正常,但是当我尝试访问一个页面使用特殊的字符而不编码404错误发生。 一个使用空间字符的网站的例子是维基百科。 您可以使用 http://en.wikipedia.org/wiki/Signal_(electrical_engineering) 要么 http://en.wikipedia.org/wiki/Signal_%28electrical_engineering%29 并总是得到你想要的网页。 有人知道,如何实现这样的行为(“维基百科”)? (也许用HTTPredirect.htaccess规则?) 更新: 的/ etc / nginx的/ AX-共同的虚拟主机 server { listen 80; server_name foo.loc bar.loc baz.loc ; if ($host ~ ^(?<project>.+)\.(?<area>.+)\.loc$) { set $folder "$area/$project"; } access_log /var/log/nginx/$area/$project.access.log; error_log […]

什么是Apacheconfiguration的等效值

我需要将下面的nginx规则转换为Apacheconfiguration。 谁能帮我。 location /chat { rewrite /chat(/.+)$ $1 break; proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header Cookie $http_cookie; proxy_buffering off; proxy_send_timeout 310; }

与PDF和PHP的Apache2 errror

我几个星期以来一直在试图找出这个错误的原因 – 而且我已经空白了。 系统使用PHP来生成dynamic的.pdf文件。 我有三个服务器:开发(与Apache2的Win7的),testing(Ubuntu的10.4与Nginx的),和实时(Ubuntu10.10与Nginx的)。 所有运行的php5和我开发的系统 – 相同的代码。 等同的,相同的configuration。 我有很多浏览器,我testing过的东西:DevIE(win7,IE8),DevFF(Win7 Firefox 3.5),DevSaf(win,Safari),LaptopFF(WinXP,Firfox 3.5),笔记本IE(WinXP,IE8testing(Unbuntu FF3。 5)和用户(主要是Win 7和Win XP上的IE8)。 当我从Test生成PDF时,它在所有浏览器(除了我无法testing的用户除外)中都能正常工作。 当我从Dev生成一个PDF时,它从DevIE,DevFF和DevSaf中失败,但是从testing工作中调用它。 Apache2总是在同一台机器上失败。 从笔记本电脑,使用FF成功,并使用IE8失败(见下文)。 用户正在报告间歇性问题。 它失败了,然后重复请求并成功。 当它失败…. 显示生成的PDF的日志,以200 OK的结果发送正确的大小回复(500KB到1.8MB)。 有时会在大约10秒钟后重复相同的URL,但是这会生成login屏幕(同样是200 OK回复),但只有2K的大小。 这意味着它被要求没有cookie。 Adobe Reader尝试显示login页面,不可避免的"This file does not start with "%PDF-"错误消息。 除了当我尝试用笔记本电脑和IE8 – 然后它显示源代码显示一个空的4行HTML文件失败! 这个系统已经工作了一年多了,而且大概两个月前才开始更换生产服务器。 testing版本在这个时候没有改变,但也开始失败。 我已经尝试了各种各样的标题,但没有任何我已经尝试有所作为。 当前的标题集是: header('Content-Disposition: inline; filename="'.$this->pdfFilename().'"'); header('Content-type: application/pdf'); header("Pragma: public"); $when = date('r',time()+20); // […]

几个例子(fastcgi / uwsgi / scgi / proxy_pass)在同一个nginx虚拟主机中的Mojolicious应用?

我有一些基于Mojolicious的应用程序,它们使用mod_cgi和mod_fastcgi快速运行在Apache2下。 例如: http://example.org/oneapp/path/info?foo=bar http://example.org/oneapp?foo=bar http://example.org/secondapp/path/info?foo=bar http://example.org/thirdapp/path/info?baz=heh #etc… 我相对成功地将应用程序configuration为使用proxy_pass的子域名,但是我想保留旧的URL(只需从apache2切换到nginx)。 我想保持相同的URL,但使用nginx运行应用程序。 我的configuration应该是什么样的,我该如何运行应用程序。 提前致谢!

Magento:Lighttpd vs Nginx

我在我所有的Magento安装中使用Apache。 我想知道是否应该开始使用Lighttpd或Nginx来提高性能。 你怎么看? 编辑1 我已经看到: nginx: http : //www.magentocommerce.com/wiki/1_-_installation_and_configuration/configuring_nginx_for_magento lighttpd: http : //www.magentocommerce.com/wiki/1_-_installation_and_configuration/installing-with-lighttpd-and-fastcgi

自定义etag生成

我怎样才能configuration一个Apache或nginx服务器使用我select的algorithm(即不涉及inode,mtime或大小)发送Etag头? 有没有其他的编译新的C模块?