Nginx的一些常用配置匯總
Nginx配置文件結(jié)構(gòu)

1、設(shè)置worker進(jìn)程的用戶(hù),指的linux中的用戶(hù),會(huì)涉及到nginx操作目錄或文件的一些權(quán)限,默認(rèn)為 nobodyuser root;
2、worker進(jìn)程工作數(shù)設(shè)置,一般來(lái)說(shuō)CPU有幾個(gè),就設(shè)置幾個(gè),或者設(shè)置為N-1也行。worker_processes 1;
3、nginx日志級(jí)別 debug |info |notice |warn | error | crit 丨 alert | emerg,錯(cuò)誤級(jí)別從左到右越來(lái)越大
#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;
4、設(shè)置nginx進(jìn)程 pid
pid logs/nginx.pid;
5、設(shè)置工作模式
events {
# 默認(rèn)使用epolL
use epoll;
# 每個(gè)worker允許連接的客戶(hù)端最大連接數(shù)
worker_connections 1024;
}
6、http 是指令塊,針對(duì)http網(wǎng)絡(luò)傳輸?shù)囊恍┲噶钆渲?/p>
http {
}
7、include引入外部配置,提高可讀性,避免單個(gè)配置文件過(guò)大
include mime.types;
8、設(shè)定日志格式, main 為定義的格式名稱(chēng),如此 access_log就可以直接使用這個(gè)變量了
#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;
| 參數(shù)名 | 參數(shù)意義 |
|---|---|
| $remote_addr | 客戶(hù)端ip |
| $remote_user | 遠(yuǎn)程客戶(hù)端用戶(hù)名,一般為:‘-’ |
| $time_local | 時(shí)間和時(shí)區(qū) |
| $request | 請(qǐng)求的url以及method |
| $status | 響應(yīng)的狀態(tài)碼 |
| $body_bytes_sent | 響應(yīng)客戶(hù)端內(nèi)容字節(jié)數(shù) |
| $http_referer | 記錄用戶(hù)從哪個(gè)鏈接跳過(guò)來(lái) |
| $http_user_agent | 用戶(hù)所使用的代理,一般來(lái)時(shí)都是瀏覽器 |
| $http_x_forwarded_for | 通過(guò)代理服務(wù)器來(lái)記錄客戶(hù)端的ip |
9、sendfile 使用高效文件傳輸,提升傳輸性能。啟用后才能使用 tcp_nopush,是指當(dāng)數(shù)據(jù)表累積一定大小后才發(fā)送,提高了效率。
sendfile on; tcp_nopush on;
10、keepalive_timeout設(shè)置客戶(hù)端與服務(wù)端請(qǐng)求的超時(shí)時(shí)間,保證客戶(hù)端多次請(qǐng)求的時(shí)候不會(huì)重復(fù)建立新的連接,節(jié)約資源損耗。
#keepalive_timeout 0; keepalive_timeout 65;
11、gzip 啟用壓縮,html/js/css壓縮后傳輸會(huì)更快
#gzip on;
12、server 可以在 http指令塊中設(shè)置多個(gè)虛擬主機(jī)
- listen 監(jiān)聽(tīng)端口
- server_name localhost、ip、域名
- location請(qǐng)求路由映射,匹配攔截
- root 請(qǐng)求位置
- index 首頁(yè)設(shè)置
server {
listen 80;
server_name localhost;
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;
}
}
Nginx日志切割
手動(dòng)切割
現(xiàn)有的日志都會(huì)存在 access.log 文件中,但是隨著時(shí)間的推移,這個(gè)文件的內(nèi)容會(huì)越來(lái)越多,體積會(huì)越來(lái)越大,不便于運(yùn)維人員,查看,所以我們可以通過(guò)把這個(gè)大的日志文件切割為多份不同的小文件作為日志,切割規(guī)則可以以天 為單位,如果每天有幾百G或者幾個(gè)T的日志的話(huà),則可以按需以每半天 或者 每小時(shí) 對(duì)日志切割一下。
具體步驟如下∶
1、到nginx的sbin目錄,創(chuàng)建一個(gè)shell可執(zhí)行文件∶ cut_my_log.sh,內(nèi)容為∶
#!/bin/ bash
L0G_PATH="/var/log/nginx"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
#向Nginx主進(jìn)程發(fā)送信號(hào),用于重新打開(kāi)日志文件
kill -USR1 `cat $PID`
2、為 cut_my_log.sh 添加可執(zhí)行的權(quán)限∶
chmod +x cut_my_log.sh
測(cè)試日志切割后的結(jié)果∶
./cut_my_Log.sh

