欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Nginx必備參考:Nginx常見應用技術指南手冊

系統 2043 0

?

原文地址: http://www.xueit.com/html/2009-11-10/34-1695897214578.html

Nginx這個軟件不用介紹了吧。下面是轉載整理關于Nginx應用參考文檔:

目 錄
一、? ?? ???Nginx 基礎知識
二、? ?? ???Nginx 安裝及調試
三、? ?? ???Nginx Rewrite
四、? ?? ???Nginx Redirect
五、? ?? ???Nginx 目錄自動加斜線:
六、? ?? ???Nginx Location
七、? ?? ???Nginx expires
八、? ?? ???Nginx 防盜鏈
九、? ?? ???Nginx 訪問控制
十、? ?? ???Nginx日志處理
十一、? ???Nginx Cache
十二、? ??? Nginx負載均衡
十三、? ? ?? ?Nginx簡單優化 ? ?? ??
十四、? ?? ???如何構建高性能的LEMP環境
十五、? ?? ???Nginx服務監控
十六、? ?? ???常見問題與錯誤處理.
十七、? ?? ???相關資源下載

【前言】:
編寫此技術指南在于推廣普及NGINX在國內的使用,更方便的幫助大家了解和掌握NGINX的一些使用技巧。本指南很多技巧來自于網絡和工作中或網絡上朋友們問我的問題.在此對網絡上愿意分享的朋友們表示感謝和致意!歡迎大家和我一起豐富本技術指南提出更好的建議!請朋友們關注:? http://www.linuxtone.org ?技術分享社區! 互想學習共同進步!

一、 Nginx 基礎知識
1、簡介
? ?Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過兩年半了。Igor 將源代碼以類BSD許可證的形式發布。盡管還是測試版,但是,Nginx 已經因為它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名了。
更多的請見官方wiki:? http://wiki.codemongers.com/

2、 Nginx的優點
nginx做為HTTP服務器,有以下幾項基本特性:
1)? ?? ???處理靜態文件,索引文件以及自動索引;打開文件描述符緩沖.
2)? ?? ???無緩存的反向代理加速,簡單的負載均衡和容錯.
3)? ?? ???FastCGI,簡單的負載均衡和容錯.
4)? ?? ???模塊化的結構。包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等filter。如果由FastCGI或其它代理服務器處理單頁中存在的多個SSI,則這項處理可以并行運行,而不需要相互等待。
5)? ?? ???支持SSL 和 TLS SNI

Nginx專為性能優化而開發,性能是其最重要的考量, 實現上非常注重效率 。它支持內核Poll模型,能經受高負載的考驗, 有報告表明能支持高達 50,000 個并發連接數。
Nginx具有很高的穩定性。其它HTTP服務器,當遇到訪問的峰值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啟服務器。例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術,使得它的CPU與內存占用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只占2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言, nginx比lighthttpd更勝一籌。
Nginx支持熱部署。它的啟動特別容易, 并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。
Nginx采用master-slave模型, 能夠充分利用SMP的優勢,且能夠減少工作進程在磁盤I/O的阻塞延遲。當采用select()/poll()調用時,還可以限制每個進程的連接數。
Nginx代碼質量非常高,代碼很規范, 手法成熟, 模塊擴展也很容易。特別值得一提的是強大的Upstream與Filter鏈。 Upstream為諸如reverse proxy, 與其他服務器通信模塊的編寫奠定了很好的基礎。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執行完畢。它可以把前一個filter的輸出做為當前filter的輸入,這有點像Unix的管線。這意味著,一個模塊可以開始壓縮從后端服務器發送過來的請求,且可以在模塊接收完后端服務器的整個請求之前把壓縮流轉向客戶端。
Nginx采用了一些os提供的最新特性如對sendfile (Linux 2.2+),accept-filter (FreeBSD 4.1+),TCP_DEFER_ACCEPT (Linux 2.4+) 的支持,從而大大提高了性能

二、 Nginx 安裝及調試
1、Pcre 安裝

CODE:

./configure
??make && make install
??cd ../
2.? ?? ???nginx 編譯安裝

CODE:

./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-openssl=/usr/local/openssl?
make && make install
更詳細的模塊定制與安裝請參照官方wiki.?

3、Nginx 配置文件測試:

CODE:

# /usr/local/nginx/sbin/nginx -t??//Debug 配置文件的關鍵命令需要重點撐握.

