2019.9.16 nginx配置優化

1、配置Nginx隱藏版本號javascript

查看頭部信息:curl -I http://192.168.200.114css

一、修改源碼包(在安裝以前)html

若是裝完了nginx先卸掉,步驟以下:java

[root@localhost ~]# killall -9 nginx
[root@localhost ~]# rm -rf /usr/local/nginx/
[root@localhost ~]# cd /usr/src/nginx-1.16.1/
[root@localhost nginx-1.16.1]# make clean
rm -rf Makefile objs
[root@localhost nginx-1.16.1]# rm -rf /usr/src/nginx-1.16.1/linux

 正式的步驟:nginx

[root@localhost ~]# tar xf nginx-1.16.1.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.16.1/
[root@localhost nginx-1.16.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[root@localhost nginx-1.16.1]# vim src/core/nginx.hweb

 

[root@localhost nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make installsql

 

 二、修改配置文件vim

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf瀏覽器

 

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# killall -HUP nginx

 

 

 補充:LNMP:Linux  Nginx  Mysql  Php

LAMP:Linux   Apache  Mysql  Php

WAMP:Windows  Apache  Mysql  Php

LNMMP:LNMP:Linux  Nginx  Mysql   Memcached  Php

LNMT:Linux  Nginx  Mysql  Tomcat

2、修改Nginx 的用戶和組

兩種方式:在安裝時直接--user=nginx/--group=nginx

或安裝以後 在配置文件裏修改

若是不去修改用戶和組的話nginx默認是一個低級權限的用戶的身份(nobody)來運行的,它對系統的資源以及文件的管控是有限制的。

 一、[root@localhost ~]# useradd -M -s /sbin/nologin nginx

[root@localhost nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install

二、[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

 

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# killall -HUP nginx
[root@localhost ~]# ps uax | grep nginx

root 42587 0.0 0.1 48084 1980 ? Ss 15:26 0:00 nginx: master process nginx
nginx 43272 0.0 0.3 51908 3436 ? S 16:26 0:00 nginx: worker process
nginx 43273 0.0 0.3 51908 3436 ? S 16:26 0:00 nginx: worker process
root 43279 0.0 0.0 112656 972 pts/2 R+ 16:26 0:00 grep --color=auto nginx

3、配置Nginx網頁緩存時間

當Nginx將網頁數據返貨給客戶端後,可設置資源在客戶端的緩存的時間,以方便客戶端在往後進行相同內容的請求時直接返回,以免重複請求,加快了訪問的速度,通常針對靜態網頁進行設置,對動態網頁不可設置緩存時間,可在Windows客戶端中使用fiddier查看網頁緩存時間。

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

 

 測試:如今網上下載一個圖片linux.jpg

[root@localhost ~]# cd /usr/local/nginx/html/

[root@localhost html]# rz -E
rz waiting to receive.

[root@localhost html]# vim index.html

 [root@localhost html]# killall -HUP nginx

 

 

 4、實現Ngnix日誌的切割(腳本)

[root@localhost ~]# tail -f /usr/local/nginx/logs/access.log 這是Nginx的一個日誌

#!/bin/bash
#cut_nginx_log.sh

[root@localhost ~]# vim /opt/cut_nginx_log.sh

添加如下內容:
datetime=$(date -d "-1 day" "+%Y%m%d")
log_path="/usr/local/nginx/logs"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $log_path/backup ] || mkdir -p $log_path/backup
if [ -f $pid_path ]
then
mv $log_path/access.log $log_path/backup/access.log-$datetime
kill -USR1(它會給進程傳遞一個信號:建立一個新的日誌) $(cat $pid_path)
find $log_path/backup -mtime +30 | xargs rm -f(只保留近30天的日誌)
else
echo " Error,Nginx is not working!" | tee -a /var/log/massages
fi

[root@localhost ~]# chmod +x /opt/cut_nginx_log.sh
[root@localhost ~]# /opt/cut_nginx_log.sh
[root@localhost ~]# ls /usr/local/nginx/logs/backup/
access.log-20190915

生成了一個新的日誌

 [root@localhost ~]# cat /usr/local/nginx/logs/access.log   裏面是空的,由於是新產生的

[root@localhost ~]# tail -f /usr/local/nginx/logs/access.log

 

 

[root@localhost ~]# killall -9 nginx   //把nginx關掉
[root@localhost ~]# rm -rf /usr/local/nginx/logs/nginx.pid  //把pid文件刪除

[root@localhost ~]# /opt/cut_nginx_log.sh    //在執行一遍就報錯了
Error,Nginx is not working!   

而且這個信息還會保存到 /var/log/massages

作一個週期性的計劃任務:分時日月周

[root@localhost ~]# crontab -e

 5、配置Nginx鏈接超時

在企業網站中,爲了不同一個客戶長時間佔用鏈接,形成服務資源浪費,能夠設置相應的鏈接超時參數,實現控制鏈接訪問時間。

 keepalive_timeout  65;  //保持的鏈接時間,默認爲65秒

client_header_timeout 60;   //設置客戶端的等待的請求頭的時間

client_body_timeout 60;     //等待客戶端的主體

 

 

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# nginx
[root@localhost ~]# killall -HUP nginx

6、更改Nginx運行的進程數量

修改配置文件的worker_processes參數,通常設置爲CPU的個數或者倍數

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

用戶訪問網站時就是在網站上下載資源

Nginx的ngx_http_gzip_module壓縮模塊提供了對文件內容壓縮的功能,容許nginx服務區將輸出內容發送到客戶端之間進行壓縮,以節約網站貸款,提高用戶的訪問體驗,模塊默認以安裝。

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

添加如下內容:

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss;

 

 

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# killall -HUP nginx

8、配置Nginx實現防盜鏈功能

再開一個虛擬機192.168.200.115,安裝Nginx

115想要盜取114的圖片

複製114的圖片地址:http://192.168.200.114/linux.jpg

需修改配置文件:[root@localhost ~]# vim /usr/local/nginx/html/index.html

 

 

 

 開始防盜:

配置說明:valid referers 設置信任的網站

none      瀏覽器在訪問時有一個referer,告訴瀏覽器我是從那個頁面的連接過來的,服務器基此可得到一些信息用於處理

blocked   referer不爲空的狀況,用戶直接訪問圖片

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

添加如下內容:

location ~* \.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {
valid_referers none blocked *.source.com source.com;
if ($valid_referers) {
rewrite ^/ http://www.source.com/error.jpg;
}
}

[root@localhost ~]# vim /usr/local/nginx/html/error.txt

 

[root@localhost ~]# killall -HUP nginx

去115的網頁強制刷新(Ctrl+F5)

 

 

 9、對FPM模塊進行參數優化

Nginx的PHP解析功能實現若是是交由FPM(fastcgi 進程管理器)處理的,爲了提升PHP的處理速度。能夠對FPM模塊進行參數跳轉

Ngingx是經過FPM調用的PHP

FPM優化參數:

pm:使用哪一種方法啓動fpm進程,能夠說是static和dynamic。前者將產生固定數量的fpm進程,後者將以動態的方式產生fpm進程。

pm.max_children:static方式下開啓的fpm進程數

pm.start_servers:動態方式下初始的fpm進程數量

pm.min_spare_servers:動態方式下最小的fpm空閒進程數

pm.max_spare_servers:動態方式下最大的fpm空閒進程數

注:以上的調整要根據服務器的內存與服務器的負載進行調整

10、Ngingx爲目錄添加訪問控制

一、用戶訪問控制

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

在配置文件裏添加如下內容

location /admin {
stub_status on;
access_log off;
}

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# killall -HUP nginx

 若是誰均可以金的話就不安全,因此要作一些限制

[root@localhost ~]# yum -y install httpd-tools

[root@localhost ~]# which htpasswd
/usr/bin/htpasswd

第一次建立須要用-c,以後就不用了,由於若是一直有-c就一直只有一個用戶,它會刷新重建

[root@localhost ~]# htpasswd -c /usr/local/nginx/conf/.user lty
New password:
Re-type new password:
Adding password for user lty
[root@localhost ~]# cat /usr/local/nginx/conf/.user
lty:$apr1$PdqILTOU$MyDqX6OgHAJLilDq4m7oN/

basic:是一種認證方式,其實有兩種認證方式:基本(基準)認證,摘要認證

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

添加內容:

auth_basic "Nginx Status";
auth_basic_user_file /usr/local/nginx/conf/.user;

 

 

二、客戶端地址訪問控制

在配置文件中添加 allow 192.168.200.0/24;就是容許200網段的客戶端訪問

deny 192.168.200.0/24;就是拒絕訪問

11、自定義錯誤頁面

[root@localhost ~]# cd /usr/local/nginx/html/

[root@localhost html]# rz -E
rz waiting to receive.

[root@localhost html]# vim 40x.html 在裏面寫入:

<img src="error.jpg" />

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

error_page 401 403 404 408 /40x.html;
location = /40x.html {
root html;
}

[root@localhost html]# killall -HUP nginx

 

 12、自動索引

[root@localhost ~]# cd -
/usr/local/nginx/html
[root@localhost html]# mkdir mirrors
[root@localhost html]# cd mirrors
[root@localhost mirrors]# mkdir {3..7}.{1..9}
[root@localhost mirrors]# ls
3.1 3.4 3.7 4.1 4.4 4.7 5.1 5.4 5.7 6.1 6.4 6.7 7.1 7.4 7.7
3.2 3.5 3.8 4.2 4.5 4.8 5.2 5.5 5.8 6.2 6.5 6.8 7.2 7.5 7.8
3.3 3.6 3.9 4.3 4.6 4.9 5.3 5.6 5.9 6.3 6.6 6.9 7.3 7.6 7.9

[root@localhost mirrors]# cd 7.9
[root@localhost 7.9]# ls
[root@localhost 7.9]# touch CentOS7.9.iso
[root@localhost 7.9]# cd
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf  添加內容:

location /mirrors {
autoindex on;
}

 

 

 

 十3、目錄別名功能

十4、經過UA實現手機端和電腦端的分離

實現nginx區分pc和手機訪問不一樣的網站,是物理上徹底隔離的兩套網站(一套移動端,一套pc端)這樣帶來的好處是pc端和移動端的內容能夠不同,移動版網站不須要包含特別多的內容,只要包含必要的文字和較小的圖片,這樣會更節省流量,有好處固然也會增長困難,難題就是你須要維護兩套設備,而且須要自動識別出來用戶的物理設備並跳轉到相應的網站,當判斷錯誤時,用戶能夠手動切換回正確的網站。

十5、nginx平滑升級版本

一、平滑升級概述

隨着網站併發訪問量愈來愈高,nginx web服務器也愈來愈流行,nginx換代愈來愈頻繁,1.15.2版本的nginx更新了許多的新功能,生產環境中版本升級是必然的,可是線上業務不能停,此時nginx升級就是運維的重要的工做了。

二、nginx平滑升級原理

多進程模式下的請求分配方式

Nginx默認工做在多進程模式下,即主進程(master process)啓動後完成配置加線和端口綁定等工做,fork出指定數量的工做進程(worker process),這些子進程會持有監聽端口的文件描述符(fd)並經過在該描述上添加監聽事件來接受鏈接(accept)。

信號的接受和處理

Nginx主進程在啓動完成後會進入等待的狀態,負責相應各種系統消息,如:SIGCHLD、SIGHP、SIGUSR2等。

Nginx信號簡介

主進程支持的信號:

  TIME INT:馬上退出

  QUIT:等待工做進程結束後再退出

  KILL:強制終止進程

  HUP:從新加載配置文件,使用新的配置啓動工做進程,逐步關閉舊的進程

  USR1:從新打開日誌文件

  USR2:啓動新的主進程,實現熱升級

  WINCH:逐步關閉工做進程

首先查看一下執行安裝的命令

[root@localhost ~]# nginx -V
nginx version: Apache/9.6.24
built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module

爲了保證明驗順利,先殺死,再開

[root@localhost ~]# killall -9 nginx

[root@localhost ~]# nginx 

[root@localhost ~]# tar xf nginx-1.16.1.tar.gz -C /usr/src/

[root@localhost ~]# cd /usr/src/nginx-1.16.1/

[root@localhost nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make(不加make install,這樣文件生成了就尚未放在指定的位置上)

三、備份二進制文件,用新版本的替換

[root@localhost nginx-1.16.1]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx old   把1.15版本的備份更名爲old

[root@localhost nginx-1.16.1]# cp objs/nginx /usr/local/nginx/sbin/    把1.16版本的拷進去,這樣裏面新舊版本都有了

四、確保配置文件無報錯

[root@localhost nginx-1.16.1]# nginx -t     新的程序加載舊的配置文件看看有沒有問題

五、發送USR2信息

[root@localhost ~]# ps ax | grep nginx

[root@localhost ~]# kill USR2  50882

[root@localhost ~]# ps ax | grep nginx

完成!!!

六、發送WINCH信號

[root@localhost ~]# kill WINCH 50882    舊的工做進程逐步退出

注:回滾步驟,發送HUP信號

七、發送QUIT信號

[root@localhost ~]# kill QUIT  50882

結束!!!

十6、查看CPU相關信息

一、查看CPU型號

[root@localhost ~]# grep "model name" /proc/cpuinfo | uniq

[root@localhost ~]# grep 'physical id' /proc/cpuinfo

二、查看物理CPU個數

[root@localhost ~]# grep 'physical id' /proc/cpuinfo | uniq | ec -l

三、查看CPU核心數

grep 'core id' /proc/cpuinfo | sort -u | wc -l

四、查看CPU線程數

grep 'processor' /proc/cpuinfo | sort -u | wc -l

相關文章
相關標籤/搜索