nginx 注釋配置及詳解

前言

? ? DMZ(Demilitarized Zone) 非軍事區,生產環境 WEB 服務部署的區域,公司的架構為一臺nginx 充當 load balance 服務,負載到兩臺 nginx 上面,反向代理至后臺服務,但是nginx 用的全是默認配置加上 proxy_pass?和 upstream,沒有進行針對性的優化。

?

nginx 進程配置

? ? 除了可以使用 ulimit 命令對內核參數進行配置,nginx 也支持對自身使用內核資源進行配置。

? ? nginx 默認使用一個 cpu 資源,即開啟一個進程處理 web 請求,默認進程打開的最大連接數為 1024,這在生產上面是遠遠不夠的。

? ? 配置如下:

????

#user
user nobody;
#pid file 
pid logs/nginx.pid;#--------------------------- 進程---------------------------
#worker進程數,通常設置參考服務器 CPU 數量,auto為自動檢測
#worker_process 1;
worker_processes auto;
#進程分配的 cpu
worker_cpu_affinity 000000001 00000010 00000100 00010000 00100000 01000000 10000000;
#worker進程打開最大文件描述符數,最好與 ulimit -u 保持一致
worker_rlimit_nofile 100000;
#全局錯誤日志
error_log  logs/error.log;#events模塊中包含nginx中所有處理連接的設置
events {#worker進程同時打開的最大連接數,理論上每臺 nginx 服務器的最大連接數為 worker_process * worker_connectionsworker_connections 102400;#告訴nginx收到一個新鏈接通知后接受盡可能多的鏈接multi_accept on;#設置用于復用客戶端線程的輪訓方法,使用 epoll 的 I/O 模型use epoll;
}

?

http 域配置

? ? http 模塊配置 nginx 處理 http 請求,是 nginx 的核心配置,也是優化 nginx 的關鍵,大多數 nginx 的功能都是圍繞著 http 域來進行的。

????