2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok?
2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
3、Nginx 啟動:

CODE:

# /usr/local/nginx/sbin/nginx 4、Nginx 配置文件修改重新加載:

CODE:

# kill -HUP `cat /usr/local/nginx/logs/nginx.pid `
三、Nginx Rewrite

1.??Nginx Rewrite 基本標記(flags)
last - 基本上都用這個Flag。
※相當于Apache里的[L]標記,表示完成rewrite,不再匹配后面的規則
break - 中止Rewirte,不再繼續匹配
redirect - 返回臨時重定向的HTTP狀態302
permanent - 返回永久重定向的HTTP狀態301
? ?? ? ※原有的url支持正則??重寫的url不支持正則

2.??正則表達式匹配,其中:
? ? * ~? ?? ?? ?為區分大小寫匹配
? ? * ~*? ?? ? 為不區分大小寫匹配
? ? * !~和!~*? ?分別為區分大小寫不匹配及不區分大小寫不匹配

3. 文件及目錄匹配,其中:
?? ?* -f和!-f用來判斷是否存在文件
? ? * -d和!-d用來判斷是否存在目錄
? ? * -e和!-e用來判斷是否存在文件或目錄
? ? * -x和!-x用來判斷文件是否可執行


3.??Nginx 的一些可用的全局變量,可用做條件判斷:

CODE:

$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
四、 Nginx Redirect
將所有linuxtone.org與netseek.linuxtone.org域名全部自跳轉到 http://www.linuxtone.org

CODE:

server
{
listen 80;
server_name linuxtone.org netseek.linuxtone.org;
index index.html index.php;
root /data/www/wwwroot;
if ($host !~ "^www\.linxtone\.org$") {
rewrite ^(.*) http://www.linuxtone.org$1 redirect;
}
........................
}
五、 Nginx 目錄自動加斜線:

CODE:

if (-d $request_filename){
? ?? ?? ???rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
? ???}
六??Nginx Location

1.基本語法:[和上面rewrite正則匹配語法基本一致]
location [=|~|~*|^~] /uri/ { … }
? ?? * ~??為區分大小寫匹配
? ? * ~* 為不區分大小寫匹配
? ? * !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配

示例1:
location = / {
# matches the query / only.
# 只匹配 / 查詢。
}
匹配任何查詢,因為所有請求都已 / 開頭。但是正則表達式規則和長的塊規則將被優先和查詢匹配

示例2:
location ^~ /images/ {
# matches any query beginning with /images/ and halts searching,
# so regular expressions will not be checked.
# 匹配任何已 /images/ 開頭的任何查詢并且停止搜索。任何正則表達式將不會被測試。

示例3:
location ~* \.(gif|jpg|jpeg)$ {
# matches any request ending in gif, jpg, or jpeg. However, all
# requests to the /images/ directory will be handled by?
}
# 匹配任何已 gif、jpg 或 jpeg 結尾的請求。


七、 Nginx expires

1.根據文件類型expires

?

CODE:

# Add expires header for static content
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
? ? if (-f $request_filename) {
? ?? ? root /data/www/wwwroot/bbs;
? ?? ? expires? ?? ?1d;
? ?? ? break;
? ? }
}
2、根據判斷某個目錄

CODE:

# serve static files
location ~ ^/(images|javascript|js|css|flash|media|static)/??{
root? ? /data/www/wwwroot/down;
? ?? ???expires 30d;
??}
八、??Nginx 防盜鏈

1.? ?? ???針對不同的文件類型

CODE:

#Preventing hot linking of images and other file types
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
? ?? ???valid_referers none blocked server_names *.linuxtone.org linuxtone.org http://localhost baidu.com;
if ($invalid_referer) {
? ?? ?rewrite? ?^/? ?;
? ???# return? ?403;
? ?? ?}
}
2.? ?? ???針對不同的目錄

CODE:

location /img/ {
? ? root /data/www/wwwroot/bbs/img/;
? ? valid_referers none blocked server_names *.linuxtone.org http://localhost baidu.com;
? ? if ($invalid_referer) {
? ?? ?? ?? ?? ?? ? rewrite??^/??;
? ?? ?? ?? ?? ?? ? #return? ?403;
? ? }
}
3.? ?? ???同實現防盜鏈和expires的方法

CODE:

