Nginx優化與 SSL/TLS配置

1、隱藏版本號

可以使用Fiddler工具抓取數據包,查看Nginx版本,也可以在CentOS中使用命令curl -I
http://192.168.10.23 顯示響應報文首部信息。

方法一:

方法一:修改配置文件方式
vim /usr/local/nginx/conf/nginx.conf
http {include       mime.types;default_type  application/octet-stream;server_tokens off;			 			#添加,關閉版本號......
}systemctl restart nginx
curl -I http://192.168.17.155

方法二:

vim /opt/nginx-1.22.0/src/core/nginx.h
#define NGINX_VERSION "1.1.1" 					#修改版本號
#define NGINX_VER "IIS" NGINX_VERSION 			#修改服務器類型cd /opt/nginx-1.22.0/ 
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_modulemakecp /opt/nginx-1.22.0/objs/nginx /usr/local/nginx/sbin/nginxvim /usr/local/nginx/conf/nginx.conf
http {include       mime.types;default_type  application/octet-stream;server_tokens on;......
}#重啟服務
systemctl restart nginx   一定要重啟
#測試
curl -I http://192.168.17.155

2、修改用戶與組

vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; 				#取消注釋,修改用戶為 nginx ,組為 nginxsystemctl restart nginxps aux | grep nginx
主進程由root創建,子進程由nginx創建

3、緩存時間

