Nginx主配置文件nginx.conf史上超細中文詳解

2022-01-02 老男孩Linux

Nginx主配置文件nginx.conf史上最細中文詳解... 1

第1章作者簡介... 1

第2章 nginx配置解釋圖解... 1

第3章 Nginx核心配置文件nginx.conf史上最細中文詳解... 2

3.1 定義Nginx運行的用戶和用戶組... 2

3.2 nginxworker進程數,即處理請求的進程(熟稱負責接客的服務員)... 2

3.3 cpu親和力配置,讓不同的進程使用不同的cpu. 2

3.4 全局錯誤日誌定義類型,[ debug|info|notice|warn|error|crit]2

3.5 把進程號記錄到文件... 2

3.6 Nginx worker最大打開文件數,可設置為系統優化後的ulimit -HSn的結果... 2

3.7 IO事件模型與worker進程連接數設置... 3

3.8 http模塊設置部分... 3

3.9 設定基於域名的虛擬主機部分... 5

3.10 反向代理負載均衡配置(代理blog.oldboyedu.com服務)... 6

3.11 設定查看Nginx狀態的地址... 7

3.12 設定java程序動靜分離反向代理負載均衡配置... 7

老男孩,北京老男孩IT教育創始人,暢銷圖書作者,51CTO金牌講師,16年運維經驗及培訓經驗, IT界頂級Linux集群架構實戰與教育專家。

國內IT教育實戰心理學運維思想體系創始人,將心理學運維思想大量應用於教學培訓實踐,成就屌絲無數。所教學生平均就業工資及後期發展速度連續多年在國內同行業排名第一!

老男孩老師個人博客:http://oldboy.blog.51cto.com/和http://blog.oldboyedu.com

圖1-1 理解nginx http協議相關參數圖解

圖1-2 根據http原理及Fastcgi原理講解fastcgi參數優化圖解


第3章 Nginx核心配置文件nginx.conf史上最細中文詳解

user nginx nginx; #改為特殊的用戶和組


worker_processes 8;  #初始可設置為CPU總核數

 

3.3 cpu親和力配置,讓不同的進程使用不同的cpu

worker_cpu_affinity 0001 0010 0100 1000 0001 00100100 1000;

error_log logs/error.log error;  #一定要設置warn級別以上


pid logs/nginx.pid; #用於管理nginx進程


3.6 Nginxworker最大打開文件數,可設置為系統優化後的ulimit -HSn的結果

worker_rlimit_nofile 65535;

3.7 IO事件模型與worker進程連接數設置

events

{

#epoll模型是Linux 2.6以上版本內核中的高性能網絡I/O模型

use epoll;

#單個worker進程最大連接數

worker_connections 10240; #nginx最大連接數=worker連接數*worker進程數

}

http

