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

資訊專欄INFORMATION COLUMN

Nginx日常應用

IT那活兒 / 3355人閱讀
Nginx日常應用
點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!

Nginx簡介


1. 什么是Nginx
  • 一個高性能的HTTP和反向代理服務器;

  • 一個IMAP/POP3/SMTP代理服務器;

  • 由lgor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發;

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

  • 以穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。

2. 為什么選擇Nginx

  • 在高連接并發的情況下,Nginx是Apache服務器不錯的替代品;
  • Nginx作為負載均衡服務器;
  • 作為郵件代理服務器;
  • Nginx是一個安裝非常的簡單,配置文件非常簡潔,Bug非常少的服務器。

市場份額


Nginx架構

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

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

模塊化

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

2. 模塊分類

  • event module---獨立于 OS的時間處理機制的框架,及提供了各具體事件處理;
  • phase handler---handler模塊,負責處理客戶端請求并產生待響應內容;
  • output filter---filter模塊,負責對輸出的內容進行處理;
  • upstream---實現反向代理的功能,將真正的請求轉發到后端服務器上,并從后端服務器上讀取響應,發回客戶端;
  • load-balancer---負載均衡模塊。

模塊化安裝

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,顯示客戶的真實IP;一般用于統計客戶地域,以及是否有流量攻擊。
  • --with-http_sub_module

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

  • --with-http_flv_module

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

  • --with-http_dav_module

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

  • --with-http_gzip_static_module

    在線實時壓縮輸出數據流。

  • --with-http_stub_status_module

    用于日常nginx運行狀態監控,如:當前活動連接數,請求、響應、空閑等連接數。

  • --with-http_addition_module

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

  • --with-http_ssl_module

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

  • --with-ipv6

    啟用ipv6支持。

配置文件

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

2. events 模塊

Events  {
use epoll; #Nginx事件驅動器模型:linux采用epoll類型, kqueue一般用于FreeBSD系統
worker_connections  8192; #Nginx每個進程的最大連接數,即接收前端的最大請求數
}
3. http模塊
http {
include       mime.types; #文件擴展名與文件類型映射表
default_type  application/octet-stream; #定義nginx能識別的網絡資源類型,默認為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’; #設置輸出日志格式,各參數之間采用豎線隔離,方便后期對日志檢索,設置為main類型
access_log  logs/access.log main; #采用main類型來記錄access日志
server_tokens off; #隱藏nginx的版本信息
sendfile        on; #開啟高效文件傳輸模式
keepalive_timeout  65; # http連接超時時間,經觀察文件上傳一般在60s內完成
gzip  on; #開啟文件壓縮,大幅提高頁面加載速度
}
4. server模塊

server {
listen 8003;
#虛擬主機IPV4服務端口
listen [::]:8003 ;
#虛擬主機IPV6服務端口
server_name 10.113.158.219;
#虛擬主機名稱
server_name [2409:8062:0804::0:3:0:0066];
#虛擬主機對應IPV6名稱
location /iotportal {
#表示匹配訪問的目錄
proxy_buffer_size 256k;
#代理緩沖區大小
proxy_buffers 32 64k;
#代理緩沖區數量
proxy_busy_buffers_size 256k;
#同時傳輸到客戶端的buffer數量
#避免寫入磁盤
proxy_connect_timeout 120;
# nginx連接到后端服務器的連接超時時間
proxy_send_timeout 120;
#發送請求給upstream服務器的超時時間
proxy_read_timeout 240;
#從后端服務器讀超時時間
proxy_pass http://iotportal;
#被代理服務器的地址,包含傳輸協議、主機名稱或IP地址、端口號等要素
proxy_set_header Proxy-Client-IP
$remote_addr;
#代理服務器客戶端地址
proxy_set_header Host
$host:$server_port;
#轉發服務器地址及端口
}
location /api {…….}
location /dist {…….}
}

Log_format日志格式輸出

  • $remote_addr    客戶端地址    211.28.65.253

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

  • $time_local    訪問時間和時區   18/Jul/2012:17:00:01 +0800

  • $request    請求的URI和HTTP協議    "GET /article-10000.html HTTP/1.1"

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

  • $status    HTTP請求狀態    200

  • $upstream_status    upstream狀態    200

  • $body_bytes_sent    發送給客戶端文件內容大小    1547

  • $http_referer    url跳轉來源    http://218.205.252.13:8003/iotportal/frm/template/cs

  • s/template-iot.css

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

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

  • $http_x_forwarded_for    當前端有代理服務器時

  • $upstream_addr    后臺upstream的地址,即真正提供服務的主機地址   218.205.252.13:8003

  • $request_time    整個請求的總時間    0.031

  • $upstream_response_time    請求過程中,upstream響應時間    0.035

access日志輸出內容


日志分析

1. remote_addr字段統計分析

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

分析結果:

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
結論:
10.113.158.216/217兩臺服務器上的api存在大量主動斷連現場,經排查nginx認為是不安全的連接,主動拒絕了客戶端的連接;配置參數 proxy_ignore_client_abort on;讓代理服務端不主動關閉客戶端連接。
3. upstream_addr字段統計(后端服務訪問量)
根據訪問趨勢圖,重點保障業務高峰期資源使用狀態,提前有效防范故障發生。
4. request_time字段統計(后端服務請求時間)
根據請求趨勢圖,及時處理后端超時服務。

本文作者:高智飛(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129338.html

相關文章

  • Docker構建程序員的日常

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

    RyanQ 評論0 收藏0
  • Docker構建程序員的日常

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

    zorpan 評論0 收藏0
  • 日常使用指令總結

    摘要:各種日常命令一點一點學習總結生成中選出一列里不重復的值列名表名后臺執行一個腳本,并且寫到文件中在配置的路由規則,的配置查看狀態打包為全系統設定為單用戶設定下,略有不同 各種日常命令一點一點學習總結 Git生成KEY ssh-keygen -t rsa -C youremail@example.com MySQL中選出一列里不重復的值 SELECT DISTINCT 列名 FROM...

    CoderStudy 評論0 收藏0
  • 日常使用指令總結

    摘要:各種日常命令一點一點學習總結生成中選出一列里不重復的值列名表名后臺執行一個腳本,并且寫到文件中在配置的路由規則,的配置查看狀態打包為全系統設定為單用戶設定下,略有不同 各種日常命令一點一點學習總結 Git生成KEY ssh-keygen -t rsa -C youremail@example.com MySQL中選出一列里不重復的值 SELECT DISTINCT 列名 FROM...

    darryrzhong 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<