免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

(四)企業(yè)級高性能 WEB 服務 - Nginx 配置

:2024年11月10日 開源極客行
分享到:

Nginx 是一款基于 Unix-like 系統(tǒng)的高性能 web 服務器軟件,其配置文件主要包括主配置文件(nginx.conf)和子配置文件(conf.d/*.conf)。Nginx 支持多種協(xié)議,包括 fastcgi、uwsgi、...

Nginx 配置文件說明

Nginx 官方幫助文檔://nginx.org/en/docs/
Nginx 的配置文件的組成部分:
  • 主配置文件:nginx.conf

  • 子配置文件:include conf.d/*.conf

  • fastcgi, uwsgi,scgi 等協(xié)議 相關的配置文件( conf/ 目錄)

  • fastcgi_params

  • uwsgi_params

  • scgi_params

  • mime.types:支持的 mime 類型,MIME(Multipurpose Internet Mail Extensions)多用途互聯(lián)網郵件擴展類型,MIME 消息能包含文本、圖像、音頻、視頻以及其他應用程序專用的數(shù)據(jù),是設定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。

  • MIME 參考文檔:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/MIME_types

Nginx 配置文件 格式說明

1. 配置文件: 由'指令'與'指令塊'構成

2. 每條指令以 ; 分號結尾, 指令與值之間以空格符號分隔

3. 可以將多條指令放在同一行, 用分號分隔即可, 但可讀性差, 不推薦

4. 指令塊以{ }大括號將多條指令組織在一起,且可以嵌套指令塊

5. include 語句允許組合多個配置文件以提升可維護性

6. 使用 # 符號添加注釋, 提高可讀性

7. 使用 $ 符號使用變量

8. 部分指令的參數(shù)支持正則表達式

Nginx 主配置文件的配置指令方式:

directive value [value2 ...];

注意

(1) 指令必須以分號結尾

(2) 支持使用配置變量

內建變量: 由 Nginx 模塊引入,可直接引用

自定義變量: 由用戶使用 set 命令定義, 格式: set variable_name value;

引用變量: $variable_name

主配置文件結構四部分

// '全局配置段' ( 常用 )

main block: 主配置段, 即全局配置段, 對 http,mail 都有效

// '事件驅動相關的配置'

event {

...

}

// http/https 協(xié)議相關配置段 ( '核心配置段' - 常用 )

http {

...

}

# 默認配置文件不包括下面兩個塊

# mail 協(xié)議相關配置段

mail {

...

}

# stream 服務器相關配置段

stream {

...

}

默認的 nginx.conf 配置文件格式說明

[root@centos8 ~] grep -v "#" /apps/nginx/conf/nginx.conf | grep -v "^$"

# 全局配置端, 對全局生效

# 主要設置 nginx 的啟動用戶/組, 啟動的工作進程數(shù)量, 工作模式, Nginx 的 PID 路徑, 日志路徑等.

user nginx nginx;           // 定義啟用 worker 進程的身份 '前者 nginx 為用戶, 后者 nginx 為用戶組'

worker_processes 4|auto;    // 定義啟動工作進程數(shù)數(shù)量, '一般建議設置和 CPU 核心數(shù)一致' ( 進程默認調用內核 epool 實現(xiàn) IO 多路復用 ) ( '建議使用 auto: 會自動識別系統(tǒng) CPU 核心數(shù)來定義該值' )

events {                    # events 設置快, 主要影響 nginx 服務器與用戶的網絡連接, 比如是否允許同時接受多個網絡連接, 使用哪種事件驅動模型處理請求, 每個工作進程可以同時支持的最大連接數(shù), 是否開啟對多工作進程下的網絡連接進行序列化等.

worker_connections  1024; # 設置單個 nginx 工作進程可以接受的最大并發(fā), 作為 web 服務器的時候最大并發(fā)數(shù)為worker_connections * worker_processes, 作為反向代理的時候為(worker_connections * worker_processes)/2

}

http { # http 塊是 Nginx 服務器配置中的重要部分, 緩存、代理和日志格式定義等絕大多數(shù)功能和第三方模塊都可以在這設置, http 塊可以包含多個 server 塊, 而一個 server 塊中又可以包含多個 location 塊, server 塊可以配置文件引入、MIME-Type定義、日志自定義、是否啟用sendfile、連接超時時間和單個鏈接的請求上限等。

include    mime.types;

default_type application/octet-stream;

sendfile    on;         # 作為 web 服務器的時候打開 sendfile 加快靜態(tài)文件傳輸, 指定是否使用sendfile系統(tǒng)調用來傳輸文件,sendfile系統(tǒng)調用在兩個文件描述符之間直接傳遞數(shù)據(jù)(完全在內核中操作),從而避免了數(shù)據(jù)在內核緩沖區(qū)和用戶緩沖區(qū)之間的拷貝,操作效率很高,被稱之為零拷貝,硬盤 >> kernel buffer (快速拷貝到kernelsocket buffer) >>協(xié)議棧。

keepalive_timeout  65;  # 長連接超時時間, 單位是秒

server {                # 設置一個虛擬機主機, 可以包含自己的全局快, 同時也可以包含多個 location 模塊. 比如本虛擬機監(jiān)聽的端口、本虛擬機的名稱和IP配置,多個server 可以使用一個端口,比如都使用80端口提供web服務、

listen    80;         # 配置 server 監(jiān)聽的端口

server_name localhost; 本 server 的名稱, 當訪問此名稱的時候 nginx 會調用當前serevr內部的配置進程匹配.

location / {          # location 其實是 server 的一個指令, 為 nginx 服務器提供比較多而且靈活的指令, 都是在location中提現(xiàn)的,主要是基于nginx接受到的請求字符串,對用戶請求的UIL進行匹配,并對特定的指令進行處理,包括地址重定向、數(shù)據(jù)緩存和應答控制等功能都是在這部分實現(xiàn),另外很多第三方模塊的配置也是在location模塊中配置。

root  html;         # 相當于默認頁面的目錄名稱, 默認是相對路徑, 可以使用絕對路徑配置.

index index.html index.htm; # 默認的頁面文件名稱

}

error_page  500 502 503 504 /50x.html; # 錯誤頁面的文件名稱

location = /50x.html {                 # location處理對應的不同錯誤碼的頁面定義到/50x.html,這個跟對應其server中定義的目錄下。

root  html;                          # 定義默認頁面所在的目錄

}

}

# 和郵件相關的配置

# mail {

#        ...

#    }     mail 協(xié)議相關配置段

# tcp代理配置, 1.9 版本以上支持

# stream {

#        ...

#    }    stream 服務器相關配置段

# 導入其他路徑的配置文件

# include /apps/nginx/conf.d/*.conf

}

Main 全局配置

Nginx 性能優(yōu)化

  • worker_processes:用于配置 Nginx 生成工作進程的數(shù)量,這個是 Nginx 服務器實現(xiàn)并發(fā)處理服務的關鍵所在。

  • worker_cpu_affinity:對于具有多顆 CPU 的服務器,Nginx 通過設置 worker_cpu_affinity 參數(shù),即可輕松實現(xiàn)控制進程平均分配到多顆 CPU 上。

  • worker_priority:定義 nginx 工作進程的優(yōu)先級,Nginx worker 進程優(yōu)先級設置,默認 0,優(yōu)先級由靜態(tài)優(yōu)先級和內核根據(jù)進程執(zhí)行情況所做的動態(tài)調整( 目前只有 ±5 的調整 )共同決定。nice 值是進程的靜態(tài)優(yōu)先級,它的取值范圍是 –20~+19,–20 是最高優(yōu)先級,+19 是最低優(yōu)先級。因此,如果用戶希望 Nginx 占有更多的系統(tǒng)資源,那么可以把 nice 值配置得更小一些,但不建議比內核進程的 nice 值( 通常為 –5 )還要小。

  • worker_rlimit_nofile:表示 Nginx worker 進程 可以打開的最大句柄描述符個數(shù),更改 worker 進程的最大打開文件數(shù)限制。如果沒設置的話,這個值為操作系統(tǒng)的限制。設置后你的操作系統(tǒng)和 Nginx 可以處理比 ulimit -a 更多的文件,所以把這個值設高,這樣 nginx 就不會有 too many open files 問題了。

  • worker_connections:表示每個 worker 進程的最大連接數(shù),默認 1024 個,通過使用 worker_processes 和 worker_connections 可以實際的設置 nginx 的總體最大連接數(shù),比如 worker_processes 設置為 2,worker_connections 設置為1024,那么 nginx 的總體最大連接數(shù)就是 2048 個。但是這些連接數(shù),不僅包含了 nginx 和客戶端的鏈接,還包含了 nginx 和被代理的服務端的鏈接,因此不代表 nginx 的并發(fā)能力是 2048,具體設置多少,要根據(jù)壓測結果確定。

  • accept_mutex:由于我們在 NGINX 中配置了多個 workers,因此我們還應配置影響 worker 的相關指令。events 區(qū)域下 accept_mutex 參數(shù) 將使每個可用的 worker 進程 逐個接受新連接。默認情況下,該標志設置為 on。

  • multi_accept:使得 NGINX worker 能夠在獲得新連接的通知時盡可能多的接受連接。此指令的作用是立即接受所有連接放到監(jiān)聽隊列中。如果指令被禁用,worker 進程將逐個接受連接。

錯誤日志記錄配置

# 錯誤日志記錄配置, 語法: error_log file [debug | info | notice | warn | error | crit | alert | emerg]

# error_log logs/error.log;

# error_log logs/error.log notice;

error_log /apps/nginx/logs/error.log error;

定義 pid 文件保存路徑

pid       /apps/nginx/logs/nginx.pid;    # 該文件記錄著 NGINX 主進程的進程編號

定義 worker 進程優(yōu)先級

worker_priority 0; # 定義 worker 進程優(yōu)先級, -20~20(19) - 類似 nice 命令定義進程優(yōu)先級

所有 worker 進程能打開的文件數(shù)量上限

worker_rlimit_nofile 65536; # 所有 worker 進程能打開的文件數(shù)量上限, 包括: Nginx 的所有連接 (例如與代理服務器的連接等) 而不僅僅是與客戶端的連接, 另一個考慮因素是實際的并發(fā)連接數(shù)不能超過系統(tǒng)級別的最大打開文件數(shù)的限制. 最好與 ulimit -n 或者 limits.conf 的值保持一致, 默認不限制

HTTP 配置塊

// http 協(xié)議相關的配置結構

http {

...

... # 各 server 的公共配置

server {    # 每個 server 用于定義一個虛擬主機, 第一個 server 為默認虛擬服務器

...

}

server {

...

server_name # 虛擬主機名

root        # 主目錄

alias       # 路徑別名

location [OPERATOR] URL {    # 指定 URL 的特性

...

if CONDITION {

...

}

}

}

}

djEvTjgxMFhSX2JsNTYyaHJMZXduVFVFMF9XQUN5cUJaNTNENy1lREgyUkQwWmlTNkJmcmJpMFdjMVhhM3VRdGRwTGpkd1JZdGppakFIR1lBRUlDR29Vc0ZfNl9ya2oxaXk1bVZqR01XNzhoSjQ9.jpg

HTTP 協(xié)議配置說明

http {

include       mime.types; # 導入支持的文件類型, 相對于 /apps/nginx/conf 目錄 - [ cat /apps/nginx/conf/mime.types ]

default_type  application/octet-stream; # 除 mime.types 中的文件類型外 - 設置其它文件默認類型, 訪問其它類型時會提示下載不匹配的類型文件

# 日志配置部分

# log_format main '$remote_addr - $remote_user [$time_local] "$request" '

#                 '$status $body_bytes_sent "$http_referer" '

#                 '"$http_user_agent" "$http_x_forwarded_for"';

# access_log logs/access.log main;

自定義優(yōu)化參數(shù)

# 自定義優(yōu)化參數(shù)

sendfile       on;   # 零拷貝技術的一種

# tcp_nopush     on; # 開啟 sendfile 的情況下, 合并請求后統(tǒng)一發(fā)送給客戶端 - 必須開啟 sendfile

# tcp_nodelay   off; # 開啟 keepalived 模式下的連接是否啟用 TCP_NODELAY 選項, 為 off 時, 延遲 0.2s 發(fā)送, 默認 On 時, 不延遲發(fā)送, 立即發(fā)送用戶響應報文.

# keepalive_timeout 0;

keepalive_timeout  65 65; # 設置會話保持時間, 第二個值為響應首部: keep-Alived:timeout=65, 可以和第一個值不同

# gzip on; # 開啟文件壓縮

Server 語句塊

server {

server_tokens off;    // '隱藏 nginx 具體版本'

listen       80 default_server; # 設置監(jiān)聽地址和端口,多個虛擬機時當前是否是默認的虛擬主機, default_server 表示是默認主機, 否則排在前面 server 為默認主機.

server_name localhost; # 設置server name,可以以空格隔開寫多個并支持正則表達式, 如:*.wang.com www.wang.* ~^www\d+\.wang\.com$ 示例: .wang.org 相當于 *.wang.org和wang.org

# charset koi8-r; # 設置編碼格式,默認是俄語格式,建議改為utf-8

# access_log logs/host.access.log main;

location / {

root   html;

index index.html index.htm;

}

# error_page 404             /404.html;

# redirect server error pages to the static page /50x.html

#

error_page   500 502 503 504 /50x.html; # 定義錯誤頁面

location = /50x.html {

root   html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

# location ~ \.php$ { # 以 http 的方式轉發(fā) php 請求到指定 web 服務器

#   proxy_pass   http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

# location ~ \.php$ { # 以fastcgi的方式轉發(fā)php請求到php處理

#   root           html;

#   fastcgi_pass   127.0.0.1:9000;

#   fastcgi_index index.php;

#   fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

#   include       fastcgi_params;

# }

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

# location ~ /\.ht { # 拒絕web形式訪問指定文件,如很多的網站都是通過.htaccess文件來改變自己的重定向等功能。

#   deny all;

# }

location ~ /passwd.html {

deny all;

}

}

# another virtual host using mix of IP-, name-, and port-based configuration

#

# server { # 自定義虛擬 server

#   listen       8000;

#   listen       somename:8080;

#   server_name somename alias another.alias;

#   location / {

#       root   html;

#       index index.html index.htm; #指定默認網頁文件,此指令由ngx_http_index_module模塊提供

#   }

#}

# HTTPS server

#

# server { # https 服務器配置

#   listen       443 ssl;

#   server_name localhost;

#   ssl_certificate     cert.pem;

#   ssl_certificate_key cert.key;

#   ssl_session_cache   shared:SSL:1m;

#   ssl_session_timeout 5m;

#   ssl_ciphers HIGH:!aNULL:!MD5;

#   ssl_prefer_server_ciphers on;

#   location / {

#       root   html;

#       index index.html index.htm;

#   }

#}

MIME

# 在響應報文中將指定的文件擴展名映射至 MIME 對應的類型

include    /etc/nginx/mime.types;

default_type    application/octet-stream; # 除 mime.types 中的類型外, 指定其它文件的默認 MIME 類型, 瀏覽器一般會提示下載.

types {

text/html html;

image/gif gif;

image/jpeg jpg;

}

# MIME 參考文檔:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_Types

指定響應報文 Server 首部

// 隱藏 nginx 主版本號信息

# 是否在響應報文的 Server 首部顯示 nginx 版本

# server_tokens on | off | build | string;

[root@centos8 ~] vim /apps/nginx/conf/nginx.conf

server_tokens off;    # 隱藏 nginx 主版本號信息

djEvQ1ZHd2NlUTlZM1F0RjlHbkxWaGdMOGYyRTBZTWVteFBmQXRFZEQwSVJnUV9wUzBRQlRCWnRDbE1WX3dXWHZYaGd6MzZpSjhqX0I3NTlyRGZRSDJkSmxfNl9ya2oxaXk1bVZqR01XNzhoSjQ9.jpg

效果:

djEvbE1JVGtldUNKeHNzOUkzRkNhbGFUVVdZeFA2WmpOZ1B2RjFPa2FpeFA5N2YtX1ltNzdMaW9MckR0OHR5bEI4Y2RNdUh1dmRHOUhFcmtjLVNKMHZDUkZfNl9ya2oxaXk1bVZqR01XNzhoSjQ9.jpg

指定字符集

指定字符集 utf-8,防止網頁顯示亂碼

UTF-8 萬國碼

GB2312 是中國國家標準的簡體中文字符集

# 是否在響應報文中的 Content-Type 顯示指定的字符集: 默認 off 不顯示

charset charset | off;

# 示例

charset utf-8;  # UTF-8 是世界通用的語言編碼 - 無論是中文、還是日文、韓文、阿拉伯文,都可以正常顯示

示例:指定字符集 utf-8,防止網頁顯示亂碼

[root@centos8 ~] vim /apps/nginx/conf/nginx.conf

djEvTjgxMFhSX2JsNTYyaHJMZXduVFVFOFd1UXU4Y09zOVlKelJ2MkViR1kzS204eFhrWmVKQmRETl9ReUtYSDZQQkJPUkgxQ1U1d0NjVTRZdkkzMlFZU0ZfNl9ya2oxaXk1bVZqR01XNzhoSjQ9.jpg

[root@centos8 ~] nginx -t

[root@centos8 ~] nginx -s reload

演示效果

[root@centos8 ~] vim /apps/nginx/html/index.html

# 當然, 實際上. 前端工程師一般會在 html 文件中就配置好 utf-8 編碼字符集格式類型.

# 因此, 即使我們在 nginx 配置中未定義 utf-8 字符集格式類型. 也不會顯示亂碼.

djEvTnpCS05FWnRvblZCc1JrZzRZYlJMREs5cUk2cV9FVFdxbGtVM2tXQzRHRG9xZURXd21mamNuM3hwNmtfcXV5dXU2SzFIU0FhOXN1SC1mOTJ3aE1SNGxfNl9ya2oxaXk1bVZqR01XNzhoSjQ9.jpg

curl 192.168.80.8 -I

djEvTjgxMFhSX2JsNTYyaHJMZXduVFVFLS1vUkhpV285LThxZGh0a3JCb054VW1OM0VFZDNzTk5GWVlhcWxHaW9xSDRjQ3dicDZaWjllTWk3RUF6X3diMlZfNl9ya2oxaXk1bVZqR01XNzhoSjQ9.jpg

完成!
原文來源:https://mp.weixin.qq.com/s/ojB-FjXmYVAhH1ad2gZ0xA
[我要糾錯]
文:王振袢&發(fā)表于江蘇
關鍵詞: Nginx 配置文件 說明 Nginx 官方

來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。

點個贊
0
踩一腳
0

您在閱讀:(四)企業(yè)級高性能 WEB 服務 - Nginx 配置

Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權利

蘇公網安備32010402000125 蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司

南京思必達教育科技有限公司版權所有   百度統(tǒng)計

主站蜘蛛池模板: 在线亚洲色图 | 星光影院网高清在线观看 | 国产视频大全 | 一级特黄aaa大片免色 | 亚洲第一免费播放区 | 免费在线观看中文字幕 | 精品国产一区二区三区麻豆小说 | 日本伦理视频在线观看 | 国产日韩精品一区二区在线观看 | 欧美三级又粗又硬 | 一级做a爱免费观看视频 | 可以免费观看的一级毛片 | 国产精品一库二库三库 | 黄色片免费播放 | 欧美成人私人视频88在线观看 | 亚洲中文毛片播九公社 | 日本免费黄色网 | 国产色视频网站免费观看 | 国产欧美日韩综合精品一区二区 | 热久久国产 | 最近免费中文字幕大全高清片 | 久艹在线| 一区二区三区在线 | 性美国xxxxx免费 | 久久精品国产屋 | 欧美黑人xxxxxxxxxx | 日韩欧美在线一级一中文字暮 | 在线观看一区二区精品视频 | 最近免费中文字幕大全免费版视频 | 国产黄色免费观看 | 污视频网站在线免费看 | 免费无遮挡十八污污网站 | www.免费视频.com | 播放欧亚一级特黄录像 | 69午夜视频 | 国产精品免费一区二区区 | 国产精品毛片一区二区三区 | 丁香婷婷综合五月综合色啪 | 2021精品国夜夜天天拍拍 | 成人午夜免费视频毛片 | 亚洲欧美日韩国产精品影院 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產品享最低成本,有需要聯(lián)系,
  • 卡爾蔡司鏡片優(yōu)惠店,鏡片價格低
  • 蘋果原裝手機殼