日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx优化方案

發布時間:2023/12/29 Nginx 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx优化方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、Nginx返回錯誤頁面

1、HTTP常見狀態代碼列表

二、Nginx狀態頁面

1、安裝status模塊

2、激活status

三、優化并發連接數

1、壓力測試軟件ab(http-tools)

2、優化并發連接數

2.1、修改nginx并發數

2.2、修改內核最大文件數量

四、Nginx日志分割

五、開啟gzip壓縮

六、開啟文件緩存


一、Nginx返回錯誤頁面

1、HTTP常見狀態代碼列表

返回碼描述
200一切正常? ? ? ? ? ??
400請求語法錯誤
401訪問被拒絕(賬號或密碼錯誤)
403資源不可用,通常由于服務器上文件或目錄的權限設置導致
403禁止訪問:如客戶端的IP地址被拒絕,無法驗證密碼
404無法找到指定位置的資源(Not found)
414請求URL頭部太長
500服務器內部錯誤
502服務器作為網關或者代理時,為了完成請求訪問下一個服務器,但該服務器返回了非法的應答(Bad Gatwway)

2、自定義錯誤返回頁面

vim /usr/local/nginx/conf/nginx.conf

默認nginx.conf的server下面都有個注釋的error_page配置,取消注釋,更改為自定義頁面或圖片就行了:

server {
? ? ? ? listen ? ? ? 80;
? ? ? ? server_name ?localhost;

? ? ? ? #charset koi8-r;

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

? ? ? ? location / {
? ? ? ? ? ? root ? html;
? ? ? ? ? ? index ?index.html index.htm;
? ? ? ? }

? ? ? ? error_page ?404 ? ? ? ? ? ? ?/my404.html;? ? #html可以自定義,但要實際存在

? ? ? ? #error_page ?404 ? ? ? ? ? ? ?/my404.jpg;? ? ?#也可以顯示圖片,選用一個即可

? ? ? ? # redirect server error pages to the static page /50x.html
? ? ? ? #
? ? ? ? error_page ? 500 502 503 504 ?/50x.html;
? ? ? ? location = /50x.html {
? ? ? ? ? ? root ? html;
? ? ? ? }

... ...

}

【注】:上面的my404.html和my404.jpg文件前面的“/”不是系統的跟目錄,而是nginx的html的根目錄,即/usr/local/nginx/html/下

/usr/local/nginx/sbin/nginx -s reload

客戶端測試:訪問一個不存在的地址:

?返回圖片:

二、Nginx狀態頁面

1、安裝status模塊

nginx編譯安裝時./confiugre后面需要添加--with-http_stub_status_module開啟模塊功能,該模塊可以查看Nginx連接數等信息

Nginx安裝參考:Nginx安裝、升級與基礎配置_桂安俊@kylinOS的博客-CSDN博客

2、激活status

vim /usr/local/nginx/conf/nginx.conf

新增一個location,用于訪問status:

