linux企業部分:nginx的并發優化、負載均衡、反向代理、平滑升級、演算法擴展、限流、配置管理、重定向
- 一、并發優化
- 二、負載均衡
- 1. 默認輪詢
- 2.改變權重
- 3.ip_hash
- 4.備用機
- 三、平滑升級
- 四、演算法擴展
- 五、限流
- 限制并發連接數
- 限制每秒請求數量
- 限制每次訪問請求數量,排隊
- 無延遲
- 限制帶寬
- 六、配置管理
- 自動索引
- nginx exprie 快取配置
- 日志輪詢
- 日只記錄管理,節省磁盤的io消耗
- 站點目錄和檔案限制
- 中文亂碼解決
- 七、重定向
- 1、防止域名惡意決議到服務器ip
- 拒絕訪問,報錯型別為500
- 將所有訪問重定向到指定域名
- 2、埠重定向
- 3、虛擬主機重定向
- www.westos.org重新定向到bbs.westos.org
- bbs.westos.org重定向www.westos.org
一、并發優化
ulimit -a ##open files:1024,用戶可以打開的最大檔案數量

sysctl -a | grep file
free -m

二、負載均衡
1. 默認輪詢
vim /usr/local/nginx/conf

nginx -t ##檢查檔案中有沒有語法錯誤

nginx -s reload ##重啟服務
scp -r nginx/ xyf2:/usr/local scp -r nginx/ xyf2:/usr/local 在sever2和sever3中做以下操作: ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin ##建立nginx鏈接到/usr/local/sbin下便于全域使用nginx指令 vim /usr/local/nginx/conf/nginx.conf,檔案的修改如下圖:

echo sever > /usr/local/nginx/html/index.html
編輯決議檔案:
vim /etc/hosts

在sever1中執行以下指令:
curl www.westos.org

2.改變權重
vim /usr/local/nginx/conf/nginx.conf
權重的默認值是1,改變權重后,權重值大的出現頻率相對高,反之則低,
此時,權重大的sever2與sever3出現的頻率比,接近于權重比
3.ip_hash
ip_hash 對后端進行健康檢測,當后端出現問題后,會調度到其他后端,當所有后端出現問題時,則會出現502型別的服務器報錯,
關閉掉目前有的兩個后端,

4.備用機
在sever1中:
vim /usr/local/nginx/conf/nginx.conf cd /usr/local/nginx/html echo hello world > index.html

三、平滑升級
平滑升級是為了在升級服務版本時,不影響服務的正常使用,服務在不停止的情況下,換代升級,
需要在sever1主機中,設定可進行的行程數為2,安裝一個版本更高的nginx,重新編譯、make,

nginx -s reload cd ~ lftp 172.25.254.250 get 高于現有nginx的壓縮包 exit tar zxf 高版本nginx壓縮包 cd 高版本nginx解壓后的目錄中 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio ##編譯 make
完成后,對舊版本的nginx進行備份,并拷貝新的nginx,
cd 舊版本的nginx目錄中 cd /usr/local/local/sbin cp nginx nginx.old
備份完成后
cd 高版本nginx目錄中 cd objs \cp -f nginx /usr/local/nginx/sbin ##拷貝新程式
ps ax | grep nginx ##獲取當前版本nginx主行程pid,及master行程,

kill -USR2 5438 ##開啟新版本
kill -WINCH 7010
kill -WINCH 7011
關閉worker行程
curl -I localhost ##查看版本號,
版本回退,操作和平滑升級是一樣的,
四、演算法擴展
vim /usr/local/nginx/conf/nginx.con為上圖中的樣子,
這時由于sticky語法模塊,nginx并不支持,nginx.conf檔案語法檢測錯誤,
想要讓sticky模塊被nginx識別,要先對nginx進行擴展,
注釋掉檔案中的sticky,停掉nginx的服務,
下載sticky模塊包:lftp 172.25.254.250
解壓完成后,
cd /nginx-1.20.1 make clean ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42 make cd objs \cp -f nginx /usr/local/nginx/sbin/
做完這些操作后,vim /usr/local/nginx/conf/nginx.conf
解開sticky的注釋,
這時,nginx服務可以成功開啟了,證明sticky模塊擴展成功,
五、限流
限制并發連接數
ab -c10 -n100 http://172.25.37.1/download/vim.jp

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