{

server_tokens off;   #隱藏響應header和錯誤通知中的版本號

include mime.types;  #文件擴展名與文件類型映射表

default_type application/octet-stream;#默認文件類型

server_names_hash_max_size 512;     #服務域名的最大hash表大小

server_names_hash_bucket_size 128;#服務域名的hash表大小

#開啟高效文件傳輸模式,實現內核零拷貝

sendfile on;

#激活tcp_nopush參數可以允許把httpresponse header和文件的開始放在一個文件裡發布,積極的作用是減少網絡報文段的數量

tcp_nopush on;

#激活tcp_nodelay,內核會等待將更多的字節組成一個數據包,從而提高I/O性能

tcp_nodelay on;

#連接超時時間,單位是秒

keepalive_timeout 120;

#目錄列表訪問參數,合適http下載,默認關閉。

autoindex off;

#讀取客戶端請求頭的超時時間(參看老男孩的書籍理解http協議原理)

client_header_timeout 15s;

#讀取客戶端請求主體的超時時間(參看老男孩的書籍理解http協議原理)

client_body_timeout 60s;

#設定讀取客戶端請求主體的最大大小。(參看老男孩的書籍理解http協議原理)

client_max_body_size 8m;

#設置伺服器端傳送http響應信息到客戶端的超時時間

send_timeout 60s;

#設定訪問日誌的日誌記錄格式,每列細節參考《跟老男孩學linux運維》:Web集群實戰

log_format main  '$remote_addr - $remote_user$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '  '"$http_user_agent"$http_x_forwarded_for"';

#FastCGI參數是和動態伺服器交互起作用的參數

#設定Nginx伺服器和後端FastCGI伺服器連接的超時時間

fastcgi_connect_timeout 60;

#設定Nginx允許FastCGI服務端返回數據的超時時間

fastcgi_send_timeout 60;

#設定Nginx從FastCGI服務端讀取響應信息的超時時間

fastcgi_read_timeout 60;

#設定用來讀取從FastCGI服務端收到的第一部分響應信息的緩衝區大小

fastcgi_buffer_size 64k;

#設定用來讀取從FastCGI服務端收到的響應信息的緩衝區大小以及緩衝區數量

fastcgi_buffers 4 64k;

#設定系統很忙時可以使用的fastcgi_buffers大小,推薦大小為fastcgi_buffers *2。

fastcgi_busy_buffers_size 128k;

#fastcti臨時文件的大小,可設置128-256K

fastcgi_temp_file_write_size 128k;

#gzip壓縮模塊部分(此部分對於網站優化極其重要)

#開啟gzip壓縮功能。

gzip on;

#設置允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取。默認值是0,表示不管頁面多大都進行壓縮。建議設置成大於1K。如果小於1K可能會越壓越大。

gzip_min_length 1k;

#壓縮緩衝區大小。表示申請4個單位為16K的內存作為壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果。

gzip_buffers    4 16k;

#壓縮版本(默認1.1,前端為squid2.5時使用1.0)用於設置識別HTTP協議版本,默認是1.1,目前大部分瀏覽器已經支持GZIP解壓,使用默認即可。

gzip_http_version 1.1;

#壓縮比率。用來指定GZIP壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理最慢,也比較消耗cpu資源。

gzip_comp_level 2;

#用來指定壓縮的類型,「text/html」類型總是會被壓縮,這個就是HTTP原理部分講的媒體類型。

gzip_typestext/plain application/x-javascript text/css application/xml;

#vary header支持。該選項可以讓前端的緩存伺服器緩存經過GZIP壓縮的頁面,例如用Squid緩存經過Nginx壓縮的數據。

gzip_vary on;

#反向代理負載均衡設定部分(可選)

#upstream表示負載伺服器池,定義名字為blog.oldboyedu.com的伺服器池

upstream blog.oldboyedu.com {

#server是伺服器節點起始標籤,其後是節點地址,可為域名或IP,weight是權重,可以根據機器配置定義權重。weigth參數表示權值,權值越高被分配到的機率越大。

ip_hash; #調度算法,默認是rr輪詢。

server 172.16.1.7:80 weight=1;

server 172.16.1.8:80 weight=1;

server 172.16.1.9:80 weight=1 backup; #backup表示熱備

}


###oldboy www web php server

    server {

       listen       80; #監聽的埠,也可以是172.16.1.7:80形式

       server_name  www.oldboyedu.comoldboyedu.com; #域名

       root   html/blog; #站點根目錄,即網站程序放的目錄

       location / {  #默認訪問的location標籤段

           index  index.php index.htmlindex.htm; #首頁排序

        }

    location ~.*.(php|php5)?$ { #符合php擴展名的請求調度到fcgi server

      fastcgi_pass 127.0.0.1:9000; #拋給本機的9000埠(php fastcgi server)

      fastcgi_index index.php; #設定動態首頁

      include fastcgi.conf; #設定和fastcgi交互的相關參數包含文件

    }

#將符合靜態文件的圖片視頻流媒體等設定expries緩存參數,要求瀏覽器緩存。

    location~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

       expires      10y; #客戶端緩存上述靜態數據10年

}

#將符合js,css文件的等設定expries緩存參數,要求瀏覽器緩存。

    location~ .*\.(js|css)?$ {

       expires      30d; #客戶端緩存上述js,css數據30天

    }

       access_log /app/logs/www_access.log  main; #根據日誌格式記錄用戶訪問的日誌

    }

 

