小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linux學習筆記_Nginx配置詳解

 JhouShuai 2015-05-13

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

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

#運行用戶
 user nobody nobody;
#啟動進程,根據硬件調整,大于等于cpu核數
 worker_processes 2;
#指定進程可以打開的最大描述符
 worker_rlimit_nofile 204800;
這個指令是指當一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文 件數(ulimit -n)與nginx進程數相除,但是nginx分配請求并不是那么均勻,所以最好與ulimit -n 的值保持一致。 現在在linux 2.6內核下開啟文件打開數為65535,worker_rlimit_nofile就相應應該填寫65535。這是因為nginx調度時分配請求到進程并不是那么的均衡,所以假如填寫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針對不同的操作系統,有不同的事件模型
A)標準事件模型
Select、poll屬于標準事件模型,如果當前系統不存在更有效的方法,nginx會選擇select或poll
B)高效事件模型
Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用雙處理器的MacOS X系統使用kqueue可能會造成內核崩潰。
Epoll:使用于Linux內核2.6版本及以后的系統。
/dev/poll:使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
Eventport:使用于Solaris 10. 為了防止出現內核崩潰的問題, 有必要安裝安全補丁

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

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

#設定日志格式
 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協議;
$status: 用來記錄請求狀態(tài);成功是200,
$body_bytes_s ent :記錄發(fā)送給客戶端文件主體內容大??;
$http_referer:用來記錄從那個頁面鏈接訪問過來的;
$http_user_agent:記錄客戶瀏覽器的相關信息;

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

#設定請求緩沖
 client_header_buffer_size 1k;
 large_client_header_buffers 4 4k;

#關閉報錯時的Nginx版本顯示
 server_tokens off;

 sendfile on;  #打開系統函數sendfile()支持
 tcp_nopush on;   #防止網絡阻塞
 tcp_nodelay on;   #防止網絡阻塞
 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;

 #設置上述數值設置太小時若負載上來時可能報 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;
  #壓縮類型,默認就已經包含text/html 所以下面就不用再寫了,當然寫上去的話,也不會有問題,但是會有一個warn

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

 client_header_timeout 3m;
 client_body_timeout 3m;

 
#設定負載均衡的服務器列表
 upstream mysvr {
#weigth參數表示權值,權值越高被分配到的幾率越大
#本機上的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;
 }
 

#設定虛擬主機
      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
 
#設定本虛擬主機的訪問日志格式
 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer"'
 '"$http_user_agent" $http_x_forwarded_for';

#設定本虛擬主機的訪問日志路徑  
 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”結尾的地址進行負載均衡

location / {

#設置被代理服務器的端口或套接字,以及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;

#以上三行,目的是將代理服務器收到的用戶的信息傳到真實服務器上
 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;

 }

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

   }
}
 
備注:conf/htpasswd 文檔的內容用 apache 提供的 htpasswd 工具來產生即可!

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

http://blog./?p=196


 

轉載:|REKFAN|系統運維| ? Linux學習筆記_Nginx配置詳解


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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多