(總結)Nginx與Apache、Tomcat、Resin動靜分離核心配置

PS:近來有幾個剛使用nginx的新童鞋老問我,nginx+fastcgi不夠穩定,偶爾出現502錯誤,怎麼解決?本人使用nginx也有3年多了,也認爲php-fpm模塊不夠穩定,在訪問量不大的時候沒事,訪問量增大時易出現502,當然這個還跟nginx的一些緩存設置和超時設置有關,設置不合理就易出現。php-fpm動態生成大型頁面也沒有優勢,有時候會使php-cgi進程變成殭屍進程。據說php 5.4版本已自帶php-fpm模塊,穩定性是否有改進?太新還沒用過,不評論。其實本人比較喜歡nginx跑靜態和做負載反向代理,動態php還是交給apache處理比較穩定,jsp就交給tomcat、resin或jboss。nginx跑靜態的能力是無與倫比的,是目前web服務器裏最強的。nginx和apache、tomcat、resin的動靜分離配置其實很簡單,就幾句配置,穩定性也非常好。

1、nginx和apache的動靜分離配置:

把下面配置放到nginx配置文件相應的server { }裏面,如果使用其他端口號,改一下就行:

#所有php的動態頁面均交由apache處理
location ~ .(php)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:88;
}
#所有靜態文件由nginx直接讀取不經過apache
location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
{ expires 15d; }
location ~ .*.(js|css)?$
{ expires 1h; }

如果之前設置了FastCGI的,把下面的配置註釋掉:


# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ .php$ {
# root /var/www/html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# include fastcgi.conf;
#}

重啓nginx就生效

 

2、nginx和tomcat、resin的動靜分離配置:

同上,把下面配置放到nginx配置文件相應的server { }裏面:

#所有jsp的頁面均交由tomcat或resin處理
location ~ .(jsp|jspx|do)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
#所有靜態文件由nginx直接讀取不經過resin
location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
{ expires 15d; }
location ~ .*.(js|css)?$
{ expires 1h; }

更多的nginx配置和模塊詳解請參考官方wiki:http://wiki.nginx.org/Main

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章