nginx優化配置(轉)

簡介

1.隱藏版本號
2.修改Nginx用戶與組
3.配置Nginx網頁緩存時間
4.實現Nginx的日誌切割
5.配置Nginx實現連接超時
6.更改進程數
7.配置Nginx實現網頁壓縮功能
8.配置Nginx實現防盜鏈
9.FPM模塊進行參數優化

實驗環境

  • 系統環境:CentOS7.4

  • 服務器IP地址:192.168.100.71

  • 客戶端IP地址:192.168.100.72

  • yum掛載目錄:/mnt/sr0

  • 相關源碼包下載地址:百度雲下載   密碼:uhzm

搭建步驟

一、配置Nginx隱藏版本號

在生產環境中,需要隱藏Nginx的版本號,以避免安全漏洞的泄漏,使×××者不能針對特定版本進行×××

方法一:修改配置文件法

1、修改主配置文件

[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
Nginx深度優化

2、重啓Nginx服務

[root@Init5 ~]# nginx -t
Nginx深度優化

[root@Init5 ~]# service nginx restart #重啓服務

3、測試

[root@Init5 ~]# curl -I http://192.168.100.103

方法2:修改源碼法

1、安裝相關工具包

[root@Init5 ~]# yum -y install gcc gcc-c++ pcre-devel zlib-devel

2、創建Nginx進程用戶

[root@Init5 ~]# useradd -M -s /sbin/nologin nginx

3、解壓Nginx

[root@Init5 ~]# tar xvf nginx-1.6.0.tar.gz -C /usr/src/

4、修改源碼文件

[root@Init5 ~]# cd /usr/src/nginx-1.6.0/src/core/
[root@Init5 core]# vim nginx.h
Nginx深度優化

5、配置、編譯及編譯安裝

[root@Init5 core]# cd /usr/src/nginx-1.6.0/
[root@Init5 nginx-1.6.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_stub_status_module

參數解析:

prefix #指定安裝位置
user=nginx #指定nginx系統用戶
group=nginx #指定組
with-http_stub_status_module #指定統計模塊

[root@Init5 nginx-1.6.0]# make && make install#編譯及編譯安裝

6、優化路徑

[root@Init5 nginx-1.6.0]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

7、編輯Nginx服務腳本

[root@Init5 ~]# vim /etc/init.d/nginx

添加以下腳本:

#!/bin/bash
# chkconfig: 35 99 20
# description:Nginx Server Control Script
PROG="/usr/local/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 (start|stop|restart|reload)"
exit 1 #非正常退出
esac
exit 0 #正常退出

[root@Init5 ~]# chmod +x /etc/init.d/nginx #賦予權限
[root@Init5 ~]# chkconfig --add nginx #添加系統服務
[root@Init5 ~]# service nginx start

8、測試

[root@Init5 ~]# curl -I http://192.168.100.103
Nginx深度優化

二、修改Nginx用戶與組

Nginx運行時進程需要有用戶與組的支持,以實現對網站文件讀取時進行訪問控制,Nginx默認使用nobody用戶賬號與組賬號,一般也要進行修改

方法1:編譯安裝時指定

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx …… 略

方法2:修改配置文件

1、修改主配置文件

[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
Nginx深度優化

2、重啓Nginx服務

[root@Init5 ~]# service nginx restart

3、測試

[root@Init5 ~]# ps aux | grep nginx
Nginx深度優化

三、配置網頁緩存時間

當Nginx將網頁數據返回給客戶端後,可設置緩存的時間,以方便在日後進行相同內容的請求時直接返回,以避免重複請求,加快了訪問速度,一般針對靜態網頁進行設置,對動態網頁不用設置緩存時間

1、編輯默認首頁

[root@Init5 ~]# cp qingzi.jpg /usr/local/nginx/html/ #將測試圖片拷貝到站點目錄下
[root@Init5 ~]# cd /usr/local/nginx/html/
[root@Init5 html]# vim index.html #編輯默認首頁
Nginx深度優化

2、編輯主配置文件

[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
Nginx深度優化

3、重啓服務

[root@Init5 ~]# service nginx restart

4、測試

Nginx深度優化

四、實現Nginx的日誌切割

隨着Nginx運行時間的增加,產生的日誌也會增加,爲了方便掌握Nginx的運行狀態,需要時刻關注Nginx日誌文件,而太大的日誌文件對監控是一個大災難。Nginx沒有類似Apache的crolog日誌分割處理的功能,但是,可以通過Nginx的信號控制功能的腳本來實現日誌的自動切割,並將腳本加入到Linux的計劃任務中,讓腳本在每天的固定時間執行,便可實現日誌分割功能

1、編輯日誌分割腳本

[root@Init5 ~]# vim /opt/fenge.sh

添加以下腳本信息:

#!/bin/bash
# Filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d") #獲取當前時間的前一天,也就是往前推一天 
logs_path="/var/log/nginx" #指定保存Ngixn日誌路徑 
pid_path="/usr/local/nginx/logs/nginx.pid" #Nginx進程ID路徑 
[ -d $logs_path ] || mkdir -p $logs_path #判斷定義的路徑是否存在,不存在創建目錄 
mv /usr/local/nginx/logs/access.log $logs_path/bt.com-access.log-$d #將Nginx剪切至定義的目錄下,並且用日期定義名稱 
kill -USR1 $(cat $pid_path) #平滑重載Nginx服務 
find $logs_path -mtime +30 | xargs rm -rf #文件最後修改的時間超過30天,直接刪除

[root@Init5 ~]# chmod +x /opt/fenge.sh #添加執行權限

2、測試腳本

[root@Init5 ~]# date #查看當前時間
Nginx深度優化

[root@Init5 ~]# sh /opt/fenge.sh #執行腳本
[root@Init5 ~]# ls /var/log/nginx/
Nginx深度優化

[root@Init5 ~]# date -s 07/17/18 #將時間往後推1天(7月17號)
Nginx深度優化

[root@Init5 ~]# ll /var/log/nginx/
Nginx深度優化

3、引入週期性計劃任務

[root@Init5 ~]# crontab -e

30 1 * /opt/fenge.sh #每天凌晨01:30定期執行腳本自動進行

五、配置Nginx實現連接超時

在企業網站中,爲了避免同一個客戶長時間佔用連接,造成資源浪費,可設置相應的連接超時參數,實現控制連接訪問時間

1、修改主配置文件

[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
Nginx深度優化

2、重新啓動Nginx服務

[root@Init5 ~]# service nginx restart

3、測試

Nginx深度優化

六、更改進程數

在高併發場景,需要啓動更多的nginx進程以保證快速響應,以處理用戶的請求,避免造成阻塞

1、查看Nginx運行的個數

[root@Init5 ~]# ps aux | grep 'nginx'
Nginx深度優化

2、查看物理CPU核數

[root@Init5 ~]# cat /proc/cpuinfo | grep -c "physical"

3、修改主配置文件

[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf
Nginx深度優化

4、重啓服務

[root@Init5 ~]# service nginx restart

5、再次查看Nginx運行的個數

Nginx深度優化

七、配置Nginx實現網頁壓縮功能

Nginx的ngx_http_gzip_module壓縮模塊(默認已經添加,不需要--with)提供了對文件內容壓縮的功能,允許nginx服務器將輸出內容在發送客戶端之前進行壓縮,以節約網站帶寬,提升用戶的訪問體驗,默認已經安裝,可在配置文件中加入相應的壓縮功能參數對壓縮性能進行優化

1、修改主配置文件

[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf

添加以下參數:

gzip on:開啓gzip #壓縮輸出
zip_min_length 1k #用於設置允許壓縮的頁面最小字節數,低於1k不壓縮
gzip_buffers 4 16k #表示申請4個單位爲16k的內存作爲壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzp壓縮結果
gzip_http_version 1.0 #用於設置識別http協議版本,默認是1.1
gzip_comp_level 2 #用來指定gzip壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理速度最慢,使用默認即可
gzip_types text/plain #壓縮類型,是就對哪些網頁文檔啓用壓縮功能,類型與類型之間用空格隔開,可以指定多個
gzip_vary on #選項可以讓前端的緩存服務器緩存經過gzip壓縮的頁面

八、配置Nginx實現防盜鏈

在企業網站服務中,一般都要配置防盜鏈功能以避免網站內容被非法盜用,造成經濟損失。Nginx防盜鏈功能也非常強大。在默認情況下,只需要進行簡單的配置,即可實現防盜鏈處理

實驗環境

IP地址域名用途
192.168.100.103www.bt.com源主機
192.168.100.20www.test.com盜鏈網站

1、源主機測試頁面

Nginx深度優化

2、盜鏈網站盜用源主機圖片

[root@raid ~]# vim /usr/local/nginx/html/index.html #編輯默認首頁
Nginx深度優化

3、訪問測盜鏈網站測試頁面

Nginx深度優化

4、源主機配置防盜鏈

[root@Init5 ~]# vim /usr/local/nginx/conf/nginx.conf #編輯主配置文件
Nginx深度優化

[root@Init5 ~]# nginx -t #檢測語法
Nginx深度優化

[root@Init5 ~]# service nginx restart #重啓Nginx服務

5、測試

Nginx深度優化

九、FPM模塊進行參數優化

Nginx的PHP解析功能實現如果是交由FPM處理的,爲了提高PHP的處理速度,可對FPM模塊進行參數的調整
[root@Init5 etc]# vim php-fpm.conf

pid = run/php-fpm.pid #確定pid文件位置
pm = dynamic #動態方式
pm.max_children=50 #最大啓動進程數量是50個,相當於水桶,代表桶的容積
pm.start_servers = 20 #啓動時開啓的進程數進程是20個
pm.min_spare_servers = 5 #最小空閒進程數是5個,低於這個數,每秒鐘會產生一個新的進程
pm.max_spare_servers = 20 #最大空閒進程數是20個,客戶不連接PHP,最多允許的空間進程數


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章