server {

       listen       80; #監聽的埠,也可以是172.16.1.7:80形式

       server_name  blog.oldboyedu.com; #代理的服務域名

       location / {

       #將訪問blog.oldboyedu.com的所有請求都發送到upstream定義的伺服器節點池。

        proxy_passhttp://blog.oldboyedu.com;

        #在代理向後端伺服器發送的http請求頭中加入host欄位信息,用於當後端伺服器配置有多個虛擬主機時,可以識別代理的是哪個虛擬主機。這是節點伺服器多虛擬主機時的關鍵配置。

        proxy_set_headerHost  $host;

        #在代理向後端伺服器發送的http請求頭中加入X-Forwarded-For欄位信息,用於後端伺服器程序、日誌等接收記錄真實用戶的IP,而不是代理伺服器的IP。

        proxy_set_header X-Forwarded-For$remote_addr;

#設定反向代理與後端節點伺服器連接的超時時間,即發起握手等候響應的超時時間。

        proxy_connect_timeout60;

#設定代理後端伺服器的數據回傳時間

        proxy_send_timeout 60;

#設定Nginx從代理的後端伺服器獲取信息的時間

        proxy_read_timeout 60;

#設定緩衝區的大小

        proxy_buffer_size 4k;

#設定緩衝區的數量和大小。nginx從代理的後端伺服器獲取的響應信息,會放置到緩衝區。

        proxy_buffers 4 32k;

#設定系統很忙時可以使用的proxy_buffers大小

       proxy_busy_buffers_size 64k;

#設定proxy緩存臨時文件的大小

       proxy_temp_file_write_size 64k;

#對於以上參數的詳細理解可見本文開頭圖解。

       }

access_log off; #反向代理如果並發大,務必要關閉日誌,否則IO吃緊。

 

    }

location /status {

stub_status on; #開啟狀態功能

access_log off; #關閉記錄日誌

auth_basic 「Oldboy Server Status」; #設置基本認證提示

auth_basic_user_file conf/htpasswd; #校驗密碼文件

}

#Oldboy Bbs server

 server {

     listen       80; #監聽的埠,也可以是172.16.1.7:80形式

     server_name  bbs.oldboyedu.com; #代理的域名

     root  html/bbs; #程序目錄

     index index.php index.html index.htm;

#所有靜態文件由nginx服務處理

location ~.*.(htm|html|gif|jpg|jpeg|png|swf|flv)$ {

 expires 3650d;

}

location ~ .*.(js|css)?$ {

 expires 30d;

}

#所有java相關擴展名均交由tomcat或resin服務處理。

location ~ .(jsp|jspx|do)?$ {

#將訪問blog.oldboyedu.com的所有請求都發送到upstream定義的伺服器節點池。

proxy_pass http://127.0.0.1:8080;

#在代理向後端伺服器發送的http請求頭中加入host欄位信息,用於當後端伺服器配置有多個虛擬主機時,可以識別代理的是哪個虛擬主機。這是節點伺服器多虛擬主機時的關鍵配置。

        proxy_set_header Host  $host;

 #在代理向後端伺服器發送的http請求頭中加入X-Forwarded-For欄位信息,用於後端伺服器程序、日誌等接收記錄真實用戶的IP,而不是代理伺服器的IP。

        proxy_set_headerX-Forwarded-For $remote_addr;

}

        access_log /app/logs/bbs_access.log  main; #記錄日誌

    }

}

更多的參數,可參看《跟老男孩學linux運維:Web集群實戰》一書,以及官方資料!

