我正在用不同的configurationtestingnginx,以取代使用squid + apache的架构。 我知道我可以使用nginx来pipe理静态请求和负载平衡,但是我对某个我不明白的解决scheme感兴趣:
我使用2个nginx服务器(平衡)与proxy_pass设置将所有请求传递给apache服务器。 当一个客户端向网站发出请求时,其中一个nginx服务器处理它并将其发送到apache服务器。 现在,这个行为如何能够改善我的系统呢?似乎所有的请求都是通过apache传递的,我看不出有什么好处。 当100个同时连接通过nginx时会发生什么? 100个连接将会去apache服务器,或者是某种内部的行为,允许一个小的影响到Apache?
当你的网站连接速度很慢时,Nginx可以帮助你的Apache。 例如nginx状态机架构不容易受到Slowloris DDoS http://isc.sans.org/diary.html?storyid=6601的影响 。
我知道nginx可以执行很多function,但是为什么不把这个架构的每一块都委托给那些做得很好的软件呢? 考虑这些部分的一些或全部:pound或haproxy用于反向caching代理的负载均衡,varnish或squid,以及后端的nginx和apache分别用于静态和dynamic内容(分别)。
这就是说,我不完全确定你的问题是什么。 你已经告诉nginx把所有的请求(我假设你的意思是不要caching)传递给apache的后端。 没有caching,好处就是将负载分布在后端的多个apache服务器上。 如果你只有一个后端apache服务器,那么你只能通过caching内容获得好处,而不是直接传递请求。
有关您的设置的更多细节,以及您想要做什么,将有所帮助。
同意 – 让nginx直接提供静态内容,Apache只需要处理PHP的东西 – 这意味着更less的Apache工作人员,这最终意味着更好的性能。
位置 / {
proxy_pass http:// backendwww;
}
位置〜* ^。+ \。(jpg | jpeg | gif | css | png | js | ico | html | swf | flv | mp3 | m4v)$ {
access_logclosures;
到期30天;
root / var / www / application_webroot;
error_page 404 = @fallback;
}
位置@fallback {
proxy_pass http:// backendwww;
}
location〜/\.ht {
否认一切;
}
同意Zero *,让enginx处理所有静态,然而,更简单的configuration只是将php传递给后端,而不是指定不传递给Apache / PHP的内容,例如:
location ~ .(php|phtml?)$ { proxy_pass http://backendwww ; }