日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Linux學習筆記_Nginx配置詳解

 JhouShuai 2015-05-13

Nginx是由俄羅斯軟件工程師IgorSysoev開發(fā)的一個高性能的HTTP和反向代理服務(wù)器,具備IMAP/POP3和SMTP服務(wù)器功能。Nginx最大的特點是對高并發(fā)的支持和高效的負載均衡,在高并發(fā)的需求場景下,是Apache服務(wù)器不錯的替代品。目前,包括新浪、騰訊等知名網(wǎng)站已經(jīng)開始使用Nginx作為Web應(yīng)用服務(wù)器。

Nginx配置一個神奇的Web服務(wù)器,我們在使用的時候有不少需要注意的,接下來我們就看看如何才能簡單明了的進行Nginx服務(wù)器的配置。

#運行用戶
 user nobody nobody;
#啟動進程,根據(jù)硬件調(diào)整,大于等于cpu核數(shù)
 worker_processes 2;
#指定進程可以打開的最大描述符
 worker_rlimit_nofile 204800;
這個指令是指當一個nginx進程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開文 件數(shù)(ulimit -n)與nginx進程數(shù)相除,但是nginx分配請求并不是那么均勻,所以最好與ulimit -n 的值保持一致。 現(xiàn)在在linux 2.6內(nèi)核下開啟文件打開數(shù)為65535,worker_rlimit_nofile就相應(yīng)應(yīng)該填寫65535。這是因為nginx調(diào)度時分配請求到進程并不是那么的均衡,所以假如填寫10240,總并發(fā)量達到3-4萬時就有進程可能超過10240了,這時會返回502錯誤。

#全局錯誤日志[debug|info|notice|warn|error|crit]及PID文檔位置
 error_log logs/error.log notice;
 pid logs/Nginx.pid;

 events {
 use epoll;

#使用epoll的I/O 模型
補充說明: 與apache相類,nginx針對不同的操作系統(tǒng),有不同的事件模型
A)標準事件模型
Select、poll屬于標準事件模型,如果當前系統(tǒng)不存在更有效的方法,nginx會選擇select或poll
B)高效事件模型
Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用雙處理器的MacOS X系統(tǒng)使用kqueue可能會造成內(nèi)核崩潰。
Epoll:使用于Linux內(nèi)核2.6版本及以后的系統(tǒng)。
/dev/poll:使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
Eventport:使用于Solaris 10. 為了防止出現(xiàn)內(nèi)核崩潰的問題, 有必要安裝安全補丁

 worker_connections 1024;
#工作進程的最大連接數(shù)量,根據(jù)硬件調(diào)整,和前面工作進程配合起來用,盡量大,但是別把cpu跑到100%就行
每個進程允許的最多連接數(shù), 理論上每臺nginx服務(wù)器的最大連接數(shù)為worker_processes*worker_connections
}

#設(shè)定http服務(wù)器,利用他的反向代理功能提供負載均衡支持
 http {
#設(shè)定mime類型
 include conf/mime.types;
 default_type application/octet-stream;

#設(shè)定日志格式
 log_format main '$remote_addr - $remote_user [$time_local] '
 '"$request" $status $bytes_sent '
 '"$http_referer" "$http_user_agent" '
 '"$gzip_ratio"';
 log_format download '$remote_addr - $remote_user [$time_local] '
 '"$request" $status $bytes_sent '
 '"$http_referer" "$http_user_agent" '
 '"$http_range" "$sent_http_content_range"';

$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址;
$remote_user:用來記錄客戶端用戶名稱;
$time_local: 用來記錄訪問時間與時區(qū);
$request: 用來記錄請求的url與http協(xié)議;
$status: 用來記錄請求狀態(tài);成功是200,
$body_bytes_s ent :記錄發(fā)送給客戶端文件主體內(nèi)容大??;
$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ù)器地址;

#設(shè)定請求緩沖
 client_header_buffer_size 1k;
 large_client_header_buffers 4 4k;

#關(guān)閉報錯時的Nginx版本顯示
 server_tokens off;

 sendfile on;  #打開系統(tǒng)函數(shù)sendfile()支持
 tcp_nopush on;   #防止網(wǎng)絡(luò)阻塞
 tcp_nodelay on;   #防止網(wǎng)絡(luò)阻塞
 keepalive_timeout 65;