相關焦點

  • Nginx配置文件(nginx.conf)配置詳解
    Nginx 總的 配置文件 位置 /usr/local/nginx/conf/nginx.confnginx
  • Nginx 配置文件參數詳解
    Nginx 配置文件組成nginx 配置文件主要分為 4 部分:main (全局設置
  • Nginx配置文件詳解
    作者:程式設計師自由之路出處:https://cnblogs.com/54chensongxiaNginx的主配置文件是nginx.conf,這個配置文件一共由三部分組成,分別為全局塊、events塊和http塊。在http塊中,又包含http全局塊、多個server塊。
  • Nginx 伺服器安裝及配置文件詳解
    --prefix=PATH :指定nginx的安裝目錄。默認 /usr/local/nginx--conf-path=PATH :設置nginx.conf配置文件的路徑。nginx允許使用不同的配置文件啟動,通過命令行中的-c選項。默認為prefix/conf/nginx.conf--user=name:設置nginx工作進程的用戶。
  • (實用篇)nginx配置文件詳解中文版
    本文列出了nginx默認配置文件 nginx.conf的大部分命令,並加以中文注釋說明,實際配置中可能沒有這麼複雜,這裡只能作為一個參考閱讀文檔!一、nginx基本配置#定義Nginx運行的用戶和用戶組,系統中必須有此用戶,可以是nologinuser www www;   #啟動進程,通常設置成和cpu的數量相等worker_processes  1;#全局錯誤日誌及PID文件error_log  /var/log
  • 史上最全的Nginx配置參數中文說明
    https://segmentfault.com/a/1190000005789137Nginx配置參數中文詳細說明:
  • nginx配置本地文件伺服器(windows)
    命令start nginx# 修改.conf配置後,重新加載nginxnginx -s reload# 關閉nginx命令nginx -s stopOK,啟動 nginx 後,打開瀏覽器,輸入:localhost:80,可以看到:
  • CentOS7.2與Nginx配置虛擬主機詳解
    正文內容centos安裝nginx的操作一般PHPer都會,這裡就不再詳解
  • Nginx詳解
    /nginx#  方式二:重新加載配置文件,當 ngin x的配置文件 nginx.conf 修改後,要想讓配置生效需要重啟 nginx,使用下面的命令不用先停止 nginx 再啟動,nginx 即可將配置信息在 nginx 中生效,如下:.
  • Docker實戰:docker部署nginx項目詳解
    創建nginx目錄這裡我們需要在主機上創建用於映射nginx文件的目錄,用於存放nginx的默認配置文件和靜態文件。這裡我們一般接觸的是nginx的配置文件、日誌文件和部署文件,這裡我在opt中創建創建nginx目錄來存放這些文件。創建目錄的命令為:mkdir -p /opt/nginx/html /opt/nginx/logs /opt/nginx/conf /opt/nginx/conf.d,其中-p指遞歸創建目錄(如果上級目錄不存在,會按目錄層級自動創建目錄)。
  • Nginx進階-常見配置(上)
    PHP-FPM(FastCGI Process Manager:FastCGI進程管理器)是一個PHPFastCGI管理器。
  • Nginx 從入門到實踐,萬字詳解!
    Nginx 配置語法 就跟前面文件作用講解的圖所示,Nginx 的主配置文件是 /etc/nginx/nginx.conf,你可以使用 cat -n nginx.conf 來查看配置。由於默認配置文件 /etc/nginx/nginx.conf 的 http 模塊中有一句 include /etc/nginx/conf.d/*.conf 也就是說 conf.d 文件夾下的所有 *.conf 文件都會作為子配置項被引入配置文件中。
  • Nginx配置在線一鍵生成「神器」,不用愁了
    對於Nginx一些配置的詳細解釋,之前也寫過相關的文章:Nginx優化配置詳解但在實際的生產配置環境中,肯定會經常遇到需要修改、或者重新增加Nginx配置的問題,有的時候需求更是多種多樣,修修改改經常會出現這樣、那樣的一些錯誤,特別的煩索。
  • Nginx常用配置總結
    在Centos 默認配置文件在 /usr/local/nginx-1.5.1/conf/nginx.conf 我們要在這裡配置一些文件。nginx.conf是主配置文件,由若干個部分組成,每個大括號{}表示一個部分。每一行指令都由分號結束;,標誌著一行的結束。7.1 常用正則正則說明正則說明.匹配除換行符以外的任意字符$匹配字符串的結束?
  • NGINX配置學習總結
    一、Nginx 配置創建 Nginx 運行使用的用戶 www:[root@bogon conf]# /usr/sbin/groupadd www [root@bogon conf]# /usr/sbin/useradd -g www www     2.配置nginx.conf ,將/usr/local/webserver
  • Ansible 實戰與配置Nginx
    /{files,templates,vars,handlers,meta,default,tasks} -pvfiles/:存儲由copy或script等模塊調用的文件;wget http://nginx.org/download/nginx-1.13.6.tar.gztasks/:此目錄中至少應該有一個名為main.yml的文件,用於定義各task;其它的文件需要由
  • 13.nginx高級配置--反向代理
    "; server_tokens off; access_log off; include vhost/*.conf;}   在該配置文件中,最後一行將引入 vhost 文件夾下所有的主機配置。
  • CentOS7.2與Nginx配置虛擬主機
    blog.csdn.net/qq_42346414/article/details/81349890商務合作的請加微信(QQ):2230304070圖書推薦正文內容centos安裝nginx這裡就不再詳解,不懂可以查找資料的使用命令進行查看服務netstat -anpt | grep nginx
  • Nginx安裝與配置HTTPS
    HTTPS最近在寫項目的時候,在將後臺伺服器部署到騰訊雲後,因為前端是小程序,微信小程序開發對於正常使用必須基於HTTPS請求,因此需要配置HTTPS。本來是使用比較簡單openssl進行配置使用,使用第三方免費的SSL證書,但是由於自己配置的證書不穩定,不能被校驗通過,服務功能不能正常使用。
  • Nginx的基本配置
    pidpid指令用於指定存放Nginx主進程號存放文件的路徑。默認的路徑為:123# ./sbin/nginx # cat logs/nginx.pid 101106worker_rlimit_nofile設置毎個進程的最大文件打開數。