http {#打開或關閉錯誤頁面中的nginx版本號,生產環境中這些是需要關閉的,降低版本號帶來的漏洞概率。server_tokens off;#server_tag off;#server_info off;#優化磁盤IO設置,指定nginx是否調用sendfile函數來輸出文件,普通應用設為on,下載等磁盤IO高的應用,可設為offsendfile on;#設置nginx在一個數據包里發送所有頭文件,而不是一個接一個的發送tcp_nopush on;#設置nginx不要緩存數據,而是一段一段的發送,當需要及時發送數據時,就應該給應用設置這個屬性,這樣發送一小塊數據信息時就不能立即得到返回值tcp_nodelay on;#---------------------------日志---------------------------#設置nginx是否記錄訪問日志,關閉這個可以讓讀取磁盤IO操作更快access_log on;#設置nginx只記錄嚴重錯誤#error_log logs/error.log crit;#定義日志格式,變量的意思另附博客詳解,定義的日志格式可在 access_log logs/access.log main 中選取log_format main '$remote_addr - $remote_user [$time_local] '' "$request"  $status  $body_bytes_sent  '' "$http_referer"   "$http_user_agent" ';log_format porxy '$http_x_forwarded_for - $remote_user [$time_local] '' "$request" $status $body_bytes_sent '' "$http_referer" "$http_user_agent" ';?#設置日志文件緩存(默認是 off),max 設置緩存中最大文件描述符數量,inactive 存活時間,valid 檢查頻率,min_users 在 inactive 時間內最少使用次數,達到的日志文件描述符記入緩存open_log_file_cache max=1000 inactive=20s valid=1m min_users=2;??#記錄重寫日志rewrite_log off;????????#給客戶端分配keep-alive鏈接超時時間keepalive_timeout 30;#--------------------------- 限流 ---------------------------#limit_conn 和 limit_req 可添加到特定 Server 或 location 節點#1、控制 session#設置用戶保存各種key的共享內存的參數,5m指的是5兆,$binary_remote_addr 根據遠程客戶端地址,$server_name 根據服務器名稱limit_conn_zone $binary_remote_addr zone=addr:5m;#為給定的key設置最大的連接數,這里的key是addr,設定的值是100,根據上面的定義說允許每一個IP地址最多同時打開100個連接,如果共享內存定義的是 $server_name 那么這里是允許服務器最多同時打開100個連接。limit_conn addr 100;#限制流量limit_rate 100k;#2、漏桶方法#定義共享內存,與上面的一樣,rate 定義請求次數(1 秒 20次)limit_req_zone $binary_remote_addr zone=addr:5m rate=20r/s;#burst=5 漏桶數為5,即如果第1、2、3、4秒請求為19,那么第5秒25次是可以允許的,nodelay 如果沒有則嚴格使用平均速率限制請求數limit_raq zone=addr burst=5 nodelay;#include指在當前文件中包含另一個文件內容,一般 Server 域是放在另一個配置文件中的,主配置文件中包含下即可。include porxy.types;#設置文件使用默認的mine-typedefault_type text/html;#設置默認字符集charset UTF-8;#-----------------------------gzip 數據-----------------------------#設置nginx采用gzip壓縮的形式發送數據,減少發送數據量,但會增加請求處理時間及CPU處理時間,需要權衡gzip on;#加vary給代理服務器使用,針對有的瀏覽器支持壓縮,有個不支持,根據客戶端的HTTP頭來判斷是否需要壓縮gzip_vary on;#nginx在壓縮資源之前,先查找是否有預先gzip處理過的資源#gzip_static on;#為指定的客戶端禁用gzip功能gzip_disable "MSIE[1-6]\.";#允許或禁止壓縮基于請求和相應的響應流,any代表壓縮所有請求gzip_proxied any;#設置對數據啟用壓縮的最少字節數,如果請求小于10240字節則不壓縮,會影響請求速度gzip_min_length 10240;#設置數據壓縮等級,1-9之間,9最慢壓縮比最大gzip_comp_level 2;#設置需要壓縮的數據格式gzip_types text/plain text/css text/xml text/javascript  application/json application/x-javascript application/xml application/xml+rss; #-----------------------------cache 文件-----------------------------#開發緩存的同時也指定了緩存文件的最大數量,20s如果文件沒有請求則刪除緩存open_file_cache max=100000 inactive=20s;#指多長時間檢查一次緩存的有效信息open_file_cache_valid 60s;#文件緩存最小的訪問次數,只有訪問超過5次的才會被緩存open_file_cache_min_uses 5;#當搜索一個文件時是否緩存錯誤信息open_file_cache_errors on;#允許客戶端請求的最大單文件字節數client_max_body_size 8m;#沖區代理緩沖用戶端請求的最大字節數client_header_buffer_size 32k;#-----------------------------代理-----------------------------proxy_redirect off;#后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP,如果不配置那么web服務器只能獲取到代理服務器的ipproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#nginx跟后端服務器連接超時時間(代理連接超時)proxy_connect_timeout 60;#連接成功后,后端服務器響應時間(代理接收超時)proxy_read_timeout 120;#后端服務器數據回傳時間(代理發送超時)proxy_send_timeout 20;#設置代理服務器(nginx)保存用戶頭信息的緩沖區大小proxy_buffer_size 32k;#proxy_buffers緩沖區,網頁平均在32k以下的設置proxy_buffers 4 128k;#高負荷下緩沖大小(proxy_buffers*2)proxy_busy_buffers_size 256k;#設定緩存文件夾大小,大于這個值,將從upstream服務器傳proxy_temp_file_write_size 256k;#1G內存緩沖空間,3天不用刪除,最大磁盤緩沖空間2Gproxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:1024m inactive=3d max_size=2g;#-----------------------------負載均衡-----------------------------#設定負載均衡服務器列表參考博客 nginx 負載均衡配置upstream myServer{#后端服務器訪問規則#ip_hash;server 192.168.0.1:10001 weight=3 max_files=2 file_timeout=30;server 192.168.0.2:10002 weight=3 max_conns=10000;server 192.168.0.3:10003 weight=4;server 192.168.0.4:10004 backup;}

?

Server 域配置

? ? 虛擬主機配置模塊,反向代理或負載均衡掛載的站點。

????

server {#虛擬主句監聽的端口listen 80;#定義訪問的域名server_name www.myserver.com;#設定本虛擬主機的訪問日志,使用 main 格式access_log logs/myserver.com.access.log main;#可以在 Server 域中配置限流,具體通過什么方式限流是前面建立共享內存區時定義的,這里只是配置具體限流多少limit_raq zone=addr burst=5 nodelay;limit_conn addr 100;  #默認請求# 語法規則:location [=|~|~*|^~] /uri/ {...} 先匹配普通location,在匹配正則location# = 開頭表示精確匹配# ^~ 開頭表示uri以某個常規字符串開頭,理解為匹配url路徑即可,無需考慮編解碼# ~ 開頭表示區分大小寫的正則匹配# ~* 開頭表示不區分大小寫的正則匹配# !~ 開頭表示區分大小寫的不匹配的正則# !~* 開頭表示不區分大小寫的不匹配的正則# / 通用匹配,任何請求都會被匹配到location / {#定義服務器的默認網站根目錄位置root html;#定義首頁索引文件的名稱index index.html index.htm;#使用 myServer 負載均衡服務器組proxy_pass http://myServer;#當然也可以在 location 域中配置限流limit_raq zone=addr burst=5 nodelay;limit_conn addr 100; }#定義錯誤提示頁面error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}#靜態文件,nginx自己處理location ~ ^/(images|javascript|js|css|flash|media|static)/{root /var/www/virtual/htdocs;#過期時間1天expires 1d;#關閉媒體文件日志access_log off;log_not_found off;}#設定查看Nginx狀態的地址location /NginxStatus {#!stub_status on; #無此關鍵字access_log off;auth_basic "NginxStatus";auth_basic_user_file conf/htpasswd;}#禁止訪問的文件.htxxxlocation ~ /\.ht {deny all;}}

?

? ? 簡單的配置,nginx 還有很多功能,包括第三方集成的功能,很強大,后續慢慢添加。

轉載于:https://www.cnblogs.com/muhy/p/10528576.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278176.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278176.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278176.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么無法運行谷歌play_什么是Google Play積分,以及如何使用它們?

為什么無法運行谷歌playThe Google Play Store is home to thousands of apps, games, movies, e-books, and more. You might find yourself making a lot of purchases there, so why not get rewarded for it? That’s where Google Play Points come in. Google Play商店提…

2019年春季學期第三周作業

本周作業 本周請大家完成上周挑戰作業的第一部分:給定一個整數數組(包含正負數),找到一個具有最大和的子數組,返回其最大的子數組的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子數組為[3, 10, -4, 7, 2] 1).實驗代…

Linux實驗二:linux 常用命令練習

ls命令 列出目錄內容 echo命令 顯示字符串 date命令 顯示或設置系統的日期與時間 cal命令 顯示日歷 who命令 列出登錄用戶信息 chown命令 chgrp命令 改變文件所屬的用戶組 chmod命令 改變文件訪問權限 find命令 在目錄中搜索文件 轉載于:https://www.cnblogs.com/nullno/p/87…

python數據類型之元組類型

#為何要有元組&#xff0c;存放多個值&#xff0c;元組不可變&#xff0c;更多的是用來做查詢 t(1,[1&#xff0c;2,3],a,(1,2)) #ttuple((1,[1,2,3],a,(1,2))) # print(type(t)) <class tuple># #元組可以作為字典的key # d{(1,2):egon} # print(d,type(d),d[(1,2)])# …

短語密碼_使用密碼短語以提高安全性

短語密碼Did you know that Windows supports using passwords of up to 127 characters? I don’t use passwords anymore, and I haven’t for years. I’ve switched to using password phrases instead. 您知道Windows支持使用最多127個字符的密碼嗎&#xff1f; 我不再使…

「單點登錄與權限管理」系列概述

首先&#xff0c;感謝幾位朋友在朋友圈轉發我的文章&#xff0c;小聲的告訴你們&#xff0c;是我主動讓他們幫忙轉發的&#xff1a;&#xff09;在朋友們的分享下&#xff0c;凌晨推送的一篇文章&#xff0c;閱讀人數達到了280多&#xff0c;很滿足&#xff0c;我會堅持寫下去&…

Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 問題

使用環境&#xff1a;Anaconda3&#xff08;Python3.6&#xff09; 創建一個新的notebook時&#xff0c;無法連接到kernel&#xff0c;terminal上顯示錯誤為&#xff1a;TypeError: __init__() got an unexpected keyword argument io_loop 解決方法&#xff1a; conda install…

在Ubuntu Linux中獲取上次訪問的文件時間

Ubuntu Linux has a rich set of commands for manipulating and accessing files. The stat utility gives detailed access to file information, including last accessed and last modified file time. Ubuntu Linux具有一組豐富的用于操作和訪問文件的命令。 stat實用程序…

MySQL新增從庫

項目背景描述&#xff1a;在項目的開始只有一個MySQL實例在運行&#xff0c;后期因為安全性&#xff0c;壓力&#xff0c;備份等原因需要在此實例的基礎上面新增一個從庫。分析&#xff1a;MySQL主從是基于binlog日志來實現的&#xff0c;那么需要主服務器開啟binlog&#xff0…

第一個議題

① 在每個問題后面&#xff0c;請說明哪一章節的什么內容引起了你的提問&#xff0c;提供一些上下文 ② 列出一些事例或資料&#xff0c;支持你的提問 。 ③ 說說你提問題的原因&#xff0c;你說因為自己的假設和書中的不同而提問&#xff0c;還是不懂書中的術語&#xff0c;還…

在Windows Vista中使用符號鏈接

One of the long-awaited features in Windows Vista was the ability to use symbolic links, the way you can in linux. Sadly, they don’t work quite as well as they could, but it’s a big upgrade from prior versions, and has solved a number of problems for me …

shell學習筆記--自我總結

一、文件 touch file # 創建空白文件 rm -rf 目錄名 # 不提示刪除非空目錄(-r:遞歸刪除 -f強制) dos2unix # windows文本轉linux文本 unix2dos # linux文本轉windows文本 enca filename # 查看編碼 安裝 yu…

201671030107胡文艷實驗三作業互評與改進報告

任務1&#xff1a;要給出所點評作業的鏈接地址&#xff0c;點評內容和閱讀心得 讀了你的這篇博客&#xff0c;一方面給我的印象就是排版整齊&#xff0c;內容充實&#xff0c;態度認真&#xff1b;另外一方面就是通過別人反省自己&#xff0c;看了你的博客&#xff0c;我覺得我…

進程handle獲取線程_獲取進程中的線程列表

進程handle獲取線程The System.Diagnostics namespace contains functions that allow you to manage processes, threads, eventlogs and performance information. System.Diagnostics命名空間包含允許您管理進程&#xff0c;線程&#xff0c;事件日志和性能信息的函數。 The…

2018-3-28Linux系統管理(16)計算機網絡基礎

在這一章當中我們講述計算機網絡基礎。一、計算機網絡網絡通信就像人與人之間的交流一樣&#xff0c;說同一種語言&#xff0c;而后雙方進行無障礙的通信交流&#xff0c;那么兩臺主機通信時&#xff0c;它們彼此交換數據的格式的前提為互相理解才可以&#xff0c;我們此前也有…

從Ubuntu命令行按進程名稱殺死進程

There are a number of ways to kill a process if you know the name of the process. Here’s a couple different ways you can accomplish this. We are going to assume that the process we are trying to kill is named irssi 如果您知道進程的名稱&#xff0c;則有多種…

18 南京 D

裸的最小球覆蓋。 坐標范圍大一些所以我們把初始的溫度也設置的大一些。 1 #include <bits/stdc.h>2 using namespace std;3 typedef long long ll;4 typedef double db;5 const db INF 1e100;6 const db delta 0.98;7 const db eps 1e-8;8 struct p3{9 db x,y,z;…

如何在iPhone或iPad的控制中心中控制智能家居設備

Apple’s Home app offers quick controls for controlling smart lights, doorbells, thermostats, and other smart home devices—right in your iPhone or iPad’s Control Center. Here’s how to set it up and use it. Apple的Home應用程序可在iPhone或iPad的控制中心內…

亞信安全與安徽電信共創“云網融合”安全新局面

全面提升公共安全能力 聯合推“天翼U盾”保障移動政務安全 在近日舉辦的安徽“互聯網”產業合作峰會上&#xff0c;亞信安全宣布與中國電信安徽公司達成戰略合作&#xff0c;雙方將在“云網融合”的生態基礎上打造特色安全服務、促進政企協同安全監管、共創網絡安全平安城市等…

idea中開啟Run Dashboard

若沒有 下一步 ok 轉載于:https://www.cnblogs.com/aijiajia1314/p/10551007.html