国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Nginx日常應(yīng)用

IT那活兒 / 3360人閱讀
Nginx日常應(yīng)用
點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!

Nginx簡(jiǎn)介


1. 什么是Nginx
  • 一個(gè)高性能的HTTP和反向代理服務(wù)器;

  • 一個(gè)IMAP/POP3/SMTP代理服務(wù)器;

  • 由lgor Sysoev為俄羅斯訪問量第二的Rambler.ru站點(diǎn)開發(fā);

  • 源代碼以類BSD許可證的形式發(fā)布;

  • 以穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。

2. 為什么選擇Nginx

  • 在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品;
  • Nginx作為負(fù)載均衡服務(wù)器;
  • 作為郵件代理服務(wù)器;
  • Nginx是一個(gè)安裝非常的簡(jiǎn)單,配置文件非常簡(jiǎn)潔,Bug非常少的服務(wù)器。

市場(chǎng)份額


Nginx架構(gòu)

  • 一個(gè)master進(jìn)程和多個(gè)worker進(jìn)程;
  • master進(jìn)程用于管理worker進(jìn)程;
  • worker進(jìn)程處理基本網(wǎng)絡(luò)事件;
  • worker進(jìn)程是對(duì)等的,同等競(jìng)爭(zhēng)來自客戶端的請(qǐng)求;
  • worker進(jìn)程相互無影響,無需加鎖,且崩潰后可以快速重啟;
  • Nginx采用異常非阻塞方式處理請(qǐng)求(高并發(fā)的關(guān)鍵);
  • 模塊靜態(tài)編譯。
Nginx同redis類似都采用了io多路復(fù)用機(jī)制,每個(gè)worker都是一個(gè)獨(dú)立的進(jìn)程,不需要加鎖,所以省掉了鎖帶來的開銷, 但每個(gè)進(jìn)程里只有一個(gè)主線程,通過異步非阻塞的方式來處理請(qǐng)求,即使處理千上萬個(gè)請(qǐng)求。
其次,采用獨(dú)立的進(jìn)程,可以讓互相之間不會(huì)影響,一個(gè)進(jìn)程退出后,其它進(jìn)程還在工作,服務(wù)不會(huì)中斷,master進(jìn)程則很快啟動(dòng)新的worker進(jìn)程。當(dāng)然,worker進(jìn)程的異常退出,肯定是程序有bug了,異常退出,會(huì)導(dǎo)致當(dāng)前worker.上的所有請(qǐng)求失敗,不過不會(huì)影響到所有請(qǐng)求,所以降低了風(fēng)險(xiǎn)。

每個(gè)worker的線程可以把一個(gè)cpu的性能發(fā)揮到極致。所以worker數(shù)和服務(wù)器的cpu數(shù)相等是最為適宜的。設(shè)少了會(huì)浪費(fèi)cpu,設(shè)多了會(huì)造成cpu頻繁切換上下文帶來的損耗。

模塊化

1. 模塊化體系結(jié)構(gòu)
  • 核心+擴(kuò)展;
  • KISS(Keep it simple,stupid);
  • 更好的擴(kuò)展性。

2. 模塊分類

  • event module---獨(dú)立于 OS的時(shí)間處理機(jī)制的框架,及提供了各具體事件處理;
  • phase handler---handler模塊,負(fù)責(zé)處理客戶端請(qǐng)求并產(chǎn)生待響應(yīng)內(nèi)容;
  • output filter---filter模塊,負(fù)責(zé)對(duì)輸出的內(nèi)容進(jìn)行處理;
  • upstream---實(shí)現(xiàn)反向代理的功能,將真正的請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器上,并從后端服務(wù)器上讀取響應(yīng),發(fā)回客戶端;
  • load-balancer---負(fù)載均衡模塊。

模塊化安裝

1. 編譯安裝
./configure --prefix=/data/nginx --with-http_realip_module -
-with-http_sub_module --with-http_flv_module --with-
http_dav_module --with-http_gzip_static_module --with-
http_stub_status_module --with-http_addition_module --with-
http_ssl_module

2. 模塊化

  • --with-http_realip_module
    主要功能是在nginx訪問日志中去除代理IP,顯示客戶的真實(shí)IP;一般用于統(tǒng)計(jì)客戶地域,以及是否有流量攻擊。
  • --with-http_sub_module

    該模塊是一個(gè)過濾器,通過將一個(gè)指定的字符串替換為另一個(gè)字符串來修改響應(yīng)。

  • --with-http_flv_module

    啟用ngx_http_flv_module支持(提供尋求內(nèi)存使用基于時(shí)間的偏移量文件)。

  • --with-http_dav_module

    啟用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:創(chuàng)建集合,COPY和MOVE方法)。

  • --with-http_gzip_static_module

    在線實(shí)時(shí)壓縮輸出數(shù)據(jù)流。

  • --with-http_stub_status_module

    用于日常nginx運(yùn)行狀態(tài)監(jiān)控,如:當(dāng)前活動(dòng)連接數(shù),請(qǐng)求、響應(yīng)、空閑等連接數(shù)。

  • --with-http_addition_module

    啟用ngx_http_addition_module支持(作為一個(gè)輸出過濾器,支持不完全緩沖,分部分響應(yīng)請(qǐng)求)。

  • --with-http_ssl_module

    啟用ngx_http_ssl_module支持(使支持https請(qǐng)求,需已安裝openssl)。

  • --with-ipv6

    啟用ipv6支持。