#Preventing hot linking of images and other file types
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
? ?? ???valid_referers none blocked server_names *.linuxtone.org linuxtone.org http://localhost ;
if ($invalid_referer) {
? ?? ?rewrite? ?^/? ?;
? ?? ?? ?? ?? ?? ?? ?}
? ???access_log off;
? ???root /data/www/wwwroot/bbs;
expires 1d;
? ???break;
}
九、 Nginx 訪問控制

1.? ?? ???Nginx 身份證驗證

CODE:

#cd /usr/local/nginx/conf
#mkdir htpasswd
/usr/local/apache2/bin/htpasswd -c /usr/local/nginx/conf/htpasswd/tongji linuxtone?
#添加用戶名為linuxtone
New password:? ?(此處輸入你的密碼)
Re-type new password:? ?(再次輸入你的密碼)
Adding password for user
http://count.linuxtone.org/tongji/data/index.html(目錄存在/data/www/wwwroot/tongji/data/目錄下)
將下段配置放到虛擬主機目錄,當訪問http://count.linuxtone/tongji/即提示要密驗證:
location ~ ^/(tongji)/??{
? ?? ?? ?? ?? ? root? ? /data/www/wwwroot/count;
? ?? ?? ?? ?? ?? ?? ?? ?auth_basic? ?? ?? ?? ???"LT-COUNT-TongJi";
? ?? ?? ?? ?? ?? ?? ?? ?auth_basic_user_file??/usr/local/nginx/conf/htpasswd/tongji;
? ?? ?? ?? ?? ? }
2.? ?? ???Nginx 禁止訪問某類型的文件.
如,Nginx下禁止訪問*.txt文件,配置方法如下.

CODE:

location ~* \.(txt|doc)$ {
? ?if (-f $request_filename) {
? ?root /data/www/wwwroot/linuxtone/test;
? ?#rewrite …..可以重定向到某個URL
? ?break;
? ?}
}
方法2:

CODE:

location ~* \.(txt|doc)${
? ?? ???root /data/www/wwwroot/linuxtone/test;
? ?? ???deny all;
}
實例:
禁止訪問某個目錄

CODE:

location ~ ^/(WEB-INF)/ {?
? ?? ?? ?? ?deny all;?
}??
3.? ?? ???使用ngx_http_access_module限制ip訪問

CODE:

location / {
? ? deny? ? 192.168.1.1;
? ? allow? ?192.168.1.0/24;
? ? allow? ?10.1.1.0/16;
? ? deny? ? all;
}
詳細參見wiki:? http://wiki.codemongers.com/NginxHttpAccessModule#allow

4.? ?? ???Nginx 下載限制并發和速率

CODE:

limit_zone? ?linuxtone??$binary_remote_addr??10m;
server
? ?? ? {
? ?? ?? ?? ?? ?listen? ?? ? 80;
? ?? ?? ?? ?? ?server_name??down.linuxotne.org;
? ?? ?? ?? ?? ?index index.html index.htm index.php;
? ?? ?? ?? ?? ?root? ?/data/www/wwwroot/down;
? ?? ?? ?? ?? ?#Zone limit
? ?? ?? ?? ?? ?location / {
? ?? ?? ?? ?? ?? ? limit_conn? ?linuxtone??1;
? ?? ?? ?? ?? ?? ? limit_rate??20k;
? ?? ?? ?? ?? ?}
..........
? ?? ? }
只允許客房端一個線程,每個線程20k.
【注】 limit_zone? ?linuxtone??$binary_remote_addr??10m; 這個可以定義在主的


5.? ?? ???Nginx 實現Apache一樣目錄列表

CODE:

location??/??{
? ? autoindex??on;
}
6.? ?? ???上文件大小限制
主配置文件里加入如下,具體大小根據你自己的業務做調整。
client_max_body_size 10m;? ?? ?? ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???

十、? ?? ???Nginx 日志處理

1.Nginx 日志切割
#contab -e
59 23 * * * /usr/local/sbin/logcron.sh /dev/null 2>&1
[root@count ~]# cat /usr/local/sbin/logcron.sh

CODE:

#!/bin/bash
log_dir="/data/logs"
time=`date +%Y%m%d`??
/bin/mv??${log_dir}/access_linuxtone.org.log ${log_dir}/access_count.linuxtone.org.$time.log
kill -USR1 `cat??/var/run/nginx.pid`
更多的日志分析與處理就關注(同時歡迎你參加討論): http://bbs.linuxtone.org/forum-8-1.html