server {
? ? ? ? listen ? ? ? 80;
? ? ? ? server_name ?localhost;

? ? ? ??
? ? ? ? location /status {
? ? ? ? ? ? stub_status on;

? ? ? ? ? ? #allow? IP;? ? ?#可設置限制訪問

? ? ? ? ? ? #deny all;
? ? ? ? }

? ? ? ? location / {
? ? ? ? ? ? root ? html;
? ? ? ? ? ? index ?index.html index.htm;
? ? ? ? }

/usr/local/nginx/sbin/nginx -s reload

客戶端測試:瀏覽器訪問192.168.1.20/status

【參數說明】:

Active connections:當前活動的連接數量,實時并發量

Accepts:已經接受客戶端的連接總數量,三次握手建立

Handled:已經處理客戶端的連接總數量,一般與accepts一致,除非服務器限制了連接數量

Requests:客戶端發送的請求數量

Reading:當前服務器正在讀取的客戶端請求頭的數量

Writing:當前服務器正在寫響應信息的數量

Waiting:當前多少客戶端在等待服務器的響應

三、優化并發連接數

1、壓力測試軟件ab(http-tools)

yum -y install httpd-tools#-c后面代表總人數,-n后面代表總訪問量,如下即模擬100個人共訪問100次,即平均一人訪問一次 #所以-c的值必須要大于等于-n的值,不然會報語法錯誤,且網址最后面必須以“/”斜線結尾,否則也會報語法錯誤 ab -c 100 -n 100 http://192.168.1.20/ab -c 2000 -n 2000 http://192.168.1.20/

測試:

100人100次模擬訪問:

ab -c 100 -n 100 http://192.168.1.20/

2000人2000次模擬訪問:

ab -c 2000 -n 2000 http://192.168.1.20/

?如上可以看到2000人2000次訪問報錯了,這時候就需要優化Nginx,以滿足更高并發量。

2、優化并發連接數

2.1、修改nginx并發數

vim /usr/local/nginx/conf/nginx.conf

worker_processes? 2;? ? ? ? ? ? ? ? ? ? #啟動多少個nginx worker進程,需要與CPU核心數量一致


events {
? ? worker_connections? 50000;? ? ?#每個nginx worker進程能夠支持的最大并發連接數量
}

/usr/local/nginx/sbin/nginx -s reload

2.2、修改內核最大文件數量

除此以外還要修改內核參數,修改最大文件數量:

ulimit -a

?可以看到默認最大文件打開數是1024。

a、臨時修改:

ulimit -n 100000 #臨時修改最大文件打開數,重啟系統失效

b、永久修改:

vim /etc/security/limits.conf #永久修改,需重啟生效

新增如下內容:

*? ? ? ? ? ?soft? ? ? ? nofile? ? ? ?100000
*? ? ? ? ? ?hard? ? ? ?nofile? ? ? ?100000

#格式說明:用戶或組? ?軟限制或硬限制? ?項目? ? 值

#其中soft軟限制是可以突破的,hard硬限制是不可以突破的,nofile代表最大文件打開數量

再次客戶端高并發測試,可以完成2000并發:

ab -c 2000 -n 2000 http://192.168.1.20/

四、Nginx日志分割

腳本日志切割

vim /usr/local/nginx/logbak.sh #!/bin/bash date=`date +%Y%m%d` logpath=/usr/local/nginx/logs mv $logpath/access.log $logpath/access-$date.log mv $logpath/error.log $logpath/error-$date.log kill -USR1 $(cat $logpath/nginx.pid) #這里的kill不是殺死進程,是生成新的日志文件

設置定時任務,比如每周五03點03分自動執行腳本完成日志切割:

crontab -e 03 03 * * 5 /usr/local/nginx/logbak.sh

五、開啟gzip壓縮

如果是訪問很多圖片內容網站,如果不壓縮,直接不壓縮傳遞,就會占用很多流量并且傳輸很慢。

開啟壓縮功能:

http {... ...gzip? on;? ? ? ? #開啟壓縮gzip_min_length 1000;? ? ? ? #小文件不壓縮,如滿足1000字節之后才壓縮,小文件越壓縮反而越大gzip_comp_level? ?4;? ? ? ? ? ?#壓縮比率,壓縮比率太大會導致壓縮時間長gzip_types? ?text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;? ? #對特定文件壓縮,類型參考mime.types文件,在/usr/local/nginx/conf/mime.types... ...}

【注】mime.types說明,后面是文件格式類型,前面為對應gzip_types,填寫前面的:

【說明】這里是壓縮,解壓得話是瀏覽器完成,幾乎所有得瀏覽器都支持自動解壓。

六、開啟文件緩存

使用內存緩存磁盤中的文件,html頁面是存放在/usr/local/nginx/html目錄下的,這是存放在硬盤上的,如果把用戶經常訪問的html頁面緩存到內存中,那訪問速度可以更快。

修改如下,開啟文件緩存:

vim /usr/local/nginx/conf/nginx.conf http {... ...open_file_cache max=2000 inactive=20s; #設置服務器內存中最大緩存2000個句柄,關閉20秒內無請求的文件句柄,從內存中清除open_file_cache_valid 60s; #文件句柄的最長有效時間是60秒,60秒后過期,不管是不是一直被訪問,這樣防止硬盤html修改了內容,但是一直緩存在內存中的html沒有更新,導致用戶訪問的頁面一直沒更新open_file_cache_min_uses 5; #只有訪問次數超過5次會被緩存open_file_cache_errors off; #內存緩存html過期,用戶訪問內存html找不到會報錯,但是硬盤html是有的,這里是關閉緩存文件錯誤... ... }

總結

以上是生活随笔為你收集整理的Nginx优化方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。