nginx -s reload ##更改組態檔后,重啟服務
請求通過時,失敗報告變多,
限制每秒請求數量
在真機測驗時,做完每秒限制后,因為每秒通過一個請求,其他請求都被拒絕,
nginx -s relaod ##更改完組態檔后,重啟服務,

限制每次訪問請求數量,排隊

nginx -s relaod ##更改完組態檔后,重啟服務
此時,發起請求時,會出現提示等待界面,
請求時間,也會變長,因為之前做過每秒只允許通過一個請求的限制,且一次訪問只處理5個請求,除了第一個請求不需要排隊外,完成所有請求大約要9秒左右,
無延遲
無延遲的設定,意思是在有訪問時不考慮等待時間的問題,只處理第一時間可以處理的請求,之前設定過第一時間只處理5個請求,在這基礎上,除了第一個請求以及之后的5個請求,一共6個請求,剩下的請求會失敗,

nginx -s reload ####更改完組態檔后,重啟服務,

限制帶寬
我們平日里在網盤或者其他資源分享途徑下載時,發現最開始很快,但最終下載速度會被維持在一個穩定的區間內,這個其實就是受到帶寬限制的影響,
這里限制帶寬每秒200k,
我們訪問的檔案大小為444k,共訪問10次,算下來結束這次訪問大約需要20秒左右,(之前做過的無延遲設定要注釋掉,)

六、配置管理
自動索引
自動索引的設定,可以在訪問瀏覽器時,更加方便,簡單,很大程度上避免了使用程序中繁瑣地輸入步驟,

nginx -s relaod ##更改完設定后重啟服務,
測驗:
在瀏覽器搜索172.25.37.1/download

nginx exprie 快取配置
快取可以降低網路的帶寬,提高訪問的速度,
組態檔中編輯快取時間為365天,
真機中測驗:
curl -I 172.25.37.1/download/vim.jpg

顯示快取時間最終到2022年的8月26號,
日志輪詢
cd /opt/ ##該目錄是系統自有的
vim nginx.sh
#!/bin/bash
cd /usr/local/nginx/logs && mv access_$(date +%F -d -1day).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
cd /usr/local/nginx/logs
ls ----> access__2021-09-04.log
日只記錄管理,節省磁盤的io消耗
vim /usr/local/nginx/conf/nginx.conf

nginx -s reload ##更改完組態檔后,重啟服務,
測驗:
網頁搜索:172.25.37.1/status

站點目錄和檔案限制
vim /usr/local/nginx/conf/nginx.conf(deny這一行得注釋掉)

nginx -s reload ##更改完組態檔后,重啟服務
測驗:真機與sever(172.25.37.1)
curl localhost/status
真機:
sever1:

組態檔中設定只允許172.25.37.1這臺主機可以訪問,其他反訪問請求全部拒絕,
中文亂碼解決
nginx不支持中文字符的,在訪問瀏覽器時,中文默認會成為亂碼,
cd /usr/local/nginx/html vim index.html: hellow world 您好世界
網頁搜索:172.25.37.index.html
可以給看到,“您好世界”這個中文字串是亂碼,
組態檔中編入charset utf-8,重啟服務后,nginx服務就會支持中文,
此時瀏覽器訪問:172.25.37.1/index.html:
中文亂碼的問題得到解決,
七、重定向
1、防止域名惡意決議到服務器ip
拒絕訪問,報錯型別為500

nginx -s reload ##更改組態檔后,重啟服務
測驗:
瀏覽器訪問:172.25.37.1
報錯型別為500,
將所有訪問重定向到指定域名
vim /usr/local/nginx/conf/nginx.conf

nginx -s reload ##更改組態檔后,重啟服務

2、埠重定向
編輯組態檔,將80埠定向到443埠

cd /etc/pki/tls/certs make cert.pem mv cert.pem /usr/local/nginx/conf nginx -t nginx -s reload netstat -antlp | grep nginx
測驗:
curl -I www.westos.org

3、虛擬主機重定向
!!!注意決議檔案的撰寫!!!
www.westos.org重新定向到bbs.westos.org
vim /usr/local/nginx/conf/nginx.conf

nginx -s reload
測驗:
curl -I www.westos.org
瀏覽器,輸入www.westos.org,會跳轉到bbs.westos.org

bbs.westos.org重定向www.westos.org

nginx -s reload
測驗:
curl -I bbs.westos.org
瀏覽器,輸入bbs.westos.org,會跳轉到www.westos.org/bbs

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/298082.html
標籤:其他
