溫馨提示×

溫馨提示×
密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何對Nginx服務(wù)進(jìn)行優(yōu)化

發(fā)布時間:2020-06-17 15:06:51 來源:億速云 閱讀:121 作者:元一 欄目:云計算

前言

Nginx作為負(fù)載均衡服務(wù)器:Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M(jìn)行服務(wù),也可以支持作為 HTTP代理服務(wù)器對外進(jìn)行服務(wù)。Nginx采用C進(jìn)行編寫,不論是系統(tǒng)資源開銷還是CPU使用效率都比 Perlbal 要好很多。
處理靜態(tài)文件,索引文件以及自動索引;打開文件描述符緩沖。
無緩存的反向代理加速,簡單的負(fù)載均衡和容錯。
FastCGI,簡單的負(fù)載均衡和容錯。
模塊化的結(jié)構(gòu)。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服務(wù)器處理單頁中存在的多個 SSI,則這項處理可以并行運(yùn)行,而不需要相互等待。

1.1、修改配置文件法

1、先查看版本基本信息
curl -I http://自己的IP地址

如何對Nginx服務(wù)進(jìn)行優(yōu)化

2、Nginx的配置文件添加:server_tokens 選項的值設(shè)置為off
vim /usr/local/nginx/conf/nginx.conf

http {
     include        mime.types;
     default_type   application/octet-stream;
#下面添加一段,關(guān)閉版本顯示      
      server_tokens off;

如何對Nginx服務(wù)進(jìn)行優(yōu)化

3、重啟服務(wù)
//先關(guān)閉服務(wù),再開啟服務(wù)
service nginx stop
service nginx start
4、再用 curl 命令查看版本

如何對Nginx服務(wù)進(jìn)行優(yōu)化

1.2、修改源碼法

Nginx 源碼文件 /pot/nginx-1.12.0/src/core/nginx.h
包含了版本信息,可以隨意設(shè)置
重新編譯安裝,隱藏版本信息
1、修改版本號
#先把剛才添加的那段話的 off(關(guān)閉),改成 on(開啟)
vim /usr/local/nginx/conf/nginx.conf

cd /opt/nginx-1.12.2/src/core/

vim /opt/ningx-1.12.2/src/core/nginx.h

define nginx_version    1012002
define NGINX_VERSION    "1.1.1"     //自定義一個版本號
define NGINX_VER    "nginx/" NGINX_VERSION

如何對Nginx服務(wù)進(jìn)行優(yōu)化

如何對Nginx服務(wù)進(jìn)行優(yōu)化

2、配置編譯
cd nginx-1.12.2/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make && make install
3、啟動服務(wù),查看版本
#在啟動服務(wù)
service nginx stop
service nginx start

#在查看,就會發(fā)現(xiàn)有一個我們自己偽造的一個版本號
curl -I http://IP地址/

Sercer: nginx/1.1.1  #偽造的版本號

如何對Nginx服務(wù)進(jìn)行優(yōu)化

注意:如果版本號沒有偽造成功,也不顯示,有可能是配置文件中關(guān)閉了版本顯示。解決:刪除server_tokens off;

二、修改Nginx用戶與組

Nginx運(yùn)行時進(jìn)程需要有用戶與組的支持,以實現(xiàn)對網(wǎng)站文件讀取時進(jìn)行訪問控制
Nginx默認(rèn)使用nobody用戶賬號與組賬號,一般也要進(jìn)行修改
修改的方法:
編譯安裝時指定用戶與組
修改配置文件指定用戶與組
2.1、修改配置文件指定用戶與組
vim /usr/local/nginx/conf/nginx.conf

#user  nobody;
//去掉前面注釋符“ # ”,修改 nobody 指定用戶與組 nginx nginx;

如何對Nginx服務(wù)進(jìn)行優(yōu)化

主進(jìn)程由root創(chuàng)建  子進(jìn)程由nginx創(chuàng)建

三、配置Nginx網(wǎng)頁緩存時間

當(dāng)Nginx將網(wǎng)頁數(shù)據(jù)返回給客戶端后,可設(shè)置緩存的時間,以方便在日后進(jìn)行相同內(nèi)容的請求時直接返回,避免重復(fù)請求,加快了訪問速度
一般針對靜態(tài)網(wǎng)頁設(shè)置,對動態(tài)網(wǎng)頁不設(shè)置緩存時間
可在Windows客戶端中使用fiddler查看網(wǎng)頁緩存時間
設(shè)置方法 :
可修改配置文件,在http段、 或者server段、 或者location段加入對特定內(nèi)容的過期參數(shù)
1、復(fù)制一張圖片到 nginx 的站點目錄下
#在自己的共享文件中 找到" game.jpg "
mkdir /abc
mount.cifs //192.168.56.1/lamp7 /abc
cd /abc/wl
//我的圖片在wl的包里
//復(fù)制圖片 game.jpg  到站點目錄下
cp /abc/wl/game.jpg /usr/local/nginx/html/
cd /usr/local/nginx/html

如何對Nginx服務(wù)進(jìn)行優(yōu)化

2、將圖片加入到網(wǎng)頁內(nèi)容中
#修改
vim index.html

#在 Welcome to nginx 的下面添加一段
<img src="game.jpg"/>

如何對Nginx服務(wù)進(jìn)行優(yōu)化

3、改nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
#在 http {}段,添加一個
location ~\.(gif|jepg|jpg|ico|bmp|png)$ {
    root    html;
    expires 1d;
}

如何對Nginx服務(wù)進(jìn)行優(yōu)化

4、啟動服務(wù)
#重啟服務(wù)
service nginx restart
5、在win10驗證

如何對Nginx服務(wù)進(jìn)行優(yōu)化

四、配置日志分割

隨著Nginx運(yùn)行時間增加,日志也會增加。為了方便掌握Nginx運(yùn)行狀態(tài),需要時刻關(guān)注Nginx日志文件
太大的日志文件對監(jiān)控是一個大災(zāi)難
定期進(jìn)行日志文件的切割
Nginx自身不具備日志分割處理的功能,但可以通過Nginx信號控制功能的腳本實現(xiàn)日志的自動切割,并通過Linux的計劃任務(wù)周期性地進(jìn)行日志切割
編寫腳本進(jìn)行日志切割的思路 :
設(shè)置時間變量
設(shè)置保存日志路徑;
將目前的日志文件進(jìn)行重命名
刪除時間過長的日志文件
設(shè)置cron任務(wù),定期執(zhí)行腳本自動進(jìn)行日志分割
1、編寫腳本實現(xiàn)分割
vim /opt/fenge.sh

#!/bin/bash
#Filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf

如何對Nginx服務(wù)進(jìn)行優(yōu)化

2、執(zhí)行腳本
chmod +x fenge.sh
./fengs.sh
//可以把當(dāng)前時間修改為2019.12.29,(可以自定義)
date -s 2019-12-29

如何對Nginx服務(wù)進(jìn)行優(yōu)化

3、設(shè)置cron任務(wù),定期執(zhí)行腳本自動進(jìn)行日志分割
執(zhí)行周期性計劃任務(wù)
crontab -e
0 1 * * * /opt/fengs.sh

五、實現(xiàn)連接超時

在企業(yè)網(wǎng)站中,為了避免同- -個客戶長時間占用連接,
造成資源浪費,可設(shè)置相應(yīng)的連接超時參數(shù),實現(xiàn)控制
連接訪問時間
使用Fiddler工具查看connection參數(shù)
超時參數(shù)講解 :
Keepalive_timeout
設(shè)置連接保持超時時間,一般可只設(shè)置該參數(shù),默認(rèn)為75秒,可根據(jù)網(wǎng)站的情況設(shè)置,或 者關(guān)閉,可在http段、server段、 或者location段設(shè)置
Client_header_timeout
指定等待客戶端發(fā)送請求頭的超時時間
Client_body_timeout
設(shè)置請求體讀超時時間
1、修改配置文件
cd /usr/local/nginx/conf  
vim nginx.conf
#在 http {}段 :下面添加

keepalive_timeout    65  180;
client_header_timeout 80;
client_body_timeout 80;

//重啟服務(wù)
service nginx restart

如何對Nginx服務(wù)進(jìn)行優(yōu)化

在win10用fidder驗證。

如何對Nginx服務(wù)進(jìn)行優(yōu)化

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI