1. Apache伺服器和nginx的優缺點: 我們之前大量使用Apache來作為HTTPServer。 Apache具有優秀的效能,而且透過模組可以提供各種豐富的功能。 1)首先Apache對客戶端的回應是支援並發的 ,運行httpd這個daemon進程之後,它會同時產生多個孩子進程/線程,每個孩子進程/線程分別對客戶端的請求進行回應; 2)另外,Apache可以提供靜態和動態的服務 ,例如對於PHP的解析不是通過性能較差的CGI實現的而是通過支持PHP的模組來實現的(通常為mod_php5,或者叫做apxs2)。 3)缺點: 因此通常稱為Apache的這種Server為process-based server ,也就是基於多進程的HTTPServer,因為它需要對每個使用者請求建立一個孩子進程/執行緒進行回應; 這樣的缺點是,如果並發的請求非常多(這在大型門戶網站是很常見的)就會需要非常多的線程,從而佔用極多的系統資源CPU和內存。因此對於並發處理不是Apache的強項。 4)解決方法: 目前來說出現了另一種WebServer,在並發方面表現更優越,叫做asynchronous servers非同步伺服器。最有名的為Nginx和Lighttpd。所謂的非同步伺服器是事件驅動程式模式的event-driven,除了使用者的並發請求通常只需要一個單一的或幾個執行緒。因此佔用系統資源就非常少。這幾種又被稱為lightweight web server。 舉例,對於10,000的並發連線請求,nginx可能只使用幾M的記憶體;而Apache可能需要使用幾百M的記憶體資源。 2. 實際中單一的使用: 1)關於單一使用Apache來作為HTTPServer的情況我們不用再多做介紹,非常常見的應用; 上面我們介紹到Apache對於PHP等伺服器端腳本的支援是透過自己的模組來實現的,而且效能優越。 2)我們同樣可以單單使用nginx或lighttpd來作為HTTPServer來使用。 nginx和lighttpd和Apache類似都透過各種模組可以對伺服器的功能進行豐富的擴展,同樣都是透過conf設定檔對各種選項進行設定。 對於PHP等,nginx和lighttpd都沒有內建的模組來對PHP進行支持,而是透過FastCGI來支援的。 Lighttpd透過模組可提供CGI, FastCGI和SCGI等服務,Lighttpd is capable of automatically spawning FastCGI backends as well as using externally spawned processes. nginx則沒有自己提供處理PHP的功能,需要透過第三方的模組來提供對PHP進行FastCGI方式的整合。 ------------------------------- rewrites 所有非http://bbs.it-home.org/的訪問=> http://bbs.it-home.org/ server_name web90.***.com; if ($host = "web90.***.com") { rewrite ^(.*)$ http://bbs.it-home.org/$1 permanent; } ---------------------------------nginx 停止/平滑重啟#p#分頁標題#e# nginx的訊號控制 TERM,INT 快速關閉 QUIT 從容關閉 HUP 平滑重啟,重新載入設定檔 USR1 重新開啟日誌文件,切割日誌時用途較大 USR2 平滑升級執行程式 WINCH 從容關閉工作流程 1) 從容停止: kill -QUIT Nginx主進程號 kill -QUIT '/usr/local/webserver/nginx/logs/nginx.pid' 2)快速停止: kill -TERM Nginx主進程號 kill -TERM '/usr/local/webserver/nginx/logs/nginx.pid' kill -INTN ginx主進程號 kill -INT '/usr/local/webserver/nginx/logs/nginx.pid' 3)強制停止所有nginx進程 pkill -9 nginx 1)平滑重啟 kill -HUP nginx主進程號 kill -HUP '/usr/local/webserver/nginx/logs/nginx.pid' -----------------------------nginx.conf #p#分頁標題#e# worker_processes 8; 指定工作衍生程序數 一般等於cpu的總核數或總核數的兩倍,例如兩個四核的cpu,總核數為8
複製程式碼🎜>} 複製碼🎜>
--------------nginx 設定 gzip壓縮
一般情況下壓縮後的html、css、js、php、jhtml等文件,大小能降到原來的25%,也就是說,原本一個100k的html,壓縮後只剩下25k。這無疑能節省很多頻寬,也能降低伺服器的負載。 在nginx配置gzip比較簡單 一般情況只要在nginx.conf的http段中加入下面幾行配置即可 引用 gzip on; gzip_min_length 1000; gzip_buffers 4 8k; gzip_types text/plain application/x-javascript text/css text/html application/xml; 重啟nginx 可以透過網頁gzip偵測工具來偵測網頁是否啟用了gzip http://gzip.zzbaike.com/ ---------------重定向nginx錯誤頁面的方法 error_page 404 /404.html; 這個404.html保證在nginx主目錄下的html目錄中即可,如果需要在出現404錯誤後直接跳到另一個地址,可以直接設定如下: error_page 404 http://bbs.it-home.org/ ; 同樣的方式可以定義常見的403、500等錯誤。 #p#分頁標題#e# 特別注意的是404.html檔案頁面大小要超過512k,不然會被ie瀏覽器替換為ie預設的錯誤頁面。 ------------------------------虛擬主機設定
|