2.利用AWSTATS分析NGINX日志
??設置好Nginx日志格式,仍后利用awstats進行分析.
請參考:? http://bbs.linuxtone.org/thread-56-1-1.html

3.? ?? ???Nginx 如何不記錄部分日志
日志太多,每天好幾個G,少記錄一些,下面的配置寫到server{}段中就可以了
location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$
{
? ???access_log off;
}

十一、Nginx Cache服務配置

如果需要將文件緩存到本地,則需要增加如下幾個子參數:

CODE:

proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path 緩存目錄;
其中,
proxy_store on用來啟用緩存到本地的功能,
proxy_temp_path用來指定緩存在哪個目錄下,如:proxy_temp_path html;

在經過上一步配置之后,雖然文件被緩存到了本地磁盤上,但每次請求仍會向遠端拉取文件,為了避免去遠端拉取文件,必須修改

CODE:

proxy_pass:
if ( !-e $request_filename) {
? ? proxy_pass??http://mysvr;
}
即改成有條件地去執行proxy_pass,這個條件就是當請求的文件在本地的proxy_temp_path指定的目錄下不存在時,再向后端拉取。

? ?
更多更高級的應用可以研究ncache,詳細請參照 http://bbs.linuxtone.org ?里ncache相關的貼子.

?


十二、Nginx 負載均衡
1. Nginx 負載均衡基礎知識
nginx的upstream目前支持4種方式的分配
1)、輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
2)、weight
指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。
2)、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
3)、fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優先分配。?
4)、url_hash(第三方)

2.? ?? ???Nginx 負載均衡實例1

?

CODE:

upstream bbs.linuxtone.org {#定義負載均衡設備的Ip及設備狀態
? ? server 127.0.0.1:9090 down;
? ? server 127.0.0.1:8080 weight=2;
? ? server 127.0.0.1:6060;
? ? server 127.0.0.1:7070 backup;
}
在需要使用負載均衡的server中增加
proxy_pass? http://bbs.linuxtone.org/ ;

每個設備的狀態設置為:
a)? ?? ???down 表示單前的server暫時不參與負載
b)? ?? ???weight 默認為1.weight越大,負載的權重就越大。
c)? ?? ???max_fails :允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
d)? ?? ???fail_timeout:max_fails次失敗后,暫停的時間。
e)? ?? ???backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。

nginx支持同時設置多組的負載均衡,用來給不用的server來使用。

client_body_in_file_only 設置為On 可以講client post過來的數據記錄到文件中用來做debug
client_body_temp_path 設置記錄文件的目錄 可以設置最多3層目錄
location 對URL進行匹配.可以進行重定向或者進行新的代理 負載均衡


3.? ?? ???Nginx 負載均衡實例 2
按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效,也可以用作提高Squid緩存命中率.

簡單的負載均等實例:
#vi nginx.conf??//nginx主配置文件核心配置

CODE:

……….
#loadblance my.linuxtone.org
? ?? ? upstream??my.linuxtone.org??{
? ?? ? ip_hash;
? ?? ? server? ?127.0.0.1:8080;
? ?? ? server? ?192.168.169.136:8080;
? ?? ? server? ?219.101.75.138:8080;
? ?? ? server? ?192.168.169.117;
? ?? ? server? ?192.168.169.118;
? ?? ? server? ?192.168.169.119;
? ???}
…………..
include? ?? ?? ? vhosts/linuxtone_lb.conf;
………
# vi proxy.conf
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 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_store on;
proxy_store_access? ?user:rw??group:rw??all:r;
#nginx cache? ?? ?? ?? ?? ?
#client_body_temp_path??/data/nginx_cache/client_body 1 2;
proxy_temp_path /data/nginx_cache/proxy_temp 1 2;
#vi??linuxtone_lb.conf

CODE:

server
? ? {
? ?? ???listen??80;
? ?? ???server_name my.linuxtone.org;
? ?? ???index index.php;
? ?? ???root /data/www/wwwroot/mylinuxtone;
? ?? ???if (-f $request_filename) {
? ?? ?? ?? ?break;
? ?? ?? ???}
? ?? ???if (-f $request_filename/index.php) {
? ?? ?? ? rewrite (.*) $1/index.php break;
? ?? ???}

? ?? ???error_page 403 http://my.linuxtone.org/member.php?m=user&a=login;
? ?? ???location / {
? ?? ?? ???if ( !-e $request_filename) {
? ?? ?? ?? ?? ?proxy_pass http://my.linuxtone.org;
? ?? ?? ?? ?? ?break;
? ?? ?? ???}
? ?? ?? ???include /usr/local/nginx/conf/proxy.conf;
? ?? ???}
}