定時(shí)切割:使用定時(shí)任務(wù)
1、安裝定時(shí)任務(wù)∶
yum install crontabs
2、crontab -e 編輯并且添加一行新的任務(wù)∶
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
3、重啟定時(shí)任務(wù)∶
service crond restart

● 附∶常用定時(shí)任務(wù)命令∶
service crond start //啟動(dòng)服務(wù) service crond stop //關(guān)閉服務(wù) service crond restart //重啟服務(wù) service crond reload //重新載入配置 crontab -e //編輯任務(wù) crontab -l //查看任務(wù)列表
定時(shí)任務(wù)表達(dá)式∶
Cron表達(dá)式分為5或6個(gè)域,每個(gè)域代表一個(gè)含義,如下所示∶
| 取值范圍 | 分 | 時(shí) | 日 | 月 | 星期幾 | 年(可選) |
|---|---|---|---|---|---|---|
| 取值范圍 | 0-59 | 0-23 | 1-31 | 1-12 | 1-7 | 2020/2021/2022/... |
常用表達(dá)式∶
- 每分鐘執(zhí)行∶
*/1 * * * * - 每日凌晨(每天晚上23∶59)執(zhí)行∶
59 23 * * * - 每日凌晨1點(diǎn)執(zhí)行∶
0 1 * * *
root 與 alias
假如服務(wù)器路徑為∶/home/imooc/files/img/face.png
- root 路徑完全匹配訪(fǎng)問(wèn)
配置的時(shí)候?yàn)椤?/p>
location /imooc {
root /home
}
用戶(hù)訪(fǎng)問(wèn)的時(shí)候請(qǐng)求為∶url:port/imooc/files/img/face.png
- alias 可以為你的路徑做一個(gè)別名,對(duì)用戶(hù)透明
配置的時(shí)候?yàn)椤?/p>
location /hello {
alias /home/imooc
}
用戶(hù)訪(fǎng)問(wèn)的時(shí)候請(qǐng)求為∶url:port/hello/files/img/face.png,如此相當(dāng)于為目錄 imooc做一個(gè)自定義的別名。
使用GZIP壓縮提升請(qǐng)求效率
# 開(kāi)啟gzip壓縮功能,目的∶提高傳輸效率,節(jié)約帶寬 gzip on; # 限制最小壓縮,小于1字節(jié)文件不會(huì)壓縮 gzip_min_length 1; # 定義壓縮的級(jí)別(壓縮比,文件越大,壓縮越多,但是cpu使用會(huì)越多) gzip_comp_level 3; # 定義壓縮文件的類(lèi)型 gzip_types text/plain application/javascript application/x-javascript text/css applicatio n/xmL text/javascript application/x-httpd-php image/jpeg image/gif image/png application/jison;
location匹配規(guī)則解析
空格∶默認(rèn)匹配,普通匹配
location / {
root /home
}
=∶精確匹配。
location = /imooc/img/face1.png {
root /home;
}
~*∶匹配正則表達(dá)式,不區(qū)分大小寫(xiě)
# 符合圖片的顯示
location ~* \.(GIF|jpg|png|jpeg){
root /home;
}
~∶匹配正則表達(dá)式,區(qū)分大小寫(xiě)
# GIF必須大寫(xiě)才能匹配到
location ~ \.(GIF|jpg|png|jpeg){
root /home;
}
^~∶以某個(gè)字符路徑開(kāi)頭
location ^~ /imooc/img {
root /home;
}
使用SwitchHosts模擬本地域名解析
下載SwitchHosts工具添加配置:192.168.170.129 www.baidu.com,或者找到本機(jī)的hosts文件,添加這行配置,本地域名就模擬好了,如下:

