nginx學習(2)

本篇來學習一下nginx的相關(guān)配置。

#user? nobody? ;指定用戶。如不指定就是nobody。指定用戶有什么意義呢?主要是指定nginx worker process的用戶。linux中所有程序都是文件,都具有權(quán)限問題。這個指定的用戶對特定的文件有沒有權(quán)限訪問或執(zhí)行,就是這個用戶的意義。

worker_processes? 1; ?工作進程的數(shù)量,根據(jù)硬件設(shè)置,通常是CPU的個數(shù)或2倍于CPU

#error_log? logs/error.log; ?錯誤日志的存放路徑

#pid logs/nginx.pid ?pid(進程標識符)的存放路徑

events {

worker_connections? 1024;

} 事件類型? 這里面會有很大選項,比如:use epoll,使用epoll的IO模型,linux推薦使用這種。FreeBSD建議采用kqueue,window下不指定;

worker_connections 204800 每個進程的最大連接數(shù),根據(jù)硬件調(diào)整

open_file_cache max=65535 inactive=60s;? 這個將為打開文件指定緩存,默認是沒有啟用的,max指定緩存數(shù)量,建議和打開文件數(shù)一致,inactive是指經(jīng)過多長時間文件沒被請求后刪除緩存。

open_file_cache_valid 80s;

這個是指多長時間檢查一次緩存的有效信息


##設(shè)定http服務(wù)器,利用它的反向代理功能提供負載均衡支持

http

{

include mime.types; ?設(shè)定mime類型,類型由mime.type文件定義

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status?$body_bytes_sent?"$http_referer"?'

'"$http_user_agent"?"$http_x_forwarded_for"';

log_format?log404 '$status?[$time_local]?$remote_addr?$host$request_uri?$sent_http_location';

$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址;

$remote_user:用來記錄客戶端用戶名稱;

$time_local:?用來記錄訪問時間與時區(qū);

$request:?用來記錄請求的url與http協(xié)議;

$status:?用來記錄請求狀態(tài);成功是200,

$body_bytes_sent?:記錄發(fā)送給客戶端文件主體內(nèi)容大?。?/p>

$http_referer:用來記錄從那個頁面鏈接訪問過來的;

$http_user_agent:記錄客戶瀏覽器的相關(guān)信息;

通常web服務(wù)器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務(wù)器的iP地址。反向代理服務(wù)器在轉(zhuǎn)發(fā)請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務(wù)器地址。

access_log? logs/host.access.log? main;

access_log??logs/host.access.404.log??log404;

用了log_format指令設(shè)置了日志格式之后,需要用access_log指令指定日志文件的存放路徑

client_max_body_size 300m;

設(shè)定通過nginx上傳文件的大小

sendfile on;

sendfile指令指定?nginx?是否調(diào)用sendfile?函數(shù)(zero?copy?方式)來輸出文件,對于普通應(yīng)用,必須設(shè)為on。如果用來進行下載等應(yīng)用磁盤IO重負載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)IO處理速度,降低系統(tǒng)uptime。

tcp_nopush on;

此選項允許或禁止使用socke的TCP_CORK的選項,此選項僅在使用sendfile的時候使用

proxy_send_timeout 180;

后端服務(wù)器數(shù)據(jù)回傳時間_就是在規(guī)定時間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù)

proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

#設(shè)置內(nèi)存緩存空間大小為200MB,1天沒有被訪問的內(nèi)容自動清除,硬盤緩存空間大小為30GB。

keepalive_timeout?120;

keepalive超時時間。

client_body_buffer_size 512k;

如果把它設(shè)置為比較大的數(shù)值,例如256k,那么,無論使用firefox還是IE瀏覽器,來提交任意小于256k的圖片,都很正常。如果注釋該指令,使用默認的client_body_buffer_size設(shè)置,也就是操作系統(tǒng)頁面大小的兩倍,8k或者16k,問題就出現(xiàn)了。

無論使用firefox4.0還是IE8.0,提交一個比較大,200k左右的圖片,都返回500?Internal?Server?Error錯誤

proxy_intercept_errors?on;

表示使nginx阻止HTTP應(yīng)答代碼為400或者更高的應(yīng)答。

##配置虛擬機

server

{

listen?80;

配置監(jiān)聽端口

server_name?image.***.com;

配置訪問域名

location?~*?\.(mp3|exe)$?{

對以“mp3或exe”結(jié)尾的地址進行負載均衡


proxy_pass http://img_relay$request_uri;

設(shè)置被代理服務(wù)器的端口或套接字,以及URL

proxy_set_header?Host?$host;

proxy_set_header?X-Real-IP?$remote_addr;

proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;

以上三行,目的是將代理服務(wù)器收到的用戶的信息傳到真實服務(wù)器上

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容