十三、Nginx簡單優化


1.? ?? ???減小nginx編譯后的文件大小 (Reduce file size of nginx)
默認的nginx編譯選項里居然是用debug模式(-g)的(debug模式會插入很多跟蹤和ASSERT之類),編譯以后一個nginx有好幾兆。去掉nginx的debug模式編譯,編譯以后只有幾百K
在 auto/cc/gcc,最后幾行有:
# debug

CODE:

CFLAGS=”$CFLAGS -g” 注釋掉或刪掉這幾行,重新編譯即可。

2.? ?? ???修改Nginx的header偽裝服務器
1)? ?? ???修改nginx.h

CODE:

#vi nginx-0.7.30/src/core/nginx.h
#define NGINX_VERSION? ?? ?"1.8"
#define NGINX_VER? ?? ?? ? "LTWS/" NGINX_VERSION

#define NGINX_VAR? ?? ?? ? "NGINX"
#define NGX_OLDPID_EXT? ???".oldbin"
2) 修改nginx_http_header_filter_module
#vi nginx-0.7.30/src/http/ngx_http_header_filter_module.c
將如下

CODE:

static char ngx_http_server_string[] = "Server: nginx" CRLF; 修改為

CODE:

static char ngx_http_server_string[] = "Server: LTWS" CRLF; a)? ?? ???修改nginx_http_header_filter_module
#vi nginx-0.7.30/src/http/ngx_http_special_response.c
將如下:

CODE:

static u_char ngx_http_error_full_tail[] =
"<hr><center>" NGINX_VER "</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;

CODE:

static u_char ngx_http_error_tail[] =
"<hr><center>nginx</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
修改為:

CODE:

static u_char ngx_http_error_full_tail[] =
"<center> "NGINX_VER" </center>" CRLF
"<hr><center>http://www.linuxtone.org</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;


static u_char ngx_http_error_tail[] =
"<hr><center>LTWS</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
修改后重新編譯一下環境,
404錯誤的時候顯示效果圖(如果沒有指定錯誤頁的話):


404.png



利用curl命令查看服務器header


curl.png



3.為特定的CPU指定CPU類型編譯優化.
默認nginx使用的GCC編譯參數是-O
需要更加優化可以使用以下兩個參數
--with-cc-opt='-O3' \
--with-cpu-opt=opteron \
使得編譯針對特定CPU以及增加GCC的優化.
此方法僅對性能有所改善并不會有很大的性能提升,供朋友們參考.
CPUD類型確定: # cat /proc/cpuinfo | grep "model name"
編譯優化參數參考: http://en.gentoo-wiki.com/wiki/Safe_Cflags
4.Tcmalloc優化Nginx 性能

CODE:

# wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz
# tar zxvf libunwind-0.99-alpha.tar.gz
# cd libunwind-0.99-alpha/
# CFLAGS=-fPIC ./configure
# make CFLAGS=-fPIC
# make CFLAGS=-fPIC install
# wget http://google-perftools.googlecode.com/files/google-perftools-0.98.tar.gz
# tar zxvf google-perftools-0.98.tar.gz
# cd google-perftools-0.98/
# ./configure
# make && make install
# echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
# ldconfig
# lsof -n | grep tcmalloc
編譯nginx 加載google_perftools_module:
./configure --with-google_perftools_module
在主配置文件加入nginx.conf 添加:
google_perftools_profiles /path/to/profile;

5.內核參數優化
# vi /etc/sysctl.conf? ?#在末尾增加以下內容:

CODE:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
#使配置立即生效
/sbin/sysctl -p

?

?


十四、如何構建高性的LEMP
請參見:? http://www.linuxtone.org/lemp/lemp.pdf
1、提供完整的配置腳本下載: http://www.linuxtone.org/lemp/scripts.tar.gz
2、提供NGINX常見配置范例含(虛擬主機,防盜鏈,Rewrite,訪問控制,負載均衡
Discuz相關程序靜態化及等等),你只要稍稍修改即可線上應用。 3、將原版的xcache替換成EA,并提供相關簡單調優腳本及配置文件。
更多的及更新資料請關注:? http://www.linuxtone.org