配置文件

1. Main模塊
#user  cmpweb;
worker_processes  4; #worker進(jìn)程的數(shù)量,每個(gè)worker都可以并發(fā)處理多個(gè)請(qǐng)求,與CPU核數(shù)一致即可發(fā)揮最大性能。
worker_cpu_affinity 00000001 00000010 00000100 00001000; #該參數(shù)表示開啟四個(gè)進(jìn)程(默認(rèn)沒有開啟),每個(gè)進(jìn)程對(duì)應(yīng)每一個(gè)CPU內(nèi)核,以充分利用多核CPU資源。
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info

2. events 模塊

Events  {
use epoll; #Nginx事件驅(qū)動(dòng)器模型:linux采用epoll類型, kqueue一般用于FreeBSD系統(tǒng)
worker_connections  8192; #Nginx每個(gè)進(jìn)程的最大連接數(shù),即接收前端的最大請(qǐng)求數(shù)
}
3. http模塊
http {
include       mime.types; #文件擴(kuò)展名與文件類型映射表
default_type  application/octet-stream; #定義nginx能識(shí)別的網(wǎng)絡(luò)資源類型,默認(rèn)為text/plain
log_format  main $remote_addr|$remote_user|[$time_local]|"$request"|
$status|$body_bytes_sent|"$http_referer"|
"$http_user_agent"|"$http_x_forwarded_for"|
$upstream_addr|$upstream_response_time|$request_time’; #設(shè)置輸出日志格式,各參數(shù)之間采用豎線隔離,方便后期對(duì)日志檢索,設(shè)置為main類型
access_log  logs/access.log main; #采用main類型來記錄access日志
server_tokens off; #隱藏nginx的版本信息
sendfile        on; #開啟高效文件傳輸模式
keepalive_timeout  65; # http連接超時(shí)時(shí)間,經(jīng)觀察文件上傳一般在60s內(nèi)完成
gzip  on; #開啟文件壓縮,大幅提高頁面加載速度
}
4. server模塊

server {
listen 8003;
#虛擬主機(jī)IPV4服務(wù)端口
listen [::]:8003 ;
#虛擬主機(jī)IPV6服務(wù)端口
server_name 10.113.158.219;
#虛擬主機(jī)名稱
server_name [2409:8062:0804::0:3:0:0066];
#虛擬主機(jī)對(duì)應(yīng)IPV6名稱
location /iotportal {
#表示匹配訪問的目錄
proxy_buffer_size 256k;
#代理緩沖區(qū)大小
proxy_buffers 32 64k;
#代理緩沖區(qū)數(shù)量
proxy_busy_buffers_size 256k;
#同時(shí)傳輸?shù)娇蛻舳说腷uffer數(shù)量
#避免寫入磁盤
proxy_connect_timeout 120;
# nginx連接到后端服務(wù)器的連接超時(shí)時(shí)間
proxy_send_timeout 120;
#發(fā)送請(qǐng)求給upstream服務(wù)器的超時(shí)時(shí)間
proxy_read_timeout 240;
#從后端服務(wù)器讀超時(shí)時(shí)間
proxy_pass http://iotportal;
#被代理服務(wù)器的地址,包含傳輸協(xié)議、主機(jī)名稱或IP地址、端口號(hào)等要素
proxy_set_header Proxy-Client-IP
$remote_addr;
#代理服務(wù)器客戶端地址
proxy_set_header Host
$host:$server_port;
#轉(zhuǎn)發(fā)服務(wù)器地址及端口
}
location /api {…….}
location /dist {…….}
}

Log_format日志格式輸出

  • $remote_addr    客戶端地址    211.28.65.253

  • $remote_user    客戶端用戶名稱    --

  • $time_local    訪問時(shí)間和時(shí)區(qū)   18/Jul/2012:17:00:01 +0800

  • $request    請(qǐng)求的URI和HTTP協(xié)議    "GET /article-10000.html HTTP/1.1"

  • $http_host    請(qǐng)求地址,即瀏覽器中你輸入的地址(IP或域名)    www.wang.com 218.205.252.13

  • $status    HTTP請(qǐng)求狀態(tài)    200

  • $upstream_status    upstream狀態(tài)    200

  • $body_bytes_sent    發(fā)送給客戶端文件內(nèi)容大小    1547

  • $http_referer    url跳轉(zhuǎn)來源    http://218.205.252.13:8003/iotportal/frm/template/cs

  • s/template-iot.css

  • $http_user_agent    用戶終端瀏覽器等信息

    例如:瀏覽器、手機(jī)客戶端等      "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;

  • $http_x_forwarded_for    當(dāng)前端有代理服務(wù)器時(shí)

  • $upstream_addr    后臺(tái)upstream的地址,即真正提供服務(wù)的主機(jī)地址   218.205.252.13:8003

  • $request_time    整個(gè)請(qǐng)求的總時(shí)間    0.031

  • $upstream_response_time    請(qǐng)求過程中,upstream響應(yīng)時(shí)間    0.035

