nginx簡(jiǎn)介
Nginx是一款是由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開發(fā)高性能的 Web和 反向代理 服務(wù)器欢唾,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器崔挖。在高連接并發(fā)的情況下炫刷,Nginx是Apache服務(wù)器不錯(cuò)的替代品。
-
nginx的優(yōu)勢(shì)
- 高并發(fā)高性能
- 可擴(kuò)展性好,跨平臺(tái) - 模塊拓展
- 高可靠性 - 宕機(jī)概率很小
- 熱部署
- 開源許可
- 等等
nginx 的最重要的幾個(gè)使用場(chǎng)景:
- 靜態(tài)資源服務(wù)胁出,通過本地文件系統(tǒng)提供服務(wù)沟启;
- 反向代理服務(wù)忆家,延伸出包括緩存、負(fù)載均衡等德迹;
-
api
接口服務(wù)
nginx
和node.js
的很多理念類似芽卿,HTTP
服務(wù)器、事件驅(qū)動(dòng)胳搞、異步非阻塞等卸例。nginx 擅長于底層服務(wù)器端資源的處理(靜態(tài)資源處理轉(zhuǎn)發(fā)、反向代理流酬,負(fù)載均衡等)币厕,總之目前形式,在服務(wù)器上應(yīng)用非常廣泛
nginx架構(gòu)之工作模式
-
nginx
啟動(dòng)后芽腾,有一個(gè)master
進(jìn)程和多個(gè)相互獨(dú)立的worker
進(jìn)程
-
- 每個(gè)
worker
進(jìn)程都有可能處理request
連接
- 每個(gè)
-
master
進(jìn)程可以監(jiān)控worker
進(jìn)程的運(yùn)行狀態(tài)旦装,當(dāng)worker
進(jìn)程異常退出,會(huì)自動(dòng)啟動(dòng)新的worker
進(jìn)程
-
-
worker
進(jìn)程數(shù)摊滔,一般會(huì)設(shè)置成機(jī)器cpu核數(shù)阴绢。因?yàn)楦嗟?code>worker數(shù),只會(huì)導(dǎo)致進(jìn)程相互競(jìng)爭(zhēng)CPU
艰躺,從而帶來不必要的上下文切換 - 使用多進(jìn)程模式呻袭,不僅能提高并發(fā)率,而且進(jìn)程之間相互獨(dú)立腺兴,一個(gè)
worker
進(jìn)程掛了不影響其它woker
進(jìn)程的工作 -
CPU
親和左电,把CPU
內(nèi)核和nginx
的worker
進(jìn)程綁定在一起,讓每個(gè)worker
進(jìn)程固定在一個(gè)CPU
上執(zhí)行页响,從而減少CPU
的切換并提高緩存命中率提高性能
nginx的安裝
注意不同的linux
的操作系統(tǒng)安裝命令不同篓足,以下全部在centos7.x
環(huán)境運(yùn)行
安裝依賴
yum install -y gcc gcc-c++ autoconf pcre pcre-devel zlib zlib-devel openssl openssl-devel
添加安裝源
創(chuàng)建nginx.repo
文件
vi /etc/yum.repos.d/nginx.repo
添加如下內(nèi)容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
安裝nginx
yum install -y nginx
也有其他方式比如安裝包直接安裝,docker
鏡像安裝...
-
nginx -v
查看版本號(hào) -
nginx -V
查看安裝nginx
配置的參數(shù)闰蚕。查看可執(zhí)行文件栈拖,配置文件,日志文件没陡,第三方模塊文件路徑 -
nginx -t
檢查配置是否正確 -
rpm -ql nginx
查看nginx安裝文件的詳細(xì)路徑
啟動(dòng)/關(guān)閉命令
- 啟動(dòng)
systemctl start nginx.service
- 重新加載配置
nginx -s reload或systemctl reload nginx.service
- 停止
systemctl stop nginx.service或nginx -s stop
- 重啟
systemctl restart nginx.service或nginx -s reopen
- 開啟自啟
systemctl enabled nginx.service
- 關(guān)閉開機(jī)自啟
systemctl disabled nginx.service
nginx模塊介紹
nginx
的所有功能都是以模塊的形式累加形成涩哟,模塊也非常多索赏。這包括核心模塊和功能模塊,針對(duì)不同的應(yīng)用場(chǎng)景贴彼,并非所有的功能模塊都要被用到潜腻。模塊可參考如下3個(gè)網(wǎng)站
官方文檔
官方文檔翻譯版
Nginx中文參考手冊(cè),教程
nginx處理請(qǐng)求的流程
- 客戶端請(qǐng)求
- 讀取
http
請(qǐng)求的請(qǐng)求行,請(qǐng)求頭锻弓,請(qǐng)求體 - 根據(jù)域名確認(rèn)使用哪個(gè)
server
配置 -
server_rewrite
(server
內(nèi)部的重寫) - 匹配
location
-
rewrite
(location
內(nèi)部的重寫) - 訪問控制(每個(gè)
ip
每秒的并發(fā)數(shù)) - 生成內(nèi)容(
return
, 硬盤砾赔, 反向代理) - 響應(yīng)過濾(
gzip sub_filter
) - 打印日志(錯(cuò)誤和訪問日志)
- 返回給客戶端
nginx配置解讀
內(nèi)置變量
-
$http_host
請(qǐng)求的主機(jī)名稱 -
$requet_uri
請(qǐng)求的url地址 -
$request_method
請(qǐng)求的http方法 -
$request
http
的請(qǐng)求行 -
$remote_addr
客戶端地址 -
$remote_user
客戶端名稱 $http_referer
$http_user_agent
-
$http_x_forwarded_for
轉(zhuǎn)發(fā)客戶端請(qǐng)求頭的ip地址 -
$proxy_add_x_forwarded_for
通過(proxy_set_header X_Forwarded_For: $proxy_add_x_forwarded_for
配置透?jìng)骺蛻舳撕洗?code>ip) -
$arg_[參數(shù)名稱]
http
請(qǐng)求參數(shù)名稱 -
$http_[HEADER]
http
的請(qǐng)求頭 如:$http_referer
$http_user_agent
-
$send_http_[HEADER]
http
的響應(yīng)頭 如:$send_http_cookie
核心配置示例
整體上的配置塊如下所示
main {
...
http {
upstream { ... }
server {
if() {}
location { ... }
}
}
}
更詳細(xì)的核心配置如下
cat /etc/nginx
查看nginx
配置如下
user root; # 用于配置worker進(jìn)程的用戶和用戶組(如果指定的用戶不存在,則報(bào)錯(cuò))
worker_processes auto; # 配置 worker進(jìn)程的個(gè)數(shù)青灼,建議和CPU核數(shù)一樣
error_log /var/log/nginx/error.log notice; # 配置錯(cuò)誤日志存放路徑 [日志級(jí)別]
pid /var/run/nginx.pid; # 配置master進(jìn)程的進(jìn)程號(hào)和進(jìn)程號(hào)ID的文件路徑暴心,位于全局塊
events {
worker_connections 1024; # 每個(gè)worker進(jìn)程允許最大的連接數(shù)
}
http {
charset utf-8;
include /etc/nginx/mime.types; # 設(shè)定mime類型,類型由mime.types文件定義
default_type application/octet-stream; # 默認(rèn)的mime類型杂拨,如果mime.types文件找不到使用默認(rèn)的文件類型
# 日志格式(自定義輸出內(nèi)容) 和 日志的級(jí)別
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 /var/log/nginx/access.log main; # 訪問日志路徑
# 下方3個(gè)建議同時(shí)開啟专普,靜態(tài)資源服務(wù)器應(yīng)用起到優(yōu)化的作用
sendfile on; # 提高處理靜態(tài)資源的性能,系統(tǒng)讀取的文件數(shù)據(jù)直接發(fā)送給網(wǎng)絡(luò)不再經(jīng)過ng弹沽。如果配置反向代理不起作用
#tcp_nopush on; # 減少網(wǎng)絡(luò)報(bào)文段的數(shù)量檀夹,可以在達(dá)到一定的數(shù)據(jù)后一起發(fā)送。僅在使用sendfile的時(shí)候使用
tcp_nodelay on; # 在keep-alive開啟的情況生效策橘,來提高網(wǎng)絡(luò)包傳輸?shù)?實(shí)時(shí)性'和tcp_nopush的作用相反
keepalive_timeout 65; # 配置 長連接超時(shí)時(shí)間
#keepalive_requests 120; # 配置 一個(gè)長連接 可以處理的請(qǐng)求的個(gè)數(shù)炸渡,超過這個(gè)個(gè)數(shù)就會(huì)斷開該連接
#gzip on; # 是否開啟gzip壓縮
#gizp_comp_level 6; # 壓縮級(jí)別
#gzip_min_length 1k; # 內(nèi)容超過1k才參與gzip
#gzip_http_version 1.1; # 啟用gzip壓縮的最小http版本
#gzip_static on; # 如果是提前`gzip`過的需要啟用此配置
#gzip_types text/css appliction/javascript text/html; # 壓縮的文件類型
# 其它配置文件
include /etc/nginx/conf.d/*.conf;
server {
listen 80; # 服務(wù)監(jiān)聽端口
server_name test.222.com test1.222.com; # 服務(wù)使用的域名可以是ip/域名/localhost,可配置多個(gè)
#access_log /var/log/nginx/host.access.log main; # 單獨(dú) 為該服務(wù)定義一個(gè)日志路徑丽已,而不是使用全局的
#ssl_certificate /root/nginx/ssl/test.222.com.pem; # 證書文件地址 https需要
#ssl_certificate_key /root/nginx/ssl/test.222.com.key; # 私鑰文件地址 https需要
# 定義訪問改服務(wù)URI的匹配規(guī)則
location / {
root /usr/share/nginx/html; # 根目錄
index index.html index.htm; # 默認(rèn)訪問文件
}
#error_page 404 /404.html; # 404頁面
error_page 500 502 503 504 /50x.html; # 狀態(tài)碼500 502 503 504重定向到/50x.html
# 精確匹配
location = /50x.html {
root /usr/share/nginx/html; # 根目錄
}
}
}
上述配置日志格式log_format
是含有訪問ip
蚌堵,訪問用戶,時(shí)間沛婴,請(qǐng)求行吼畏,請(qǐng)求響應(yīng)狀態(tài)碼,訪問referer
嘁灯,訪問客戶端ua
泻蚊,轉(zhuǎn)發(fā)的ip
執(zhí)行/var/log/nginx/access.log
可以實(shí)時(shí)在控制臺(tái)查看日志,如下
上述是一個(gè)最簡(jiǎn)單的靜態(tài)資源服務(wù)的nginx
配置丑婿。當(dāng)你訪問test.222.com
或者test1.222.com
(前提是這兩個(gè)域名已經(jīng)備案并添加了解析)時(shí)性雄,nginx
就會(huì)訪問匹配到上述配置的server
,在server
內(nèi)部會(huì)根據(jù)訪問路徑命中location
羹奉。上述只配置了/
前綴命中所有路徑毅贮,然后根據(jù)路徑會(huì)訪問/usr/share/nginx/html
目錄下的文件
server配置塊
server
是配置服務(wù)的,可以理解成針對(duì)域名形式的路由匹配尘奏。
根據(jù)配置的server_name
匹配優(yōu)先級(jí)順序如下所示
- 精準(zhǔn)匹配
-
*
在前 -
*
在后 - 正則匹配
default_server
即優(yōu)先級(jí)如下:
test.222.com
> *.222.com
> test.222.*
>~(\w+)\.test\.222\.com$
> default.conf
文件的配置
location匹配規(guī)則
-
location
僅匹配請(qǐng)求路徑,忽略請(qǐng)求參數(shù) - 前綴字符串
- 常規(guī)(前綴)
-
=
精準(zhǔn) -
^~
忽略正則的前綴匹配
- 正則匹配
-
~
大小寫敏感的正則匹配 -
~*
大小寫不敏感的正則匹配
-
匹配的優(yōu)先級(jí)順序如圖
-
=
優(yōu)先級(jí)最高病蛉;一旦成功不在查找其它項(xiàng) -
^~
一旦匹配成功炫加;不在查找其它項(xiàng) - 正則表達(dá)式的優(yōu)先級(jí)次之瑰煎,如果多個(gè)
location
的正則匹配,則使用正則表達(dá)式最長的那個(gè) - 常規(guī)字符串匹配類型按前綴匹配
location ~ /Test/$ {
return 200 "匹配到的第一個(gè)正則";
}
location ~* /Test/(\w+)$ {
return 200 "匹配到的最長的正則";
}
location ^~ /Test/ {
return 200 "忽略后續(xù)的正則";
}
location /Test/a {
return 200 "最長的前綴匹配";
}
location /Test {
return 200 "前綴匹配";
}
location = /Test {
return 200 "精確匹配"
}
訪問下邊4個(gè)地址分別得到的請(qǐng)求結(jié)果
/Test
-> 精確匹配
/Test/
-> 忽略后續(xù)的正則
/Test/a
-> 匹配到的最長的正則
/test/a
-> 匹配到的最長的正則
rewrite使用
可以實(shí)現(xiàn)url
的重寫和重定向
rewrite 正則 replacement [flag]
作用域server/http
- 請(qǐng)求的地址如果匹配到了正則俗孝,會(huì)被后邊的
replacement
替換酒甸,然后通過[flag]標(biāo)識(shí)符決定后一步的處理行為
示例
rewrite ^(.*)$ https://$host$1 permanent; # 可以讓http重定向到https
使用場(chǎng)景
-
URL
頁面跳轉(zhuǎn)http -> https,/a-> /b
- 兼容舊版本
-
SEO
優(yōu)化(偽靜態(tài))/:id.html => /:id
- 維護(hù)提示
[flag]標(biāo)識(shí)符列舉
-
last
返回200 地址欄不發(fā)生變化 -
break
返回200 地址欄不發(fā)生變化 -
redirect
臨時(shí)重定向赋铝; 返回302插勤,地址欄發(fā)生變化 -
permanent
永久重定向; 返回301革骨,地址欄發(fā)生變化
last
和break
的區(qū)別
- 當(dāng)
rewrite
規(guī)則在location{}
外农尖,break
和last
作用一樣,遇到break
或last
后良哲,其后續(xù)的rewrite/return
語句不再執(zhí)行盛卡。但后續(xù)有location{}
的話,還會(huì)近一步執(zhí)行location{}
里面的語句,當(dāng)然前提是請(qǐng)求必須要匹配該location
- 當(dāng)
rewrite
規(guī)則在location{}
里筑凫,遇到break
后滑沧,本location{}
與其他location{}
的所有rewrite/return
規(guī)則都不再執(zhí)行。 - 當(dāng)
rewrite
規(guī)則在location{}
里巍实,遇到last
后滓技,本location{}
里后續(xù)rewrite/return
規(guī)則不執(zhí)行,但重寫后的url再次從頭開始執(zhí)行所有規(guī)則棚潦,哪個(gè)匹配執(zhí)行哪個(gè)令漂。
前端應(yīng)用場(chǎng)景
監(jiān)控nginx
狀態(tài)
stub_status on/off;
作用域范圍server/location
配置示例:
location /status {
stub_status on;
}
訪問該路徑會(huì)看到nginx
當(dāng)前的處理狀態(tài)
-
Active connections
當(dāng)前所有處于打開狀態(tài)的連接數(shù) -
accepts
總處理的連接數(shù) -
handled
總成功創(chuàng)建握手?jǐn)?shù) -
requests
總處理的請(qǐng)求數(shù) -
Reading
正在讀取客戶端的連接數(shù) -
Writing
正在響應(yīng)數(shù)據(jù)到客戶端的數(shù)量 -
Waiting
正在等待下一次請(qǐng)求的駐留連接數(shù)
請(qǐng)求限制
需要先安裝yum install -y httpd-tools
模擬請(qǐng)求ab -n 40 -c 20 http://127.0.0.1
-
-n
總共請(qǐng)求的次數(shù) -
-c
并發(fā)的請(qǐng)求數(shù),每秒請(qǐng)求的數(shù)量
請(qǐng)求連接的限制
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
作用域范圍http
瓦盛;定義共享區(qū)域大小
limit_conn conn_zone 1; # 指定限制域洗显,請(qǐng)求連接每秒限制1個(gè)
limit_conn_status 500; # 限制攔截的狀態(tài)返回500
limit_conn_log_level warn; # 失敗的日志級(jí)別
limit_rate 50; # 每秒服務(wù)器只能給客戶端50字節(jié)的數(shù)據(jù)
作用域范圍http/server/location
請(qǐng)求數(shù)限制
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
作用域范圍http
;定義共享域大小原环,每秒一個(gè)ip
只能請(qǐng)求1次
limit_req zone=req_zone burst=3;
-
burst
可以暫存的最大請(qǐng)求數(shù)挠唆;比如某一個(gè)客戶端同時(shí)發(fā)送5個(gè)請(qǐng)求,那么這一秒處理1個(gè)嘱吗,暫存3個(gè)玄组,失敗一個(gè)。暫存3個(gè)會(huì)在將來有序被處理
訪問控制
- 基于
IP
的訪問控制-http_access_module
- 基于用戶登錄信息的訪問控制
-http_auth_basic_module
location = /admin.html {
deny ip;
allow all;
}
作用域范圍http/server/location
設(shè)置緩存
注意緩存僅僅設(shè)置靜態(tài)資源谒麦,不要設(shè)置動(dòng)態(tài)資源
expires 1h; # 設(shè)置緩存時(shí)間
add_header Cache-Control no-cache / no-store / public / private; # 設(shè)置緩存策略 no-store不緩存俄讹,no-cache協(xié)商緩存 , public可以被任何對(duì)象緩存,private只能針對(duì)個(gè)人用戶不能被代理服務(wù)器緩存
支持跨域
當(dāng)服務(wù)端不支持跨域并且服務(wù)端也是經(jīng)過nginx
代理绕德,可以在nginx
配置cros
跨域的支持患膛,如下
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
add_header Access-Control-Allow-Headers token,xxx;
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Max-Age 6h;
if ($request_method = 'OPTIONS') {
return 204;
}
可以配置http/server/location
塊內(nèi)
防盜鏈
如果你的靜態(tài)資源不希望被別的的站點(diǎn)訪問,可以設(shè)置防盜鏈耻蛇,僅僅只支持自己的站點(diǎn)訪問踪蹬,可以配置如下
location ~* \.(gif|jpg|png)$ {
valid_referers none blocked 域名/ip; # 沒有refer 具體域名/ip可以訪問
if ($invalid_referer) { # 上述配置后會(huì)得到一個(gè)內(nèi)置變量$invalid_referer胞此,該變量false直接返回403
return 403; # 無效的referer返回403狀態(tài)
}
}
curl -e "ip" url
模擬加referer
訪問具體url
正向代理
對(duì)于訪問目標(biāo)來說,代理的是客戶端跃捣。對(duì)于公司局域網(wǎng)內(nèi)往往會(huì)有一個(gè)代理來訪問外網(wǎng)以進(jìn)行局域網(wǎng)內(nèi)網(wǎng)絡(luò)訪問控制漱牵,還有vpn
,Charles
等都是正向代理的應(yīng)用疚漆。nginx
配置正向代理如下:
resolver 114.114.114.114; # DNS解析
location {
proxy_pass http://$http_host$http_rui #
}
反向代理
反向代理酣胀,其實(shí)對(duì)客戶端無感知的;因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問娶聘,只需要將請(qǐng)求發(fā)送到反向代理服務(wù)器闻镶,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端趴荸。暴露的是代理服務(wù)器地址儒溉,隱藏了真實(shí)服務(wù)器IP
地址。
- 保護(hù)了真實(shí)的
web
服務(wù)器发钝,web
服務(wù)器對(duì)外不可見 - 節(jié)約了有限的
IP
地址資源- 在所有的服務(wù)器之間使用私有地址(局域網(wǎng)內(nèi)的地址)訪問顿涣,不分配真正的外網(wǎng)的
ip
- 在所有的服務(wù)器之間使用私有地址(局域網(wǎng)內(nèi)的地址)訪問顿涣,不分配真正的外網(wǎng)的
- 減少
web
服務(wù)器壓力,提高響應(yīng)速度- 可以適當(dāng)在代理服務(wù)緩存結(jié)果
- 跨域
- 請(qǐng)求的統(tǒng)一控制(權(quán)限酝豪、過濾規(guī)則)
- 等等
location / {
proxy_pass http://127.0.0.1:3000; # 真實(shí)的服務(wù)
index index.html index.htm;
proxy_pass http://xxxxx.com;
proxy_set_header Host $http_host; # 向后傳遞host請(qǐng)求頭
proxy_set_header X-Real_IP $remote_addr; # 向后傳遞前一個(gè)客戶端請(qǐng)求的ip地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 層層傳遞客戶端和代理服務(wù)器ip
proxy_connect_timeout 90; # 連接超時(shí)時(shí)間
proxy_send_timeout 90; # 連接成功后等候服務(wù)器響應(yīng)時(shí)間
proxy_read_timeout 90; # 服務(wù)器數(shù)據(jù)回傳時(shí)間就是在規(guī)定時(shí)間之內(nèi)服務(wù)器必須傳完所有的數(shù)據(jù)
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
...
}
注意事項(xiàng)
-
proxy_pass
后的url
最后加上/
就是絕對(duì)路徑涛碑,localtion
中匹配的路徑部分不走代理,也就是會(huì)被替換掉孵淘。
location /api/ {
proxy_pass http:/test.222.com/;
}
訪問 http://xxxx/api/user
-> http:/test.222.com/user
-
proxy_pass
后的url
最后如果沒有/
就是相對(duì)路徑蒲障,location
中匹配的路徑會(huì)走代理也就是會(huì)保留location
匹配的路徑
location /api {
proxy_pass http:/test.222.com;
}
訪問 http://xxxx/api/user
-> http:/test.222.com/api/user
負(fù)載均衡
- 服務(wù)器的處理能力,存儲(chǔ)空間不足瘫证,而擴(kuò)容永遠(yuǎn)也滿足不了實(shí)際的問題
- 集群可以解決高并發(fā)揉阎,流量過高導(dǎo)致服務(wù)器壓力大的問題
upstream upName {
server xxx1.com;
server xxx2.com;
server xxx3.com;
}
location / {
proxy_pass http://upName;
}
分配策略
- 輪巡
- 權(quán)重輪巡
upstream upName {
server xxx1.com weight=1;
server xxx2.com weight=2;
server xxx3.com weight=3;
}
-
ip_hash
相同的ip
始終命中固定服務(wù)器
upstream upName {
ip_hash;
server xxx1.com;
server xxx2.com;
server xxx3.com;
}
-
least_conn
哪個(gè)服務(wù)的連接數(shù)最小命中哪一個(gè) -
url_hash
固定的url
不變命中的服務(wù)器也會(huì)固定。需要安裝第三方模塊才可以使用
upstream upName {
url_hash;
...
}
-
fair
按后端的響應(yīng)時(shí)間劃分背捌,越快的服務(wù)被分配毙籽。需要安裝第三方模塊才可以使用
根據(jù)服務(wù)器的運(yùn)行狀態(tài)
upstream upName1 {
server xxx.com down/backup/max_conns/max_fair=3 max_fair_timeout=10s/
}
-
down
服務(wù)器掛了,不參與分配 -
backup
備份服務(wù)毡庆,其它服務(wù)掛了才會(huì)使用該服務(wù) -
max_fair=3 max_fair_timeout=10s
服務(wù)響應(yīng)失敗3次休眠10s坑赡,過了這個(gè)時(shí)間段恢復(fù)正常 -
max_conns
服務(wù)鏈接最大數(shù)
結(jié)語
以上介紹了nginx
的知識(shí)點(diǎn)以及在前端的應(yīng)用場(chǎng)景。運(yùn)用到實(shí)際項(xiàng)目的生產(chǎn)環(huán)境還需針對(duì)實(shí)際問題做不同的nginx
配置么抗。ps:雖然在稍微大一點(diǎn)的公司nginx
操作不屬于前端職責(zé)毅否,但我們也需要儲(chǔ)存nginx
知識(shí),以備不時(shí)之需~