Nginx跨域配置支持
#允許跨域請(qǐng)求的域,*代表所有 add_header 'Access-Control-Allow-Origin' *; #允許帶上cookie請(qǐng)求 add_header 'Access-Control-Allow-Credentials' 'true'; #允許請(qǐng)求的方法,比如 GET/POST/PUT/DELETE add_header 'Access-Control-Allow-Methods' *; #允許請(qǐng)求的header add_header 'Access-Control-Allow-Headers' *;
Nginx防盜鏈支持
為了 保證自己網(wǎng)站的靜態(tài)資源不能被其它網(wǎng)站引用,我們可以在nginx中做如下配置:
#對(duì)源站點(diǎn)驗(yàn)證
valid_referers *.imooc.com;
#非法引入會(huì)進(jìn)入下方判斷
if ($invalid_referer) {
return 404;
}
Nginx負(fù)載均衡
OSI 網(wǎng)絡(luò)模型
在講到Nginx負(fù)載均衡的時(shí)候,其實(shí)Nginx是七層負(fù)載均衡,后續(xù)我們還會(huì)涉及到LVS,是四層負(fù)載均衡,七層和四層是什么概念呢?這就必須提到網(wǎng)絡(luò)模型。網(wǎng)絡(luò)模型是計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)的一部分內(nèi)容,一般大學(xué)計(jì)算機(jī)系都會(huì)講到此知識(shí)點(diǎn),并且會(huì)作為考點(diǎn);其實(shí)在面試過(guò)程中有時(shí)候也會(huì)被問(wèn)到。所以我們還是有必要來(lái)復(fù)習(xí)或?qū)W習(xí)一下這塊的一些重要知識(shí)的。
網(wǎng)絡(luò)模型就是 OSI(0pen System Interconnect),意思為 開(kāi)放網(wǎng)絡(luò)互聯(lián) ,是由國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電報(bào)電話(huà)咨詢(xún)委員會(huì)(CCITT)共同出版的,他是一種網(wǎng)絡(luò)互聯(lián)模型,也是一種規(guī)范。
網(wǎng)絡(luò)模型分為七層,也就是當(dāng)用戶(hù)發(fā)起請(qǐng)求到服務(wù)器接收,會(huì)歷經(jīng)七道工序,或者說(shuō)用戶(hù)利用互聯(lián)網(wǎng)發(fā)送消息給另一個(gè)用戶(hù),也會(huì)歷經(jīng)七道工序。這七層可以分為如下∶
| 層級(jí) | 名稱(chēng) | 說(shuō)明 |
|---|---|---|
| 第七層 | 應(yīng)用層 | 與用戶(hù)行為交互 |
| 第六層 | 表示層 | 定義數(shù)據(jù)格式以及數(shù)據(jù)加密 |
| 第五層 | 會(huì)話(huà)層 | 創(chuàng)建、管理以及銷(xiāo)毀會(huì)話(huà) |
| 第四層 | 傳輸層 | 創(chuàng)建、管理請(qǐng)求端到響應(yīng)端(端到端)的連接 |
| 第三層 | 網(wǎng)絡(luò)層 | 請(qǐng)求端的IP地址 |
| 第二層 | 數(shù)據(jù)鏈路層 | 提供介質(zhì)訪(fǎng)問(wèn)與鏈路管理 |
| 第一層 | 物理層 | 傳輸介質(zhì),物理媒介 |
以上七層每層可以與上下相鄰層進(jìn)行通信。每一層都是非常復(fù)雜的,我們不在這里深究,我們以舉例的形式來(lái)闡述每一層是干嘛的。
- 應(yīng)用層: 這是面向用戶(hù)的,最靠近用戶(hù),為了讓用戶(hù)和計(jì)算機(jī)交互,在計(jì)算機(jī)里會(huì)有很多軟件,比如eclipse,idea,qq,微信,淘寶等,這些都是應(yīng)用軟件,用戶(hù)可以通過(guò)這些應(yīng)用軟件和計(jì)算機(jī)交互,交互的過(guò)程其實(shí)就是接口的調(diào)用,應(yīng)用層為用戶(hù)提供了交互的接口,以此為用戶(hù)提供交互服務(wù)。那么在這一層最常見(jiàn)的協(xié)議有∶HTTP,HTTPS,F(xiàn)TP,SMTP,POP3等。Nginx在本層,為七層負(fù)載均衡。
舉例∶我要寄一封信給遠(yuǎn)在天邊的老外LiLei,我會(huì)打開(kāi)快遞軟件下單,這個(gè)時(shí)候我是 用戶(hù),快遞軟件就是 應(yīng)用服務(wù),是建立在計(jì)算機(jī)上的,提供給用戶(hù)交互的一種服務(wù)或稱(chēng)之為手段。 - 表示層: 該層提供數(shù)據(jù)格式編碼以及加密功能,確保 請(qǐng)求端 的數(shù)據(jù)能被 響應(yīng)端 的應(yīng)用層識(shí)別。
舉例∶我寫(xiě)中文給LiLei,他看不懂,這個(gè)時(shí)候我就會(huì)使用翻譯軟件把中文翻譯成英文,隨后信中涉及到一些比較隱私的信息我會(huì)加密一下,這個(gè)時(shí)候翻譯軟件和加密器就充當(dāng)了 表示層 的作用,他用于顯示用戶(hù)能夠識(shí)別的內(nèi)容。 - 會(huì)話(huà)層: 會(huì)話(huà)可以理解為session,請(qǐng)求發(fā)送到接受響應(yīng)的這個(gè)過(guò)程之間存在會(huì)話(huà),會(huì)話(huà)層就充當(dāng)了這一過(guò)程的管理者,從創(chuàng)建會(huì)話(huà)到維護(hù)會(huì)話(huà)最后銷(xiāo)毀會(huì)話(huà)。
舉例∶我每次寫(xiě)信給LiLei都會(huì)記錄在一個(gè)小本本上,寄信時(shí)間日期,收信時(shí)間日期,這本小本本上存有每次通信記錄,這個(gè)小本本就相當(dāng)于是一個(gè)會(huì)話(huà)的管理者。又或者說(shuō),我們平時(shí)在打電話(huà),首先需要撥打電話(huà),這是 建立會(huì)話(huà) ,對(duì)方接聽(tīng)電話(huà),此時(shí)正在通話(huà)(維持并管理會(huì)話(huà)),通話(huà)結(jié)束后會(huì)話(huà)銷(xiāo)毀 ,那么這也是一次會(huì)話(huà)的生命周期。 - 傳輸層: 該層建立端到端的連接,他提供了數(shù)據(jù)傳輸服務(wù),在傳輸層通信會(huì)涉及到端口號(hào),本層常見(jiàn)的協(xié)議為T(mén)CP、UDP,LVS就是在傳輸層,也就是四層負(fù)載均衡。
舉例∶我和LiLei通信過(guò)程中會(huì)借助快遞公司,快遞公司會(huì)分配快遞員取件和寄件,那么這個(gè)快遞員則充當(dāng) 傳輸層 的齋田。 - 網(wǎng)絡(luò)層: 網(wǎng)絡(luò)通信的時(shí)候必須要有本機(jī)IP和對(duì)方的IP,請(qǐng)求端和響應(yīng)端都會(huì)有自己的IP的,IP就相當(dāng)于你家地址門(mén)牌號(hào),在網(wǎng)絡(luò)上云服務(wù)器有固定的公網(wǎng)IP,普通計(jì)算機(jī)也有,只不過(guò)是動(dòng)態(tài)IP,運(yùn)營(yíng)商每天會(huì)分配不同的IP給你的計(jì)算機(jī)。所以網(wǎng)絡(luò)層也能稱(chēng)之為IP層,IP是互聯(lián)網(wǎng)的基礎(chǔ)根本。能提供IP分配的設(shè)備則為路由器或交換機(jī)。
舉例∶對(duì)于擁有固定IP的云服務(wù)來(lái)說(shuō),他們都是由騰訊云、阿里云等這樣的供應(yīng)商提供的,他們?yōu)樵品?wù)器提供固定ip ;電信、移動(dòng)、聯(lián)調(diào)等運(yùn)營(yíng)商為你的計(jì)算機(jī)動(dòng)態(tài)分配ip,每天都不同;則這些供應(yīng)商和運(yùn)營(yíng)商都是網(wǎng)絡(luò)層。同理,快遞員由物流公司分配和管理,那么物流公司就是 網(wǎng)絡(luò)層 咯。 - 數(shù)據(jù)鏈路層: 這一層會(huì)提供計(jì)算機(jī)MAC地址,通信的時(shí)候會(huì)攜帶,為了確保請(qǐng)求投遞正確,所以他會(huì)驗(yàn)證檢測(cè)MAC 地址,以確保請(qǐng)求響應(yīng)的可靠性。
舉例∶快遞員在投遞派送的時(shí)候,他(或客服)會(huì)預(yù)先提前打電話(huà)給你,確認(rèn)你家地址對(duì)不對(duì)、有沒(méi)有人、貨到付款有沒(méi)有準(zhǔn)備好錢(qián)等等,這個(gè)時(shí)候快遞員(或客服)就充當(dāng)了數(shù)據(jù)鏈路層 的職責(zé)。 - 物理層∶ 端到端請(qǐng)求響應(yīng)過(guò)程中的媒介,物理介質(zhì),比如網(wǎng)線(xiàn)、中繼器等等設(shè)備,都是你在端到端交互過(guò)程中不可缺少的基礎(chǔ)設(shè)備。
舉例∶快遞員在投遞的過(guò)程中,你寫(xiě)的信會(huì)歷經(jīng)一些交通運(yùn)輸工具,比如首先通過(guò)飛機(jī)運(yùn)輸?shù)絿?guó)外,在海關(guān)統(tǒng)一拿到信以后會(huì)通過(guò)汽車(chē)運(yùn)輸?shù)絃iLei所在城市的物流集散地,最后快遞員通過(guò)三輪電頻車(chē)寄到LiLei家里,這個(gè)時(shí)候,飛機(jī)、汽車(chē)、三輪電瓶車(chē)都是 物理層 的媒介。
負(fù)載均衡策略:
輪詢(xún):輪詢(xún)是Nginx負(fù)載均衡的默認(rèn)策略。使用場(chǎng)景:針對(duì)每個(gè)服務(wù)器硬件配置一樣。
加權(quán)輪詢(xún)(weight):根據(jù)設(shè)置的權(quán)重值去分配處理請(qǐng)求的數(shù)量。使用場(chǎng)景:服務(wù)器硬件配置有差異,讓好的服務(wù)器去處理更多的請(qǐng)求。
ip_hash:對(duì)請(qǐng)求用戶(hù)的IP地址進(jìn)行hash運(yùn)算后得到的值,再對(duì)服務(wù)器數(shù)量進(jìn)行取模運(yùn)算。讓同一用戶(hù)的請(qǐng)求落到固定的服務(wù)器上。這樣就可以保證用戶(hù)訪(fǎng)問(wèn)可以請(qǐng)求到上游服務(wù)中的固定的服務(wù)器,前提是用戶(hù)ip沒(méi)有發(fā)生更改。使用ip hash的注意點(diǎn)∶不能把后臺(tái)服務(wù)器直接移除,只能標(biāo)記 down .
upstream tomcats {
ip_hash;
server 192.168.1.173:8080;
server 192.168.1.174:8080 down;
server 192.168.1.175:8080;
}
一致性哈希算法:讓每臺(tái)服務(wù)器IP的hash值落在哈希環(huán)節(jié)點(diǎn)上,在用戶(hù)請(qǐng)求到Nginx時(shí),根據(jù)順時(shí)針就近原則落到最近的服務(wù)器節(jié)點(diǎn)。
url_hash:根據(jù)每次請(qǐng)求的url地址,hash后訪(fǎng)問(wèn)到固定的服務(wù)器節(jié)點(diǎn)。
upstream tomcats {
# url hash
hash $request_uri;
# 最少連接數(shù)
# least_Conn
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;
}
server {
listen 80;
server_name www.tomcats.Com;
location / {
proxy_pass http://tomcats;
}
}
upstream指令參數(shù)
max_conns:限制每臺(tái)server的連接數(shù),用于保護(hù)避免過(guò)載,可起到限流作用。測(cè)試參考配置如下∶
# worker進(jìn)程設(shè)置1個(gè),便于測(cè)試觀察成功的連接數(shù)
worker_processes 1;
upstream tomcats {
server 192.168.1.173:8080 max_conns=2;
server 192.168.1.174:8080 max_conns=2;
server 192.168.1.175:8080 max_conns=2;
}
slow_start:商業(yè)版,需要付費(fèi)。配置參考如下:
upstream tomcats {
server 192.168.1.173:8080 weight=6 slow_start=60
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=2;
}
- 該參數(shù)不能使用在 hash 和 random Load balancing 中。
- 如果在 upstream 中只有一臺(tái)server,則該參數(shù)失效。
down、backup
down 用于標(biāo)記服務(wù)節(jié)點(diǎn)不可用∶
upstream tomcats {
server 192.168.1.173:8080 down;
server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;
}
表示當(dāng)前服務(wù)器節(jié)點(diǎn)是備用機(jī),只有在其他的服務(wù)器都宕機(jī)以后,自己才會(huì)加入到集群中,被用戶(hù)訪(fǎng)問(wèn)到
upstream tomcats {
server 192.168.1.173:8080 backup;
server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;
}
注意:backup參數(shù)不能使用在 hash 和 random Load balancing 中。
max_fails、fail_timeout
- max_fails∶表示失敗幾次,則標(biāo)記server已宕機(jī),剔出上游服務(wù)。
- fail_timeout∶表示失敗的重試時(shí)間。假設(shè)目前設(shè)置如下∶
max_fails=2 fail_timeout=15s
則代表在15秒內(nèi)請(qǐng)求某一server失敗達(dá)到2次后,則認(rèn)為該server已經(jīng)掛了或者宕機(jī)了,隨后再過(guò)15秒,這15秒內(nèi)不會(huì)有新的請(qǐng)求到達(dá)剛剛掛掉的節(jié)點(diǎn)上,而是會(huì)請(qǐng)求到正常運(yùn)作的server,15秒后會(huì)再有新請(qǐng)求嘗試連接掛掉的server,如果還是失敗,重復(fù)上一過(guò)程,直到恢復(fù)。
Keepalived 提高吞吐量
keepalived ∶ 設(shè)置長(zhǎng)連接處理的數(shù)量
proxy_http_version ∶設(shè)置長(zhǎng)連接http版本為1.1
proxy_set_header ∶清除connection header信息
upstream tomcats {
#server 192.168.1.173:8080 max_fails=2 failtimeout=1s;
server 192.168.1.190:8080;
#server 192.168.1.174:8080 weight=1;
server 192.168.1.175:8080 weight=1;keepalive 32
}
server {
listen 80;
server_name: www.tomcats.com;
location / {
proxy_pass http://tomcats;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
Nginx的緩存
瀏覽器緩存:加速用戶(hù)訪(fǎng)問(wèn),提升單個(gè)用戶(hù)(瀏覽器訪(fǎng)問(wèn)者)體驗(yàn),緩存在本地
Nginx緩存:
- 緩存在nginx端,提升所有訪(fǎng)問(wèn)到nginx這一端的用戶(hù)
- 提升訪(fǎng)問(wèn)上游(upstream)服務(wù)器的速度
- 用戶(hù)訪(fǎng)問(wèn)仍然會(huì)產(chǎn)生請(qǐng)求流量
控制瀏覽器緩存
location /files {
alias /home/imooc;
# expires 10s;
# expires @22h30m;
# expires -1h;
# expires epoch;
# expires off;
expires max;
}
Nginx的反向代理緩存
# proxy_cache_path 設(shè)置緩存目錄# # keys_zone 設(shè)置共享內(nèi)存以及占用空間大小 # max_size 設(shè)置緩存大小 # inactive 超過(guò)此時(shí)間則被清理 # use_temp_path 臨時(shí)目錄,使用后會(huì)影響n(yōu)ginx性能 proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;
location / {
proxy_pass http://tomcats;
# 啟用緩存,和keyS_zone一致
proxy_cache mycache;
# 針對(duì)200和304狀態(tài)碼緩存時(shí)間為8小時(shí)
proxy_cache_valid 200 304 8h;
使用Nginx配置HTTPS域名證書(shū)
安裝SSL模塊:要在nginx中配置https,就必須安裝ssl模塊,也就是∶http_ssl_module。
1、進(jìn)入到nginx的解壓目錄∶ /home/software/nginx-1.16.1
2、新增ssl模塊(原來(lái)的那些模塊需要保留)
./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/Log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \ --with-http_ssl_module
3、編譯和安裝
make make install
配置HTTPS
1、把ssl證書(shū) *.crt 和私鑰*.key拷貝到/usr/local/nginx/conf 目錄中。
2、新增 server 監(jiān)聽(tīng) 443端口∶
server {
listen 443;
server_name www.imoocdsp.com;
# 開(kāi)啟ssl
ssl on;
# 配置ssl證書(shū)
ssl_certificate 1_www.imoocdsp.com_bundle
# 配置證書(shū)秘鑰
ssl_certificate_key 2_www.imoocdsp.com.key;
# ssl會(huì)話(huà)
ssl_session_cache shared:SSL:1m
# ssl會(huì)話(huà)超時(shí)時(shí)間
ssl_session_timeout 5m;
# 配置加密套件,寫(xiě)法遵循 openssl 標(biāo)準(zhǔn)
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://tomcats/;
index index.html index.htm;
}
}
3、reload nginx:./nginx -s reload
總結(jié)
到此這篇關(guān)于Nginx的一些常用配置匯總的文章就介紹到這了,更多相關(guān)Nginx常用配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Nginx反向代理實(shí)現(xiàn)會(huì)話(huà)(session)保持的兩種方式
這篇文章主要介紹了詳解Nginx反向代理實(shí)現(xiàn)會(huì)話(huà)(session)保持的兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
解決nginx 503 Service Temporarily Unavailable方法示例
這篇文章主要介紹了解決nginx 503 Service Temporarily Unavailable方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
nginx如何根據(jù)報(bào)文里字段轉(zhuǎn)發(fā)至不同地址
要在 Nginx 中根據(jù) POST 請(qǐng)求的 JSON 負(fù)載中的 id 字段的值進(jìn)行轉(zhuǎn)發(fā),你可以使用 Nginx 的 ngx_http_lua_module 模塊,這個(gè)模塊允許你在 Nginx 配置中使用 Lua 腳本,本文介紹nginx如何根據(jù)報(bào)文里字段轉(zhuǎn)發(fā)至不同地址,感興趣的朋友一起看看吧2024-12-12
windows系統(tǒng)下安裝Nginx及簡(jiǎn)單使用過(guò)程
Nginx是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù),也是一種輕量級(jí)的Web服務(wù)器,可以作為獨(dú)立的服務(wù)器部署網(wǎng)站,應(yīng)用非常廣泛,特別是現(xiàn)在前后端分離的情況下,這篇文章主要介紹了windows系統(tǒng)下安裝Nginx以及簡(jiǎn)單使用,需要的朋友可以參考下2024-04-04
nginx關(guān)閉/重啟/啟動(dòng)的操作方法
在本篇文章里小編給各位分享的是關(guān)于nginx關(guān)閉/重啟/啟動(dòng)的操作方法,有興趣的朋友們可以學(xué)習(xí)參考下。2020-03-03

