nginx詳細配置記錄

      網友投稿 747 2022-05-30

      一、前言

      在平時用的nginx挺多,但是并不熟悉nginx的配置,所以打算查閱網上資料整理一篇筆記方便自己以后回顧。

      二、nginx目錄結構

      三、配置文件

      1. 結構

      # 全局塊 ... # events塊 events { ... } # http塊 http { # http全局塊 ... # 虛擬主機server塊 server { # server全局塊 ... # location塊 location [PATTERN] { ... } location [PATTERN] { ... } } server { ... } # http全局塊 ... }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      nginx之詳細配置記錄

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      說明:以下配置并未很明確標明作用域,關于其作用范圍可查閱官方文檔。

      main全局塊

      配置影響nginx全局的指令。

      user nginx;

      配置用戶或者組

      worker_processes auto;

      允許生成的進程數,一般代表系統cpu核數一到兩倍最好

      worker_cpu_affinity 01 10;

      表示開啟兩個進程,第一個進程對應著第一個CPU內核,第二個進程對應著第二個CPU內核。

      error_log /var/log/nginx/error.log;

      制定日志路徑,級別。這個設置可以放入全局塊,http塊,server塊,級別以此為:debug|info|notice|warn|error|crit|alert|emerg

      pid /run/nginx.pid;

      設置pid存放路徑,pid是控制系統中的一個重要的控制文件

      include /usr/share/nginx/modules/*.conf;

      加載動態模塊配置

      worker_rlimit_nofile 65535;

      更改worker進程的最大打開文件數限制。如果沒設置的話,這個值為操作系統的限制。設置后你的操作系統和Nginx可以處理比“ulimit -a”更多的文件,所以把這個值設高,這樣nginx就不會有“too many open files”問題了。

      [nginx允許的最大連接數=(worker_connections)*(worker_processes)]<=worker_rlimit_nofile,另外worker_connections

      events塊

      配置影響nginx服務器或與用戶的網絡連接。有每個進程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啟多個網絡連接序列化等。

      worker_connections 1024;

      最大連接數。

      accept_mutex on;

      設置網路連接序列化,防止驚群現象發生,默認為on

      multi_accept on;

      設置一個進程是否同時接受多個網絡連接,默認為off

      use epoll;

      設置用于復用客戶端線程的輪詢方法。如果你使用Linux 2.6+,你應該使用epoll。如果你使用FREEBSD,你應該使用kqueue。select|poll|kqueue|epoll|resig|/dev/poll|eventport

      http塊

      可以嵌套多個server,配置代理,緩存,日志定義等絕大多數功能和第三方模塊的配置。

      log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';

      自定義日志格式

      access_log /var/log/nginx/access.log main;

      指令指定日志文件的存放路徑和名稱 egaccess_log [PATH] [日志名],取消改為access_log off。

      sendfile on;

      指定是否使用sendfile系統調用來傳輸文件。sendfile系統調用在兩個文件描述符之間直接傳遞數據(完全在內核中操作),從而避免了數據在內核緩沖區和用戶緩沖區之間的拷貝,操作效率很高,被稱之為零拷貝。

      sendfile_max_chunk 1M;

      限制最大sendfile的文件大小,防止過大的文件占據整個工作進程

      tcp_nopush on;

      告訴nginx在一個數據包里發送所有頭文件,而不一個接一個的發送。 tcp_nopush 必須和 sendfile 搭配使用。

      tcp_nodelay on;

      為了解決Nagle和DelayedAcknowledgment的延遲問題。詳情:TCP_NODELAY 和 TCP_NOPUSH的解釋

      keepalive_timeout 65;

      連接超時時間,這個設置可以放入http塊、server塊、location塊

      client_header_timeout 10;

      請求頭超時時間

      client_body_timeout 10;

      請求體超時時間

      reset_timedout_connection on;

      告訴nginx關閉不響應的客戶端連接。這將會釋放那個客戶端所占有的內存空間。

      send_timeout 10;

      指定客戶端的響應超時時間。這個設置不會用于整個轉發器,而是在兩次客戶端讀取操作之間。如果在這段時間內,客戶端沒有讀取任何數據,nginx就會關閉連接。

      limit_conn_zone $binary_remote_addr zone=addr:5m;

      設置用于保存各種key(比如當前連接數)的共享內存的參數。5m就是5兆字節,這個值應該被設置的足夠大以存儲(32K*5)32byte狀態或者(16K*5)64byte狀態。

      limit_conn addr 100;

      為給定的key設置最大連接數。這里key是addr,設置的值是100,也就是說允許每一個IP地址最多同時打開有100個連接。

      types_hash_max_size 2048;

      影響散列表的沖突率。types_hash_max_size越大,就會消耗更多的內存,但散列key的沖突率會降低,檢索速度就更快。types_hash_max_size越小,消耗的內存就越小,但散列key的沖突率可能上升。

      gzip on;

      開啟壓縮,可作用于http,server, location塊中,內置變量 $gzip_ratio 可以獲取到gzip的壓縮比率。gzip壓縮器需要在用戶態進行,因此無法和sendfile共存,如果gizp設置為on,那么sendfile就會失去作用。

      gzip_types text/html text/plain text/css;

      表示壓縮的文件類型,還可以添加web字體格式、ioc圖標和SVG圖像等其他類型文件。

      gzip_min_length 512;

      告訴Nginx不要壓縮小于512字節的文件。這是非常小的文件,可以不用壓縮

      gzip_comp_level 2;

      壓縮級別,越高壓縮比越大,越消耗cpu

      gzip_http_version 1.0

      gzip支持http協議

      gzip_proxied any;

      Nginx作為反向代理的時候啟用,開啟或者關閉后端服務器返回的結果.

      參數:

      off - 關閉所有的代理結果數據的壓縮

      expired - 啟用壓縮,如果header頭中包含 “Expires” 頭信息

      no-cache - 啟用壓縮,如果header頭中包含 “Cache-Control:no-cache” 頭信息

      no-store - 啟用壓縮,如果header頭中包含 “Cache-Control:no-store” 頭信息

      private - 啟用壓縮,如果header頭中包含 “Cache-Control:private” 頭信息

      no_last_modified - 啟用壓縮,如果header頭中不包含 “Last-Modified” 頭信息

      no_etag - 啟用壓縮 ,如果header頭中不包含 “ETag” 頭信息

      auth - 啟用壓縮 , 如果header頭中包含 “Authorization” 頭信息

      any - 無條件啟用壓縮

      gzip_buffers 16 8k;

      設置用于處理請求壓縮的緩沖區數量和大小。

      gzip_vary on;

      增加響應頭”Vary: Accept-Encoding”,首先判斷客戶端是否支持gzip壓縮技術,不支持的不就不進行gzip技術壓縮

      gzip_disable "MSIE [1-6].(?!.*SV1)"

      表明哪些UA頭不使用gzip壓縮

      include /etc/nginx/mime.types;

      文件擴展名與文件類型映射表

      default_type application/octet-stream;

      默認文件類型

      server_tokens off;

      隱藏版本號,加強安全性。

      open_file_cache max=100000 inactive=20s;

      打開緩存的同時也指定了緩存最大數目,以及緩存的時間。可以設置一個相對高的最大時間,這樣可以在它們不活動超過20秒后清除掉。

      open_file_cache_valid 30s;

      在open_file_cache中指定檢測正確信息的間隔時間。

      open_file_cache_min_uses 2

      定義了open_file_cache中指令參數不活動時間期間里最小的文件數。

      open_file_cache_errors on

      指定了當搜索一個文件時是否緩存錯誤信息,也包括再次給配置中添加文件。我們也包括了服務器模塊,這些是在不同文件中定義的。如果你的服務器模塊不在這些位置,你就得修改這一行來指定正確的位置。

      include /etc/nginx/conf.d/*.conf;

      引入子配置文件

      server塊

      配置虛擬主機的相關參數,一個http中可以有多個server。

      keepalive_requests 120;

      單連接請求上限次數。

      listen 80;

      監聽端口

      server_name ztool.cloud;

      監聽地址(ip或域名)

      location塊

      root /data/java;

      根目錄。

      index /data/java/index.html;

      默認首頁

      proxy_pass http://127.0.0.1:8080;

      代理轉發

      proxy_connect_timeout 15s;

      代理連接超時時間

      proxy_send_timeout 15s;

      服務器數據發送超時時間

      proxy_read_timeout 15s;

      數據讀取超時時間

      proxy_http_version 1.1;

      http協議

      proxy_buffer_size 4k;

      設置代理服務器(nginx)從后端服務器讀取并保存用戶頭信息的緩沖區大小。它僅用于限定 headers 的 buffer 區,所以它的值比 proxy_buffers 更低。

      proxy_buffers 4 32k;

      指定請求緩存的數量和大小

      proxy_busy_buffers_size 64k;

      高負荷下緩沖大小

      proxy_temp_file_write_size 64k;

      指定proxy緩存臨時文件的大小

      proxy_temp_path /usr/local/nginx/proxy_temp 1 2;

      當緩存被代理的服務器響應到臨時文件時,這個選項限制每次寫臨時文件的大小。

      proxy_set_header X-Real-IP $remote_addr;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      設置由后端服務器獲取用戶主機或真實IP地址,以及代理者的真實IP。

      add_header X-Frame-Options SANEORIGIN;

      proxy_set_header是Nginx設置請求頭信息給上游服務器,add_header是Nginx設置響應頭信息給瀏覽器。

      ··

      四、附錄

      附錄1

      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#腳本文件請求的路徑,也就是說當訪問127.0.0.1/index.php的時候,需要讀取網站根目錄下面的index.php文件,如果沒有配置這一配置項時,nginx不回去網站根目錄下訪問.php文件,所以返回空白 fastcgi_param QUERY_STRING $query_string; #請求的參數;如?app=123 fastcgi_param REQUEST_METHOD $request_method; #請求的動作(GET,POST) fastcgi_param CONTENT_TYPE $content_type; #請求頭中的Content-Type字段 fastcgi_param CONTENT_LENGTH $content_length; #請求頭中的Content-length字段。 fastcgi_param SCRIPT_NAME $fastcgi_script_name; #腳本名稱 fastcgi_param REQUEST_URI $request_uri; #請求的地址不帶參數 fastcgi_param DOCUMENT_URI $document_uri; #與$uri相同。 fastcgi_param DOCUMENT_ROOT $document_root; #網站的根目錄。在server配置中root指令中指定的值 fastcgi_param SERVER_PROTOCOL $server_protocol; #請求使用的協議,通常是HTTP/1.0或HTTP/1.1。 fastcgi_param GATEWAY_INTERFACE CGI/1.1; #cgi 版本 fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #nginx 版本號,可修改、隱藏 fastcgi_param REMOTE_ADDR $remote_addr; #客戶端IP fastcgi_param REMOTE_PORT $remote_port; #客戶端端口 fastcgi_param SERVER_ADDR $server_addr; #服務器IP地址 fastcgi_param SERVER_PORT $server_port; #服務器端口 fastcgi_param SERVER_NAME $server_name; #服務器名,域名在server配置中指定的server_name fastcgi_param PATH_INFO $path_info; #可自定義變量 -- PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200;

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      五、參考

      Nginx服務學習(4)-目錄說明

      Nginx 配置詳解

      Nginx配置性能優化的方法

      Nginx的配置文件詳解(超詳細)

      Nginx

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:大學生面試.培訓機構面試.求職就業面試
      下一篇:3種網頁抓取方法
      相關文章
      自拍偷自拍亚洲精品偷一| 国产亚洲精品VA片在线播放| 亚洲成a人无码亚洲成av无码| 亚洲小说区图片区| 亚洲综合亚洲综合网成人| 亚洲国产精品ⅴa在线观看| 伊人久久五月丁香综合中文亚洲| 亚洲一区在线免费观看| 亚洲最大黄色网站| 亚洲AV无码精品蜜桃| 久久亚洲AV无码精品色午夜| 亚洲久本草在线中文字幕| 亚洲国产美女精品久久久久∴| 亚洲午夜福利717| 久久亚洲综合色一区二区三区 | 亚洲中文无码线在线观看| 亚洲精品免费在线视频| 亚洲美女自拍视频| 亚洲午夜电影一区二区三区| 亚洲一级毛片中文字幕| 亚洲熟妇AV日韩熟妇在线| 亚洲国产成人久久综合| 久久久久久亚洲精品无码| 亚洲成A人片在线观看中文| 亚洲人成网站色在线入口| 日韩精品亚洲aⅴ在线影院| 亚洲乱码中文字幕综合| 亚洲福利视频一区| 亚洲日韩乱码中文无码蜜桃| 亚洲天堂免费在线| 久久亚洲中文字幕无码| 久久久久精品国产亚洲AV无码| 亚洲一久久久久久久久| 国产成人精品久久亚洲高清不卡| 亚洲va中文字幕无码| 亚洲午夜久久久久久久久久| 亚洲av无码国产精品色午夜字幕| 亚洲影院在线观看| 亚洲va在线va天堂va手机| 亚洲欧美日韩一区二区三区| 亚洲第一成人影院|