十五、Nginx監控
1、? ?? ???RRDTOOL+Perl腳本畫圖監控
先安裝好rrdtool ,關于rrdtool本文不作介紹,具體安裝請參照linuxtone監控版塊.
#cd /usr/local/sbnin
#wget? http://blog.kovyrin.net/files/mrtg/rrd_nginx.pl.txt
#mv rrd_nginx.pl.txt rrd_nginx.pl
#chmod a+x rrd_nginx.pl

#vi rrd_nginx.pl? ?//配置腳本文件設置好路徑
#!/usr/bin/perl
use RRDs;
use LWP::UserAgent;

# define location of rrdtool databases
my $rrd = '/data/www/wwwroot/nginx/rrd';
# define location of images
my $img = '/data/www/wwwroot/nginx/html';
# define your nginx stats URL
my $URL = "http://219.232.244.13/nginx_status";
…………
【注】根據自己具體的狀況修改相應的路徑.
#crontab –e //加入如下
* * * * * /usr/local/sbin/rrd_nginx.pl
重啟crond后,通過配置nginx虛擬主機指到/data/www/wwwroot/nginx/html目錄,通過crond自動執行perl腳本會生成很多圖片.
http://xxx/connections-day.png即可看到服務器狀態圖。

2、? ?? ???官方Nginx-rrd 監控服務(多虛擬主機)(推薦)
網址: http://www.nginx.eu/nginx-rrd.html
此解決方案其實是基于上述監控方案的一個改進和增強,同樣先安裝好rrdtool這個畫圖工具和相應的perl模塊再做如下操作:
# yum install perl-HTML*
先建立好生成的庫存和圖片存放錄

?

CODE:

#mkdir -p /data/www/wwwroot/nginx/{rrd,html}

#cd /usr/local/sbin
#wget http://www.nginx.eu/nginx-rrd/nginx-rrd-0.1.4.tgz
#tar zxvf nginx-rrd-0.1.4.tgz
#cd nginx-rrd-0.1.4
#cd etc/
#cp nginx-rrd.conf /etc
#cd etc/cron.d
#cp nginx-rrd.cron /etc/cron.d

#cd /usr/local/src/nginx-rrd-0.1.4/html
# cp index.php /data/www/wwwroot/nginx/html/

#cd /usr/local/src/nginx-rrd-0.1.4/usr/sbin
#cp * /usr/sbin/
#vi /etc/nginx-rrd.conf

CODE:

#####################################################
#
# dir where rrd databases are stored
RRD_DIR="/data/www/wwwroot/nginx/rrd";
# dir where png images are presented
WWW_DIR="/data/www/wwwroot/nginx/html";
# process nice level
NICE_LEVEL="-19";
# bin dir
BIN_DIR="/usr/sbin";
# servers to test
# server_utl;server_name
SERVERS_URL="http://219.32.205.13/nginx_status;219.32.205.13??http://www.linuxtone.org/nginx_status;www.linuxtone.org""
//根據你的具體情況做調整.
SEVERS_URL 格式 http://domain1/nginx_status;domain1 http://domain2/nginx_status;domain2
這種格式監控多虛擬主機連接狀態:
重點啟crond服務,仍后通過 http://219.32.205.13/nginx/html/ ?即可訪問。配置過程很簡單!

3、? ?? ???CACTI模板監控Nginx
利用Nginx_status狀態來畫圖實現CACTI監控
nginx編譯時允許http_stub_status_module

# vi /usr/local/nginx/conf/nginx.conf

CODE:

location /nginx_status {
stub_status on;
access_log off;
allow 192.168.1.37;
deny all;
}

CODE:

# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

# wget http://forums.cacti.net/download.php?id=12676
# tar xvfz cacti-nginx.tar.gz
# cp cacti-nginx/get_nginx_socket_status.pl /data/cacti/scripts/
# cp cacti-nginx/get_nginx_clients_status.pl /data/cacti/scripts/
# chmod 755 /data/cacti/scripts/get_nginx*
檢測插件

CODE:

# /data/cacti/scripts/get_nginx_clients_status.pl http://192.168.1.37/nginx_status 在cacti管理面板導入
cacti_graph_template_nginx_clients_stat.xml
cacti_graph_template_nginx_sockets_stat.xml

