網(wǎng)站建設(shè)與維護(hù)是什么內(nèi)容?十大軟件培訓(xùn)機(jī)構(gòu)
1. nginx 簡(jiǎn)介
nginx性能比apache強(qiáng),體現(xiàn) 在io模型方面
76
Pv:
UV : 不同瀏覽器是不同的UV
GET 獲取
POST 上傳
HEAT 只看頭
訪問(wèn)網(wǎng)站的流程
1.dns解析
2.cdn
3.tcp
4.web服務(wù)器 處理
建立連接
接收請(qǐng)求
處理請(qǐng)求 GET POST等
獲取資源
構(gòu)建響應(yīng)報(bào)文
發(fā)送響應(yīng)報(bào)文
記錄日志
5) 瀏覽器接收響應(yīng)報(bào)文,進(jìn)行頁(yè)面渲染
http請(qǐng)求報(bào)文
http響應(yīng)報(bào)文
nginx如何優(yōu)化?
要優(yōu)化 Nginx 的性能和效率,可以考慮以下幾個(gè)方面的優(yōu)化措施:
-
調(diào)整工作進(jìn)程和連接數(shù):
- 調(diào)整 Nginx 的工作進(jìn)程數(shù),根據(jù)服務(wù)器的 CPU 核心數(shù)和負(fù)載情況進(jìn)行合理的設(shè)置。
- 調(diào)整 Nginx 的最大連接數(shù)限制,確保與實(shí)際需求相匹配。
-
合理配置緩存:
- 針對(duì)靜態(tài)資源(如圖片、樣式表、JavaScript 等),使用 Nginx 的內(nèi)置緩存來(lái)加速訪問(wèn)。
- 配置適當(dāng)?shù)木彺鏁r(shí)間和緩存規(guī)則,以減少對(duì)后端服務(wù)器的請(qǐng)求。
-
優(yōu)化 SSL/TLS:
- 使用更高效的 SSL/TLS 版本,并配置適當(dāng)?shù)拿艽a套件,以確保安全性和性能的折中。
- 考慮使用緩存 SSL/TLS 會(huì)話以減少握手的開(kāi)銷(xiāo)。
-
開(kāi)啟 Gzip 壓縮:
- 配置 Nginx 開(kāi)啟 Gzip 壓縮,減小傳輸?shù)臄?shù)據(jù)量,提高響應(yīng)速度。
- 可以根據(jù)不同的文件類(lèi)型選擇合適的壓縮級(jí)別和壓縮算法。
-
負(fù)載均衡和反向代理:
- 使用 Nginx 的負(fù)載均衡功能,將請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器,提高系統(tǒng)的吞吐量和可用性。
- 使用 Nginx 的反向代理功能,將請(qǐng)求代理到不同的后端服務(wù)器,實(shí)現(xiàn)請(qǐng)求的路由和負(fù)載均衡。
-
配置文件優(yōu)化:
- 優(yōu)化 Nginx 配置文件,確保配置項(xiàng)的正確性和一致性。
- 避免不必要的模塊加載,只加載需要的模塊和功能。
- 使用 include 文件來(lái)組織和管理配置項(xiàng),提高可維護(hù)性。
-
監(jiān)測(cè)和日志優(yōu)化:
- 啟用 Nginx 的訪問(wèn)日志和錯(cuò)誤日志,進(jìn)行監(jiān)測(cè)和故障排查。
- 使用日志切割來(lái)管理日志文件的大小和數(shù)量,避免過(guò)大的日志文件影響性能。
需要注意的是,優(yōu)化策略和步驟可能因環(huán)境和實(shí)際需求而有所不同。建議根據(jù)實(shí)際情況進(jìn)行針對(duì)性的優(yōu)化,并進(jìn)行性能測(cè)試和監(jiān)測(cè),以評(píng)估優(yōu)化效果和調(diào)整進(jìn)一步優(yōu)化的策略。
請(qǐng)求的流程
描述: 1.客戶發(fā)起情況到服務(wù)器網(wǎng)卡;
2.服務(wù)器網(wǎng)卡接受到請(qǐng)求后轉(zhuǎn)交給內(nèi)核處理;
3.內(nèi)核根據(jù)請(qǐng)求對(duì)應(yīng)的套接字,將請(qǐng)求交給工作在用戶空間的Web服務(wù)器進(jìn)程
4.Web服務(wù)器進(jìn)程根據(jù)用戶請(qǐng)求,向內(nèi)核進(jìn)行系統(tǒng)調(diào)用,申請(qǐng)獲取相應(yīng)資源(如index.html)
5.內(nèi)核發(fā)現(xiàn)web服務(wù)器進(jìn)程請(qǐng)求的是一個(gè)存放在硬盤(pán)上的資源,因此通過(guò)驅(qū)動(dòng)程序連接磁盤(pán)
6.內(nèi)核調(diào)度磁盤(pán),獲取需要的資源
7.內(nèi)核將資源存放在自己的緩沖區(qū)中,并通知Web服務(wù)器進(jìn)程
8.Web服務(wù)器進(jìn)程通過(guò)系統(tǒng)調(diào)用取得資源,并將其復(fù)制到進(jìn)程自己的緩沖區(qū)中
9.Web服務(wù)器進(jìn)程形成響應(yīng),通過(guò)系統(tǒng)調(diào)用再次發(fā)給內(nèi)核以響應(yīng)用戶請(qǐng)求
10.內(nèi)核將響應(yīng)發(fā)送至網(wǎng)卡
11.網(wǎng)卡發(fā)送響應(yīng)給用戶
這就是整個(gè)web請(qǐng)求的全過(guò)程。這個(gè)過(guò)程涉及到2個(gè)IO,一個(gè)就是客戶端請(qǐng)求的網(wǎng)絡(luò)I/O,另一個(gè)就是Web服務(wù)器請(qǐng)求資源的磁盤(pán)I/O
服務(wù)器發(fā)送請(qǐng)求>到達(dá)服務(wù)器網(wǎng)卡 緩沖區(qū)》
一個(gè)常見(jiàn)的 Web 請(qǐng)求過(guò)程可以分為以下幾個(gè)步驟:
-
用戶在瀏覽器中輸入 URL(統(tǒng)一資源定位符),并按下回車(chē)鍵。
-
瀏覽器解析 URL,提取出主機(jī)名(如:www.example.com)和資源路徑(如:/index.html)。
-
瀏覽器首先會(huì)查詢本地緩存,看是否有之前請(qǐng)求過(guò)的相同資源的副本。如果有且未過(guò)期,瀏覽器會(huì)直接從緩存中獲取資源,跳過(guò)后續(xù)步驟。
-
如果緩存中沒(méi)有相應(yīng)的資源或資源已過(guò)期,瀏覽器會(huì)通過(guò) DNS(域名系統(tǒng))解析獲取主機(jī)的 IP 地址。DNS 解析將域名轉(zhuǎn)換為 IP 地址,以便瀏覽器能夠與服務(wù)器建立連接。
-
瀏覽器使用獲取到的 IP 地址與服務(wù)器建立 TCP(傳輸控制協(xié)議)連接。TCP 提供可靠的、面向連接的數(shù)據(jù)傳輸。
-
一旦建立 TCP 連接,瀏覽器會(huì)發(fā)送 HTTP(超文本傳輸協(xié)議)請(qǐng)求到服務(wù)器。請(qǐng)求中包含請(qǐng)求方法(如 GET、POST)、請(qǐng)求頭(包含一些元數(shù)據(jù))、請(qǐng)求路徑等信息。
-
服務(wù)器接收到請(qǐng)求后,根據(jù)請(qǐng)求路徑找到對(duì)應(yīng)的資源,并進(jìn)行處理。這可能涉及到業(yè)務(wù)邏輯的處理、數(shù)據(jù)庫(kù)查詢等。
-
服務(wù)器將處理完的資源以 HTTP 響應(yīng)的形式返回給瀏覽器。響應(yīng)中包含狀態(tài)碼(用于表示請(qǐng)求的成功或失敗)、響應(yīng)頭(包含一些元數(shù)據(jù))、響應(yīng)體(包含實(shí)際的響應(yīng)內(nèi)容)等信息。
-
瀏覽器接收到響應(yīng)后,會(huì)根據(jù)響應(yīng)的內(nèi)容類(lèi)型進(jìn)行相應(yīng)的處理。比如,如果響應(yīng)是 HTML 頁(yè)面,瀏覽器會(huì)解析 HTML 并渲染頁(yè)面;如果響應(yīng)是圖片,瀏覽器會(huì)顯示該圖片。
-
瀏覽器將解析完的資源進(jìn)行展示,用戶可以在瀏覽器中看到相應(yīng)的內(nèi)容。同時(shí),瀏覽器還會(huì)將響應(yīng)內(nèi)容保存到緩存中,以便下次請(qǐng)求同樣的資源時(shí)可以直接從緩存中獲取,提高性能。
以上是一個(gè)常規(guī)的 Web 請(qǐng)求過(guò)程,不同的應(yīng)用場(chǎng)景和技術(shù)可能會(huì)有所不同,但基本的流程是相似的。
HTTP(超文本傳輸協(xié)議)中的首部字段是用于在請(qǐng)求和響應(yīng)消息中傳遞元數(shù)據(jù)和其他相關(guān)信息的一種機(jī)制。以下是HTTP中常見(jiàn)的首部字段:
-
通用首部字段:
- Cache-Control:控制緩存行為。
- Connection:控制連接的行為。
- Date:日期和時(shí)間。
- Upgrade:要求服務(wù)器升級(jí)到不同的協(xié)議。
- Via:中間代理服務(wù)器的信息。
-
請(qǐng)求首部字段:
- Accept:指定客戶端可以接受的內(nèi)容類(lèi)型。
- Accept-Encoding:指定客戶端可以接受的內(nèi)容編碼方式。
- Content-Type:請(qǐng)求中發(fā)送的實(shí)體的媒體類(lèi)型。
- User-Agent:客戶端的用戶代理標(biāo)識(shí)。
-
響應(yīng)首部字段:
- Content-Length:返回的實(shí)體主體的長(zhǎng)度(以字節(jié)為單位)。
- Content-Encoding:指定響應(yīng)實(shí)體使用的編碼方式。
- Content-Type:響應(yīng)實(shí)體的媒體類(lèi)型。
- Server:服務(wù)器的軟件名稱(chēng)和版本號(hào)。
- Set-Cookie:設(shè)置一個(gè)或多個(gè)Cookie。
-
實(shí)體首部字段:
- Content-Length:實(shí)體主體的長(zhǎng)度(以字節(jié)為單位)。
- Content-Encoding:實(shí)體主體的編碼方式。
- Content-Type:實(shí)體主體的媒體類(lèi)型。
還有許多其他的首部字段,用于傳遞不同的信息。每個(gè)首部字段都有其特定的作用和語(yǔ)義,用于幫助客戶端和服務(wù)器之間進(jìn)行正確的通信和處理請(qǐng)求或響應(yīng)。
curl -v www.baidu.com
< HTTP/1.1 302 Moved Temporarily #302 臨時(shí)重定向
< Server: openresty
< Date: Fri, 08 Sep 2023 14:10:10 GMT #表示服務(wù)器生成響應(yīng)的日期和時(shí)間,以協(xié)調(diào)世界時(shí)(UTC)表示。
< Content-Type: text/html #響應(yīng)主體的媒體類(lèi)型,這里的值是 “text/html”,表示返回的內(nèi)容是 HTML 文檔
< Content-Length: 142 #表示響應(yīng)主體的長(zhǎng)度,以字節(jié)為單位,這里的值是 142。
< Connection: keep-alive #指示服務(wù)器是否要求客戶端保持持久連接,在此示例中,服務(wù)器要求客戶端維持持久連接。
< Location: https://www.oppo.com/
< Request-Id: 64fb2b421cfe0cfcf891adbc83ce4faa #用于標(biāo)識(shí)請(qǐng)求的唯一編號(hào)或標(biāo)識(shí)符
< X-IP-Source: 4cb2b356b598ca96d5297afa558bd372 #指示客戶端的 IP 地址或來(lái)源
< Access-Control-Allow-Origin: * #用于指示服務(wù)器所允許的跨域請(qǐng)求的來(lái)源。在這個(gè)示例中,服務(wù)器允許所有來(lái)源的跨域請(qǐng)求。
< strict-transport-security: max-age=31536000 #用于指示服務(wù)器所允許的跨域請(qǐng)求的來(lái)源。在這個(gè)示例中,服務(wù)器允許所有來(lái)源的跨域請(qǐng)求。
網(wǎng)絡(luò)IO
同步:你去問(wèn)
異步:主動(dòng)通知你
阻塞:影響干別的事
異步: 不影響
I/O 多路復(fù)用
windows不支持epoll
nginx為什么性能好?
epoll模型,MMAP
支持0復(fù)制
Nginx之所以具有良好的性能,主要有以下幾個(gè)原因:
-
異步非阻塞模型:Nginx采用了事件驅(qū)動(dòng)的異步非阻塞架構(gòu),通過(guò)使用少量的線程即可處理大量并發(fā)連接。這種設(shè)計(jì)方式使得Nginx在高并發(fā)場(chǎng)景下能夠高效地處理請(qǐng)求,提高了系統(tǒng)的吞吐量。
-
輕量級(jí):Nginx是一個(gè)輕量級(jí)的服務(wù)器軟件,具有很小的內(nèi)存占用和CPU消耗。它的代碼精簡(jiǎn),功能模塊化,只包含了核心的功能,減少了不必要的資源開(kāi)銷(xiāo),提高了性能。
-
出色的內(nèi)存管理:Nginx使用了高效的內(nèi)存管理機(jī)制,能夠快速分配和釋放內(nèi)存,有效地降低了內(nèi)存碎片化的問(wèn)題,并提高了內(nèi)存的利用率。
-
高度可定制性:Nginx提供了豐富的配置選項(xiàng),可以根據(jù)具體需求進(jìn)行靈活的配置和定制。用戶可以根據(jù)自己的需求選擇合適的模塊和功能,避免了不必要的開(kāi)銷(xiāo),提高了性能。
綜上所述,Nginx通過(guò)其異步非阻塞的架構(gòu)、輕量級(jí)設(shè)計(jì)、高效的內(nèi)存管理和可定制性等特點(diǎn),使得其具有優(yōu)秀的性能表現(xiàn)。
nginx緩存功能?
主進(jìn)程指派工作
2. nginx安裝
編譯安裝
#yum -y install gcc pcre-devel openssl-devel zlib-devel make
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xf nginx-1.24.0.tar.gz
cd nginx-1.24.0/
useradd -s /sbin/nologin nginx
cd /apps/nginx-1.24.0
./configure --help
./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
make && make install
chown -R nginx.nginx /apps/nginx
nginx沒(méi)有線程
nginx 平滑升級(jí)
yum安裝升級(jí)
模擬用戶訪問(wèn):
dd if=/dev/zero of=1.img bs=1M count=100
wget --limit-rate=100 http://192.168.1.150/1.img
nginx1.18 ->nginx 1.24
1.nginx -V 查看參數(shù)
root@ubuntu20:/apps/nginx-1.24.0# nginx -V
nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 1.1.1f 31 Mar 2020
TLS SNI support enabled
configure arguments: --with-cc-opt=‘-g -O2 -fdebug-prefix-map=/build/nginx-lUTckl/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2’ --with-ld-opt=‘-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC’ --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
2.下載包解壓,
./configure 帶上nginx -V 查詢到的參數(shù)
uubuntu20.04./configure: error: the HTTP XSLT module requires the libxml2/libxslt libraries. You can either do not enable the module or install the libraries.
安裝sudo apt update && sudo apt install libxml2-dev libxslt-dev
nginx ./configure: error: the HTTP image filter module requires the GD library. You can either do not enable the module or install the libraries.
安裝 sudo apt update sudo apt install libgd-dev
3.編譯:
make
生成的二進(jìn)制文件在objs目錄
root@ubuntu20:/apps/nginx-1.24.0/objs# ll nginx
-rwxr-xr-x 1 root root 8083408 Sep 9 12:33 nginx*
4.備份的二進(jìn)制文件
root@ubuntu20:/apps/nginx-1.24.0/objs# which nginx
/usr/sbin/nginx
cp /usr/sbin/nginx{,.bak}
untu20:/usr/sbin# cd
root@ubuntu20:~# \cp /apps/nginx-1.24.0/objs/nginx /usr/sbin/nginx
cp: cannot create regular file ‘/usr/sbin/nginx’: Text file busy
強(qiáng)制替換root@ubuntu20:~# \cp -f /apps/nginx-1.24.0/objs/nginx /usr/sbin/nginx
5.測(cè)試升級(jí)的nginx是否兼容,出現(xiàn)ok才能升級(jí),我這里是測(cè)試
root@ubuntu20:~# /usr/sbin/nginx -t
nginx: [emerg] module “/usr/share/nginx/modules/ngx_http_image_filter_module.so” version 1018000 instead of 1024000 in /etc/nginx/modules-enabled/50-mod-http-image-filter.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed
這個(gè)原因是因?yàn)橐郧皀ginx modules 和現(xiàn)在官方的modules 不匹配需要我們先將舊的modules 卸載安裝新版官方的modules
安裝官方源
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
導(dǎo)入密鑰
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
配置穩(wěn)定版本的源
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \| sudo tee /etc/apt/sources.list.d/nginx.list
優(yōu)先選擇nginx官方的包。而不是系統(tǒng)源的包
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \| sudo tee /etc/apt/preferences.d/99nginx
更新
sudo apt update
查看源中所有nginx的模塊,可用看到之前是libnginx-mod .1.24版本是nginx-mod
apt remove lib-nginx-mod* #卸載舊的nginx模塊
apt install nginx-mod* #安裝1.24版本的nginx模塊
/usr/sbin/nginx -t 測(cè)試ok
root@ubuntu20:~# //usr/sbin/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
升級(jí)后訪問(wèn)zabbix 網(wǎng)站 502 Bad Gateway
可能是nginx 版本和zabbix不匹配的原因
源碼安裝平滑升級(jí)
升級(jí)要經(jīng)過(guò)充分的測(cè)試
nginx版本與業(yè)務(wù)是否匹配
編譯:注意不要make install
備份nginx
拷貝新的nginx文件
cp -f /apps/nginx-1.25.2/objs/nginx /apps/nginx/sbin/
測(cè)試
[root@rocky8 logs]# /apps/nginx/sbin/nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
nginx -t 測(cè)試通過(guò)后,發(fā)送usr2信號(hào)
kill -USR2 cat /apps/nginx/logs/nginx.pid
#會(huì)生成新進(jìn)程,舊版本主進(jìn)程PID的文件重命名為nginx.pid.oldbin,并啟動(dòng)新的nginx
[root@rocky8 logs]# cat /apps/nginx/logs/nginx.pid.oldbin
25094
[root@rocky8 logs]# cat /apps/nginx/logs/nginx.pid
25329
向舊的進(jìn)程發(fā)送which信號(hào), 它會(huì)逐步關(guān)閉旗下的工作進(jìn)程(主進(jìn)程不退出),這時(shí)所有請(qǐng)求都會(huì)由新版Nginx處理
kill -WINCH cat /apps/nginx/logs/nginx.pid.oldbin
退出老的進(jìn)程
kill -QUIT cat /apps/nginx/logs/nginx.pid.oldbin
項(xiàng)目標(biāo)題: nginx平滑升級(jí)
1.項(xiàng)目背景(版本過(guò)舊,添加新模塊)
2.項(xiàng)目目標(biāo)
3.項(xiàng)目實(shí)現(xiàn)過(guò)程(原理、步驟)
4.項(xiàng)目結(jié)果
nginx配置文件
worker_processes auto; 自動(dòng)匹配cpu核數(shù)
root@server01:/etc/nginx# ps axo pid,cmd,psr |grep nginx
worker_cpu_affinity 0001 0010; 綁定cpu #防止緩存失效#將Nginx工作進(jìn)程綁定到指定的CPU核心,默認(rèn)Nginx是不進(jìn)行進(jìn)程綁定的,綁定并不是意味著當(dāng)前nginx進(jìn)程獨(dú)占以一核心CPU,但是可以保證此進(jìn)程不會(huì)運(yùn)行在其他核心上,這就極大減少了nginx的工作進(jìn)程在不同的cpu核心上的來(lái)回跳轉(zhuǎn),減少了CPU對(duì)進(jìn)程的資源分配與回收以及內(nèi)存管理等,因此可以有效的提升nginx服務(wù)器的性能。
nginx 的master 進(jìn)程是root運(yùn)行,work進(jìn)程是普通用戶運(yùn)行, 因?yàn)閚ginx端口80是特權(quán)端口小于1023,只能用root運(yùn)行
worker_connections 2048; #所有worker進(jìn)程能打開(kāi)的文件數(shù)量上限,包括:Nginx的所有連接(例
如與代理服務(wù)器的連接等),而不僅僅是與客戶端的連接,另一個(gè)考慮因素是實(shí)際的并發(fā)連接數(shù)不能超過(guò)系統(tǒng)級(jí)
別的最大打開(kāi)文件數(shù)的限制.最好與ulimit -n 或者limits.conf的值保持一致,
這是一些常見(jiàn)的 Nginx 配置指令,用于設(shè)置代理請(qǐng)求的頭部信息。
proxy_set_header Host $http_host;
設(shè)置代理請(qǐng)求的 Host 頭部為客戶端的請(qǐng)求 Host 頭部值。proxy_set_header X-Real-IP $remote_addr;
設(shè)置代理請(qǐng)求的 X-Real-IP 頭部為客戶端的真實(shí) IP 地址。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
設(shè)置代理請(qǐng)求的 X-Forwarded-For 頭部,將客戶端的 IP 地址追加到該頭部中,以表明客戶端的真實(shí) IP 地址。proxy_set_header X-Forwarded-Proto $scheme;
設(shè)置代理請(qǐng)求的 X-Forwarded-Proto 頭部為請(qǐng)求的協(xié)議(HTTP 或 HTTPS)。
這些配置指令通常用于反向代理服務(wù)器的配置,用于將客戶端請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器,并在請(qǐng)求頭部中傳遞一些關(guān)鍵的信息。
好奇,開(kāi)心
sendfile on; 提示性能
#tcp_nopush on; #在開(kāi)啟了sendfile的情況下,合并請(qǐng)求后統(tǒng)一發(fā)送給客戶端,必須開(kāi)啟sendfile,但會(huì)延遲
- server_tokens off; 不顯示版本
- 包含
nginx虛擬主機(jī)
vi /conf/nginx.conf
include /apps/nginx/conf/conf.d/*; #添加
root@server01:/apps/nginx/conf/conf.d# cat www.luohw.org
server {
listen 8889;
server_name www.luohw.org;
root /apps/nginx/html/pc;
}
root@server01:/apps/nginx/conf/conf.d# cat m.luohw.org
server {
listen 8889;
server_name m.luohw.org;
root /apps/nginx/html/mobile;
}
配置文件在前的優(yōu)先級(jí)高
server 塊
alias和root的區(qū)別?
root是定義根的
location /about { #相當(dāng)于訪問(wèn)/opt/pc/aaa/alias /opt/pc/aaa/;}location /about { #/opt/pc/aaa/about/root /opt/pc/aaa/;}server {listen 8889;server_name www.luohw.org;location / {root /apps/nginx/html/pc;}location /about {
root /opt/pc/aaa/;
}
curl www.luohw.org:8889/about222/ 訪問(wèn) /opt/pc/aaa/about222/index.htmllocation /about/ {
root /opt/pc/aaa/;
}
curl www.luohw.org:8889/about222/ 訪問(wèn)/apps/nginx/html/pc/about222/index.html
location ^~ /about/ { 以什么開(kāi)頭
^~ 包含
^*
~* 包含,不區(qū)分大小寫(xiě)
#匹配優(yōu)先級(jí)從高到低:
=, ^~, /*, 不帶符號(hào)
配置密碼驗(yàn)證訪問(wèn)
htpasswd -cb /etc/nginx/conf.d/.nginx-user luo 123456
auth_basic "login password";auth_basic_user_file /etc/nginx/conf.d/.nginx-user;
指定密碼訪問(wèn)
curl -I -u luo:123456 zabbix.luo.com
自定義錯(cuò)誤頁(yè)面
#訪問(wèn)不存在會(huì)報(bào)404,就會(huì)訪問(wèn) /data/html/40x.html
error_page 404 /40x.html;
location = /40x.html {root /data/html/ ;}
檢測(cè)文件是否存在
location / {root /usr/share/nginx/html;index index.html index.htm;try_files $uri $uri/index.html $uri/html /index.html; #訪問(wèn)url找不到就找$uri/index.html,最后找index.html
}
GET / HTTP/1.1
HOST: 192.168.1.150
下載文件配置
location /down {autoindex on;#自動(dòng)索引功能alias /apps/nginx/html/mobile/luo;# autoindex_exact_size off;#計(jì)算文件確切大小(單位bytes),此為默認(rèn)值,off只顯示大概大小(單位kb、mb、gb)autoindex_localtime on;
#上傳一個(gè)包到nginx,太大會(huì)報(bào)413
root@server01:/apps/nginx/conf/conf.d# curl -T /root/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz http://120.77.146.92:8889/down/
413 Request Entity Too Large
上傳文件太大
修改參數(shù)
client_max_body_size 1m; #設(shè)置允許客戶端上傳單個(gè)文件的最大值,默認(rèn)值為1m,上傳文件超過(guò)此值會(huì)出413錯(cuò)誤
高價(jià)值展示生活
安全感建立
具備信息交換
興趣愛(ài)好,工作,職業(yè)
生活狀態(tài)
T / HTTP/1.1
HOST: 192.168.1.150
# 下載文件配置
location /down {autoindex on;#自動(dòng)索引功能alias /apps/nginx/html/mobile/luo;# autoindex_exact_size off;#計(jì)算文件確切大小(單位bytes),此為默認(rèn)值,off只顯示大概大小(單位kb、mb、gb)autoindex_localtime on;
root@server01:/apps/nginx/conf/conf.d# curl -T /root/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz http://120.77.146.92:8889/down/
413 Request Entity Too Large
上傳文件太大
client_max_body_size 1m; #設(shè)置允許客戶端上傳單個(gè)文件的最大值,默認(rèn)值為1m,上傳文件超過(guò)此值會(huì)出413錯(cuò)誤
nginx高級(jí)配置
高價(jià)值展示生活
安全感建立
具備信息交換
興趣愛(ài)好,工作,職業(yè)
生活狀態(tài)