----------------緩存時間-------------------
當Nginx將網頁數據返回給客戶端后,可設置緩存的時間,以方便在日后進行相同內容的請求
時直接返回,避免重復請求,加快了訪問速度一般針對靜態網頁設置,對動態網頁不設置緩存時間
?vim /usr/local/nginx/conf/nginx.conf
http {
......    server {    ......         location / {            root html;            index index.html index.htm;        }        ?        location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {  #加入新的 location,以圖片作為緩存對象            root html;            expires 1d;                      #指定緩存時間,1天        }?
......    }}?
#重啟服務systemctl restart nginx
在Linux系統中,打開火狐瀏覽器,右擊點查看元素選擇 網絡 ---> 選擇 HTML、WS、其他 訪問
http://192.168.17.155/yjs805.png ,雙擊200響應消息查看響應頭中包含 Cahce-Control:
max-age=86400 表示緩存時間是 86400 秒。也就是緩存一天的時間,一天之內瀏覽器訪問這個頁
面,都是用緩存中的數據,而不需要向 Nginx 服務器重新發出請求,減少了服務器的使用帶寬。

4、日志切割

----------------日志切割-------------------
vim /opt/fenge.sh
#!/bin/bash
# Filename: fenge.sh
day=$(date -d "-1 day" "+%Y%m%d")					#顯示前一天的時間
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path 			#創建日志文件目錄
mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-$day	
#移動并重命名日志文件
kill -USR1 $(cat $pid_path)							#重建新日志文件
find $logs_path -mtime +30 -exec rm -rf {} \;		#刪除30天之前的日志文件
#find $logs_path -mtime +30 | xargs rm -rf chmod +x /opt/fenge.sh
/opt/fenge.sh
ls /var/log/nginx
ls /usr/local/nginx/logs/access.log crontab -e
0 1 * * * /opt/fenge.sh

5、連接超時

----------------連接超時-------------------
HTTP有一個KeepAlive模式,它告訴web服務器在處理完一個請求后保持這個TCP連接的打開狀態。
若接收到來自同一客戶端的其它請求,服務端會利用這個未被關閉的連接,而不需要再建立一個連
接。KeepAlive 在一段時間內保持打開狀態,它們會在這段時間內占用資源。占用過多就會影響性能。vim /usr/local/nginx/conf/nginx.conf
http {
...... keepalive_timeout 65 180;      三次握手的超時時間client_header_timeout 80;       等待客戶端發送請求頭的超時時間會送408 錯誤client_body_timeout 80;          設置客戶端發送請求體的超時時間
...... 
}systemctl restart nginx
---------------------------------------------------------------------------------
#keepalive_timeout
指定KeepAlive的超時時間(timeout)。指定每個TCP連接最多可以保持多長時間,服務器將會在這
個時間后關閉連接。 Nginx的默認值是65秒,有些瀏覽器最多只保持 60 秒,所以可以設定為 60 秒。
若將它設置為0,就禁止了keepalive 連接。
第二個參數(可選的)指定了在響應頭Keep-Alive:timeout=time中的time值。這個頭能夠讓一些瀏覽
器主動關閉連接,這樣服務器就不必去關閉連接了。沒有這個參數,Nginx 不會發送 Keep-Alive 響應
頭。##client_header_timeout
客戶端向服務端發送一個完整的 request header 的超時時間。如果客戶端在指定時間內沒有發送一個
完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。###client_body_timeout
指定客戶端與服務端建立連接后發送 request body 的超時時間。如果客戶端在指定時間內沒有發送任
何內容,Nginx 返回 HTTP 408(Request Timed Out)。

6、更改進程數

----------------更改進程數-------------------
在高并發場景,需要啟動更多的Nginx進程以保證快速響應,以處理用戶的請求,避免造成阻塞?
cat /proc/cpuinfo | grep -c "physical id"      #查看cpu核數
ps aux | grep nginx                            #查看nginx主進程中包含幾個子進程
?vim /usr/local/nginx/conf/nginx.confworker_processes 2;  #修改為核數相同或者2倍
worker_cpu_affinity 01 10; #設置每個進程由不同cpu處理,進程數配為4時0001 0010 0100 1000?
systemctl restart nginx

7、配置網頁壓縮? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?

----------------配置網頁壓縮-------------------
Nginx的ngx_http_gzip_module壓縮模塊提供對文件內容壓縮的功能
允許Nginx服務器將輸出內容在發送客戶端之前進行壓縮,以節約網站帶寬,提升用戶的訪問體驗,默認
已經安裝
可在配置文件中加入相應的壓縮功能參數對壓縮性能進行優化vim /usr/local/nginx/conf/nginx.conf
http {
...... gzip on;							#取消注釋,開啟gzip壓縮功能gzip_min_length 1k;      		#最小壓縮文件大小gzip_buffers 4 64k;      		#壓縮緩沖區,大小為4個64k緩沖區gzip_http_version 1.1;   		#壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)gzip_comp_level 6;       		#壓縮比率      1:壓縮比最小,速度最快;9:壓縮比最大,傳輸速度最快,但處理也最慢,也比較的消耗CPU資源 gzip_vary on;					#支持前端緩存服務器存儲壓縮頁面gzip_types text/plain text/javascript application/x-javascript text/css text/xmlapplication/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;	#壓縮類型,表示哪些網頁文檔啟用壓縮功能
...... 
}cd /usr/local/nginx/html
先將game.jpg文件傳到/usr/local/nginx/html目錄下
vim index.html
...... 
<img src="game.jpg"/>				#網頁中插入圖片
</body>
</html>systemctl restart nginx在Linux系統中,打開火狐瀏覽器,右擊點查看元素
選擇 網絡 ---> 選擇 HTML、WS、其他 
訪問 http://192.168.17.155 ,雙擊200響應消息查看響應頭中包含 Content-Encoding: gzip

8、配置防盜鏈

    Web源主機:192.168.17.155盜鏈網站主機:192.168.17.156Web源主機配置:
----------------配置防盜鏈-------------------
vim /usr/local/nginx/conf/nginx.conf
http {
......server {......location ~* \.(jpg|gif|swf)$ {valid_referers none blocked *.yjs0805.com yjs0805.com;if ( $invalid_referer ) {rewrite ^/ http://www.yjs0805.com/error.png;#return 403;}} ......}
}
-----------------------------------------------------------------------------
~* \.(jpg|gif|swf)$ :這段正則表達式表示匹配不區分大小寫,以.jpg 或.gif 或.swf 結尾的
文件;valid_referers :設置信任的網站,可以正常使用圖片;
none:允許沒有http_refer的請求訪問資源(根據Referer的定義,它的作用是指示一個請求是從哪
里鏈接過來的,如果直接在瀏覽器的地址欄中輸入一個資源的URL地址,那么這種請求是不會包含 
Referer 字段的),如 http://www.yjs0805.com/game.jpg
我們使用 http://www.kgc.com 訪問顯示的圖片,可以理解成 http://www.yjs0805.com/game.jpg 
這個請求是從 http://www.yjs0805.com 這個鏈接過來的。
blocked:允許不是http://開頭的,不帶協議的請求訪問資源; 
*.yjs0805.com:只允許來自指定域名的請求訪問資源,如 http://www.yjs0805.comif語句:如果鏈接的來源域名不在valid_referers所列出的列表中,$invalid_referer為true,則
執行后面的操作,即進行重寫或返回 403 頁面。
---------------------------------------------------------------------------------網頁準備:
Web源主機(192.168.17.155)配置:
cd /usr/local/nginx/html
將game.jpg、error.png文件傳到/usr/local/nginx/html目錄下
vim index.html
<html>
<body>
<img src="game.jpg"/>
</body>
</html>echo "192.168.17.155 www.yjs0805.com" >> /etc/hosts 
echo "192.168.17.156 www.zx0805.com" >> /etc/hosts 盜鏈網站主機(192.168.17.156):
cd /usr/local/nginx/html
vim index.html<html>
<body>
<img src="http://www.yjs0805.com/game.jpg"/>
</body>
</html>echo "192.168.17.155 www.yjs0805.com" >> /etc/hosts 
echo "192.168.17.156 www.zx0805.com" >> /etc/hosts 在盜圖網站主機上進行瀏覽器驗證
http://www.zx0805.com

9、Nginx SSL/TLS配置

9.1 創建自簽名證書(僅用于測試環境)

如果您只是在開發或測試環境中使用 SSL,可以生成自簽名證書。請按照以下步驟生成并配置自簽名證書。

9.2 生成自簽名證書

1.生成密鑰文件和證書簽名請求(CSR):mkdir -p /usr/local/nginx/ssl/private
mkdir -p /usr/local/nginx/ssl/certs#生成私鑰文件
openssl genpkey -algorithm RSA -out /usr/local/nginx/ssl/private/nginx-
selfsigned.key -pkeyopt rsa_keygen_bits:2048
#生成csr文件
openssl req -new -key /usr/local/nginx/ssl/private/nginx-selfsigned.key -out
/usr/local/nginx/ssl/certs/nginx-selfsigned.csr其他字段說明(一般在用 openssl req -new -key ... 生成 CSR 時會問)Country Name (2 letter code): 國家代碼(必須 2 位,例如 CN、US)State or Province Name: 省/州全名,例如 BeijingLocality Name: 城市,例如 BeijingOrganization Name: 公司或組織名,例如 MyCompany LtdOrganizational Unit Name: 部門名,例如 IT Department(可留空)Common Name (e.g. server FQDN): 你的域名,例如 example.comEmail Address: 郵箱地址,例如 admin@example.com2.生成自簽名證書:
openssl x509 -req -days 365 -in  /usr/local/nginx/ssl/certs/nginx-selfsigned.csr 
-signkey  /usr/local/nginx/ssl/private/nginx-selfsigned.key -out  /usr/local
/nginx/ssl/certs/nginx-selfsigned.crt3.驗證證書生成是否成功:
證書應該已經保存在  /usr/local/nginx/ssl/certs/nginx-selfsigned.crt,
密鑰文件保存在  /usr/local/nginx/ssl/private/nginx-selfsigned.key。

9.3配置Nginx啟用SSL/TLS

vim  /usr/local/nginx/conf/nginx.confserver {listen 443 ssl;server_name benet.com www.benet.com;ssl_certificate /usr/local/nginx/ssl/certs/nginx-selfsigned.crt;ssl_certificate_key /usr/local/nginx/ssl/private/nginx-selfsigned.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers"EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256";ssl_prefer_server_ciphers on;location / {root /usr/share/nginx/html;index index.html;}
}解釋:listen 443 ssl:告訴 Nginx 監聽 HTTPS(端口 443)。
ssl_certificate和ssl_certificate_key:指定 SSL 證書和密鑰的路徑。
ssl_protocols TLSv1.2 TLSv1.3:只啟用 TLS 1.2 和 TLS 1.3,禁用 SSL 和 TLS 1.0/1.1。
ssl_ciphers:定義加密套件。可以根據安全需求選擇合適的加密方法。
ssl_prefer_server_ciphers on:強制服務器優先選擇加密套件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96623.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaWeb05

一、Listener監聽器1、簡介Listener是Servlet規范中的一員在Servlet中&#xff0c;所有的監聽器接口都是以Listener結尾監聽器實際上是Servlet規范留給JavaWeb程序員的一些特殊時機當在某些時機需要執行一段Java代碼時&#xff0c;可以用對應的監聽器2、常用的監聽器接口&#…

科普:在Windows個人電腦上使用Docker的極簡指南

在Windows個人電腦上使用Docker的極簡指南&#xff1a; 1. 快速安裝 下載安裝包&#xff08;若進不了官網&#xff0c;則可能要科學上網&#xff09; 訪問Docker Desktop官方下載頁 訪問Docker官網 選擇Windows及&#xff08;AMD64 也稱為 x86-64&#xff0c;是目前主流 PC的…

【開題答辯全過程】以 “居逸”民宿預訂微信小程序為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

LeetCode 2565.最少得分子序列

給你兩個字符串 s 和 t 。 你可以從字符串 t 中刪除任意數目的字符。 如果沒有從字符串 t 中刪除字符&#xff0c;那么得分為 0 &#xff0c;否則&#xff1a; 令 left 為刪除字符中的最小下標。 令 right 為刪除字符中的最大下標。 字符串的得分為 right - left 1 。 請你返回…

【文獻筆記】PointWeb

參考筆記: https://blog.csdn.net/m0_69412369/article/details/143106494 https://www.cnblogs.com/A-FM/p/PointWeb.html 注:本文的大部分內容是轉載而來 CVPR 2019:PointWeb: Enhancing Local Neighborhood Features for Point Cloud Processing 論文:https://ieeex…

用工招聘小程序:功能版塊與前端設計解析

在當下就業市場日益活躍的背景下&#xff0c;用工招聘小程序應運而生&#xff0c;它以高效、便捷的特點&#xff0c;為求職者與企業搭建起一座溝通的橋梁。本文將深入分析這類小程序的核心功能版塊及其前端設計&#xff0c;探討其如何優化招聘流程&#xff0c;提升用戶體驗。用…

uTools 輕工具 簡潔又方便

uTools 是一款跨平臺輕工具平臺&#xff0c;通過插件化設計提供高效工作方式&#xff0c;支持 Windows、MacOS、Linux 系統。 ? 核心功能 ?超級搜索框?&#xff1a;支持快捷鍵&#xff08;默認 AltSpace&#xff09;呼出&#xff0c;可搜索文件、網頁、應用等。 ??本地文…

圖技術重塑金融未來:悅數圖數據庫如何驅動行業創新與風控變革

隨著大數據的廣泛應用和云計算的快速發展&#xff0c;金融行業的數據已經從“大”轉向了“海”&#xff0c;從而對傳統的數據處理、分析、挖掘等的方法和工具提出了更高的要求&#xff0c;也為金融領域的數據的海量的關聯分析、實時的風控和復雜的決策支持等帶來了一系列的挑戰…

openEuler 24.03 (LTS-SP2)簡單KVM安裝+橋接模式

華為文檔創建虛擬機步驟 配置bios支持虛擬化 2、檢查系統是否支持虛擬化 3、安裝虛擬化相關組件,并啟動 yum install -y qemu virt-install virt-manager libvirt-daemon-qemu edk2-aarch64.noarch virt-viewer systemctl start libvirtd systemctl enable libvirtd4、創建…

Sentinel:微服務架構下的高可用流量防衛兵

一、引言&#xff1a;為什么需要Sentinel&#xff1f; 在分布式系統架構中&#xff0c;隨著業務復雜度的提升和微服務架構的普及&#xff0c;服務之間的依賴關系變得越來越復雜。一個服務的不可用或異常可能會在整個系統中產生連鎖反應&#xff0c;導致整個系統崩潰。這就是所…

詳解 new 和 delete

目錄 一、簡要描述兩者的作用 二、實例解析 1. 淺層區別 2. 深層區別 三、拓展&#xff08;operator new 的妙用&#xff09; 一、簡要描述兩者的作用 new : 是c推崇的 內存申請 方式&#xff0c;擁有比 malloc 更先進的機制 delete :是 對應的 內存釋放方式&#xff0c;…

fMoE論文閱讀筆記

原文鏈接&#xff1a;https://arxiv.org/pdf/2502.05370v1 在混合專家&#xff08;MoE&#xff09;架構中&#xff0c;初始階段涉及輸入樣本通過GateNet進行多分類的鑒別過程&#xff0c;目的是確定最適合處理輸入的專家模型。這個步驟被稱為“experts selection”&#xff0c;…

Linux 禪道開源版安裝

1、下載安裝包安裝wget https://www.zentao.net/dl/zentao/18.5/ZenTaoPMS.18.5.zbox_64.tar.gz tar zxf ZenTaoPMS.18.5.zbox_64.tar.gz/opt/zbox/zbox -ap 81 -mp 3307 # 指定apache服務端口 、 mysql服務端口 /opt/zbox/zbox start #啟動禪道服務( 其他命令 /opt/zbox/…

PySpark基礎知識(python)

PySpark 是 Apache Spark 的 Python API&#xff0c;它允許開發者使用 Python 語言編寫 Spark 應用程序&#xff0c;結合了 Python 的易用性和 Spark 的分布式計算能力&#xff0c;是處理大規模數據的強大工具。 一、安裝與環境配置 安裝方式&#xff1a; 通過 pip 安裝&#…

基于python大數據的電影數據分析可視化系統設計與應用

標題:基于python大數據的電影數據分析可視化系統設計與應用內容:1.摘要 本研究旨在設計并實現一個基于Python的大數據電影數據分析與可視化系統&#xff0c;以解決當前電影行業數據分散、分析效率低及可視化能力不足的問題。系統采用Python語言結合Pandas、NumPy進行數據清洗與…

【PyTorch】圖像多分類

多類圖像分類的目標是為一組固定類別中的圖像分配標簽。目錄 加載和處理數據 搭建模型 定義損失函數 定義優化器 訓練和遷移學習 用隨機權重進行訓練 用預訓練權重進行訓練 加載和處理數據 將使用 PyTorch torchvision 包中提供的 STL-10 數據集&#xff0c;數據集中有…

計算機視覺----opencv實戰----指紋識別的案例

一、數據準備src2.BMPsrc1.BMPsrc.bmpmodel.BMP二、識別原理講解&#xff08;sift特征提取&#xff09;SIFT&#xff08;Scale-Invariant Feature Transform&#xff0c;尺度不變特征變換&#xff09;是一種經典的圖像特征提取算法&#xff0c;核心優勢是不受圖像尺度縮放、旋轉…

npm 發布流程——從創建組件到發布到 npm 倉庫

1. 準備組件 1.1 創建一個 Vue 組件 假設我們要創建一個簡單的按鈕組件&#xff1a; src/MyButton.vue <template><button class"my-btn" click"$emit(click)"><slot /></button> </template><script setup lang"ts…

MySQL入門基礎指南

目錄 一、什么是數據庫&#xff1f; 僅依靠文件存儲數據存在以下幾個明顯缺點&#xff1a; 數據庫的存儲介質通常包括&#xff1a; 二、主流數據庫介紹 三、客戶端 VS 服務器 四、推薦看的MySQL安裝技術博客 五、數據庫的存儲介質 數據庫的存儲介質主要分為以下兩類&am…

【實戰中提升自己完結篇】分支篇之分支之無線、內網安全與QOS部署(完結)

1 1拓撲 「模擬器、工具合集」復制整段內容 鏈接&#xff1a;https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab7ulgil1 分支無線部署 說明&#xff1a;分支無線用瘦AP部署&#xff0c;通過VPN直接注冊到總部的AC上面&#xff0c;實現無線的業務提供&…