天天看點

《高性能Linux伺服器建構實戰》——1.5節Nginx常用配置執行個體

1.5  nginx常用配置執行個體

nginx作為一個http伺服器,在功能實作方面和性能方面都表現得非常卓越,完全可以與apache相媲美,幾乎可以實作apache的所有功能。下面就介紹一些nginx常用的配置執行個體,具體包含虛拟主機配置、負載均衡配置、防盜鍊配置以及日志管理等。

1.5.1 虛拟主機配置執行個體

下面在nginx中建立3個虛拟主機,需要說明的是,這裡僅僅列出了虛拟主機的配置部分。

這裡用到了include指令,其中/opt/nginx/conf/vhosts/www.domain2.com.conf的内容如下:

1.5.2 負載均衡配置執行個體

下面通過nginx的反向代理功能配置一個nginx負載均衡伺服器。後端有3個服務節點,用于提供web服務,通過nginx的排程實作3個節點的負載均衡。

proxy_next_upstream用來定義故障轉移政策,當後端服務節點傳回500、502、503、504和執行逾時等錯誤時,自動将請求轉發到upstream負載均衡組中的另一台伺服器,實作故障轉移。最後通過include指令包含進來一個 proxy.conf檔案。

其中/opt/nginx/conf/proxy.conf的内容如下:

nginx的代理功能是通過http proxy子產品來實作的。預設在安裝nginx時已經安裝了http proxy子產品,是以可直接使用http proxy子產品。下面詳細解釋proxy.conf檔案中每個選項代表的含義。

proxy_set_header:設定由後端的伺服器擷取使用者的主機名或真實ip位址,以及代理者的真實ip位址。

client_body_buffer_size:用于指定用戶端請求主體緩沖區大小,可以了解為先儲存到本地再傳給使用者。

proxy_connect_timeout:表示與後端伺服器連接配接的逾時時間,即發起握手等候響應的逾時時間。

proxy_send_timeout:表示後端伺服器的資料回傳時間,即在規定時間之内後端伺服器必須傳完所有的資料,否則,nginx将斷開這個連接配接。

proxy_read_timeout:設定nginx從代理的後端伺服器擷取資訊的時間,表示連接配接建立成功後,nginx等待後端伺服器的響應時間,其實是nginx已經進入後端的排隊之中等候處理的時間。

proxy_buffer_size:設定緩沖區大小, 預設該緩沖區大小等于指令proxy_buffers設定的大小。

proxy_buffers:設定緩沖區的數量和大小。nginx從代理的後端伺服器擷取的響應資訊,會放置到緩沖區。

proxy_busy_buffers_size:用于設定系統很忙時可以使用的proxy_buffers大小,官方推薦的大小為proxy_buffers×2。

proxy_temp_file_write_size:指定proxy緩存臨時檔案的大小。

1.5.3 防盜鍊配置執行個體

nginx的防盜鍊功能也非常強大。在預設情況下,隻需要進行簡單的配置,即可實作防盜鍊處理。請看下面的這個執行個體:

在上面這段防盜鍊設定中,分别針對不同檔案類型和不同的目錄進行了設定,讀者可以根據自己的需求進行類似的設定。

“jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar”表示對以jpg、gif、png、swf、flv、wma、wmv、asf、mp3、mmf、zip和rar為字尾的檔案實行防盜鍊處理。

“*.ixdba1.net ixdba1.net”表示這個請求可以正常通路上面指定的檔案資源。

if{}中的内容的意思是:如果位址不是上面指定的位址就跳轉到通過rewrite指定的位址,也可以直接通過return傳回403錯誤。

要做更加複雜的防盜鍊處理,可以使用nginx的httpaccesskeymodule,通過這個子產品可以實作功能更強大的防盜鍊處理。更詳細的内容可參考官方文檔。

1.5.4 日志分割配置執行個體

nginx沒有類似apache的cronolog日志分割處理的功能,但是,可以通過nginx的信号控制功能的腳本來實作日志的自動切割。請看下面的一個執行個體。

nginx對日志進行處理的腳本。

将這段腳本儲存後加入到linux的crontab守護程序,讓此腳本在每天淩晨0點執行,就可以實作日志的每天分割功能了。

其中,變量savepath_log指定分割後的日志存放的路徑,而變量nglogs指定nginx日志檔案的存放路徑。最後一行,通過nginx的信号“usr1”實作了日志的自動切換功能。