#上述四項可以有效提高文件傳輸性能
 
 fastcgi_connect_timeout 300;
 fastcgi_send_timeout 300;
 fastcgi_read_timeout 300;
 fastcgi_buffer_size 64k;
 fastcgi_buffers 4 64k;
 fastcgi_busy_buffers_size 128k;
 fastcgi_temp_file_write_size 128k;

 #設(shè)置上述數(shù)值設(shè)置太小時若負載上來時可能報 502 Bad Gateway
 
#開啟gzip模塊
  gzip on;
  gzip_min_length 1k;   
#最小壓縮文件大小
  gzip_buffers 4 16k;   #壓縮緩沖區(qū)
  gzip_http_version 1.0;   #壓縮版本(默認1.1,前端為squid2.5使用1.0
  gzip_comp_level 2;   #壓縮等級
  gzip_types text/plain application/x-javascript text/css application/xml;
  #壓縮類型,默認就已經(jīng)包含text/html 所以下面就不用再寫了,當然寫上去的話,也不會有問題,但是會有一個warn

     gzip_vary on; #此選項可讓前端的緩存服務(wù),如squid緩存經(jīng)過nginx壓縮的數(shù)據(jù)
    #該選項在做反向代理時設(shè)定壓縮,后面參數(shù)為驗證的header頭信息,再做相應(yīng)的壓縮處理,關(guān)閉為off
    #gzip_proxied expired no-cache no-store private no_last_modified no_etag auth any
 #設(shè)定access log
 access_log logs/access.log main;

 client_header_timeout 3m;
 client_body_timeout 3m;

 
#設(shè)定負載均衡的服務(wù)器列表
 upstream mysvr {
#weigth參數(shù)表示權(quán)值,權(quán)值越高被分配到的幾率越大
#本機上的Squid開啟3128端口
 server 192.168.8.1:3128 weight=5;
 server 192.168.8.2:80 weight=1;
 server 192.168.8.3:80 weight=6;
 }
 

#設(shè)定虛擬主機
      server {
 listen 80;  #配置監(jiān)聽端口
 server_name 192.168.8.1 www. #IP地址或者域名 ,多域名用空格隔開
 charset gb2312;  #默認編碼
 index index.html index.htm index.php;  #默認訪問文件,從前到后的順序查找
 #limit_conn connlimit 20;  限制一個IP只能最多只能發(fā)起20個連接,超過報 503 Service unavailable
 
#設(shè)定本虛擬主機的訪問日志格式
 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer"'
 '"$http_user_agent" $http_x_forwarded_for';

#設(shè)定本虛擬主機的訪問日志路徑  
 access_log logs/www..access.log main;

#假如訪問 /img/*, /js/*, /css/* 資源,則直接取本地文檔,不通過squid
#假如這些文檔較多,不推薦這種方式,因為通過squid的緩存效果更好
 location ~ ^/(img|js|css)/ {
 root //Html;
 access_log  off;  
#不記錄訪問日志
 expires 24h;  #緩存過期時間
 }

#對 "/" 啟用負載均衡,location ~* .(mp3|exe)$ 對以“mp3或exe”結(jié)尾的地址進行負載均衡

location / {

#設(shè)置被代理服務(wù)器的端口或套接字,以及URL
 proxy_pass http://mysvr;
 proxy_redirect off;
 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ù)器上
 client_max_body_size 10m;
 client_body_buffer_size 128k;
 proxy_connect_timeout 90;
 proxy_send_timeout 90;
 proxy_read_timeout 90;
 proxy_buffer_size 4k;
 proxy_buffers 4 32k;
 proxy_busy_buffers_size 64k;
 proxy_temp_file_write_size 64k;

 }

#設(shè)定查看Nginx狀態(tài)的地址
 location /NginxStatus {
 stub_status on;
 access_log on;
 auth_basic "NginxStatus";
 auth_basic_user_file conf/htpasswd;
      }

   }
}
 
備注:conf/htpasswd 文檔的內(nèi)容用 apache 提供的 htpasswd 工具來產(chǎn)生即可!

查看 Nginx 運行狀態(tài) 輸入地址http://www./NginxStatus/ 。輸入驗證賬號密碼,即可看到類似如下內(nèi)容:
Active connections: 328  
server accepts handled requests  
9309 8982 28890  
Reading: 1 Writing: 3 Waiting: 324 

http://blog./?p=196


 

轉(zhuǎn)載:|REKFAN|系統(tǒng)運維| ? Linux學習筆記_Nginx配置詳解


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多