access日志輸出內(nèi)容


日志分析

1. remote_addr字段統(tǒng)計(jì)分析

2. upstream_status字段統(tǒng)計(jì)分析
分析方法:
cat access.2020-10-27.log |grep -v "200" |awk -F | {print $5,$10} | sort | uniq -c |sort -n -r

分析結(jié)果:

48 499 10.113.158.216:28191
46 499 10.113.158.217:28191
6 404 10.113.158.217:28191
3 404 10.113.158.216:28191
2 500 10.113.158.216:28191
2 404 -
2 403 -
1
結(jié)論:
10.113.158.216/217兩臺(tái)服務(wù)器上的api存在大量主動(dòng)斷連現(xiàn)場(chǎng),經(jīng)排查nginx認(rèn)為是不安全的連接,主動(dòng)拒絕了客戶端的連接;配置參數(shù) proxy_ignore_client_abort on;讓代理服務(wù)端不主動(dòng)關(guān)閉客戶端連接。
3. upstream_addr字段統(tǒng)計(jì)(后端服務(wù)訪問量)
根據(jù)訪問趨勢(shì)圖,重點(diǎn)保障業(yè)務(wù)高峰期資源使用狀態(tài),提前有效防范故障發(fā)生。
4. request_time字段統(tǒng)計(jì)(后端服務(wù)請(qǐng)求時(shí)間)
根據(jù)請(qǐng)求趨勢(shì)圖,及時(shí)處理后端超時(shí)服務(wù)。

本文作者:高智飛(上海新炬王翦團(tuán)隊(duì))

本文來源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/129338.html

相關(guān)文章

  • Docker構(gòu)建程序員的日常

    摘要:前言拋開那些強(qiáng)大的功能,今天我們來部署下本地的開發(fā)環(huán)境。提升開發(fā)效率和質(zhì)量是每位程序員必備的技能。這并不是一個(gè)非常認(rèn)真的操作,請(qǐng)勿使用到生產(chǎn)環(huán)境。 showImg(https://segmentfault.com/img/bVbg72t?w=800&h=528); 前言 拋開Docker那些強(qiáng)大的功能,今天我們來部署下本地的開發(fā)環(huán)境。并寫上幾個(gè)腳本來提高開發(fā)效率。 本章以MacOs系統(tǒng)...

    RyanQ 評(píng)論0 收藏0
  • Docker構(gòu)建程序員的日常

    摘要:前言拋開那些強(qiáng)大的功能,今天我們來部署下本地的開發(fā)環(huán)境。提升開發(fā)效率和質(zhì)量是每位程序員必備的技能。這并不是一個(gè)非常認(rèn)真的操作,請(qǐng)勿使用到生產(chǎn)環(huán)境。 showImg(https://segmentfault.com/img/bVbg72t?w=800&h=528); 前言 拋開Docker那些強(qiáng)大的功能,今天我們來部署下本地的開發(fā)環(huán)境。并寫上幾個(gè)腳本來提高開發(fā)效率。 本章以MacOs系統(tǒng)...

    zorpan 評(píng)論0 收藏0
  • 日常使用指令總結(jié)

    摘要:各種日常命令一點(diǎn)一點(diǎn)學(xué)習(xí)總結(jié)生成中選出一列里不重復(fù)的值列名表名后臺(tái)執(zhí)行一個(gè)腳本,并且寫到文件中在配置的路由規(guī)則,的配置查看狀態(tài)打包為全系統(tǒng)設(shè)定為單用戶設(shè)定下,略有不同 各種日常命令一點(diǎn)一點(diǎn)學(xué)習(xí)總結(jié) Git生成KEY ssh-keygen -t rsa -C youremail@example.com MySQL中選出一列里不重復(fù)的值 SELECT DISTINCT 列名 FROM...

    CoderStudy 評(píng)論0 收藏0
  • 日常使用指令總結(jié)

    摘要:各種日常命令一點(diǎn)一點(diǎn)學(xué)習(xí)總結(jié)生成中選出一列里不重復(fù)的值列名表名后臺(tái)執(zhí)行一個(gè)腳本,并且寫到文件中在配置的路由規(guī)則,的配置查看狀態(tài)打包為全系統(tǒng)設(shè)定為單用戶設(shè)定下,略有不同 各種日常命令一點(diǎn)一點(diǎn)學(xué)習(xí)總結(jié) Git生成KEY ssh-keygen -t rsa -C youremail@example.com MySQL中選出一列里不重復(fù)的值 SELECT DISTINCT 列名 FROM...

    darryrzhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<