十六、常見問題與錯誤處理
1、400 bad request錯誤的原因和解決辦法
配置nginx.conf相關設置如下.
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
根據具體情況調整,一般適當調整值就可以。

2、Nginx 502 Bad Gateway錯誤
proxy_next_upstream error timeout invalid_header http_500 http_503;
或者嘗試設置:
large_client_header_buffers 4 32k;


3、Nginx出現的413 Request Entity Too Large錯誤
這個錯誤一般在上傳文件的時候會出現,
編輯Nginx主配置文件Nginx.conf,找到http{}段,添加
client_max_body_size 10m ; //設置多大根據自己的需求作調整.
如果運行php的話這個大小client_max_body_size要和php.ini中的如下值的最大值一致或者稍大,這樣就不會因為提交數據大小不一致出現的錯誤。
post_max_size = 10M
upload_max_filesize = 2M

4、解決504 Gateway Time-out(nginx)
遇到這個問題是在升級discuz論壇的時候遇到的
一般看來, 這種情況可能是由于nginx默認的fastcgi進程響應的緩沖區太小造成的, 這將導致fastcgi進程被掛起, 如果你的fastcgi服務對這個掛起處理的不好, 那么最后就極有可能導致504 Gateway Time-out
現在的網站, 尤其某些論壇有大量的回復和很多內容的, 一個頁面甚至有幾百K。
默認的fastcgi進程響應的緩沖區是8K, 我們可以設置大點
在nginx.conf里, 加入: fastcgi_buffers 8 128k
這表示設置fastcgi緩沖區為8×128k
當然如果您在進行某一項即時的操作, 可能需要nginx的超時參數調大點,例如設置成60秒:send_timeout 60;
只是調整了這兩個參數, 結果就是沒有再顯示那個超時, 可以說效果不錯, 但是也可能是由于其他的原因, 目前關于nginx的資料不是很多, 很多事情都需要長期的經驗累計才有結果, 期待您的發現哈!

5、如何使用Nginx Proxy
朋友一臺服務器運行tomcat 為8080端口,IP:192.168.1.2:8080,另一臺機器IP:192.168.1.8. 朋友想通過訪問 http://192.168.1.8 即可訪問tomcat服務.配置如下:
在192.168.1.8的nginx.conf上配置如下:

CODE:

server {
listen 80;
server_name java.linuxtone.org
location / {
proxy_pass http://192.168.1.2:8080;
include /usr/local/nginx/conf/proxy.conf;
}
}
6、如何關閉Nginx的LOG
access_log /dev/null; error_log /dev/null;

十七、相關資源下載

1.nginx配置示例及腳本下載:
# wget? http://www.linuxtone.org/lemp/scripts.tar.gz ?#此腳本范例定期更新.
【附】:
本文檔定期更新,同時歡迎朋友多提寶貴意見,豐富nginx tips內容.
最新的文檔發布.請朋友們關注:? http://bbs.linuxtone.org
——————————————————————————————————————

更詳細的請下載 PDF文件閱讀:

Nginx 常見應用技術指南(nginx tips).pdf

?

Nginx必備參考:Nginx常見應用技術指南手冊


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美激情精品久久久久久久 | 中文在线免费观看 | 国内精品久久毛片一区二区 | 色五五月五月开 | a国产精品 | 国产一区在线免费观看 | 欧美视频www | 免费精品美女久久久久久久久久 | 欧美日韩精品一区二区三区 | 国产精品久久久久久久久久 | 亚洲欧美日韩在线 | 亚洲夜夜爱 | 亚洲在线视频播放 | 亚洲国产精品久久久久网站 | 久久久久免费视频 | 国产高清一国产免费软件 | 免费观看一区二区三区毛片 | 欧美日韩xxx | 美国黄色一级片 | 亚洲成人一区二区三区 | 中文字幕视频在线 | 亚洲成人av在线 | 国产伦理久久精品久久久久 | 日日碰| 欧美成人免费毛片 | 日韩有码在线观看 | 亚洲综合色视频在线观看 | 中文二区| 国产精品拍自在线观看 | 国产在线网 | 毛片短视频| 国亚洲欧美日韩精品 | 午夜精品久久久久久99热软件 | 国产亚洲精品sese在线播放 | 精品三级国产精品经典三 | 久久久7777888精品 | 久久婷婷影院 | 成人亚洲视频 | 久久中文字幕在线 | 温如玉二虎大结局1800 | 99久草|