最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx優(yōu)化與防盜鏈配置過程

 更新時間:2026年03月02日 09:10:25   作者:木合杉  
本文介紹了Nginx配置的最佳實踐,包括隱藏版本號、分割日志文件、啟用壓縮、圖片緩存、并發(fā)設置以及優(yōu)化其他配置

隱藏版本號

隱藏Nginx的版本號是一種安全實踐,因為通過查看服務器的版本號,潛在攻擊者可能會利用已知的漏洞來攻擊服務器。

curl -I http://192.168.41.10

通過Nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

在Nginx的配置文件(通常是nginx.conf)中添加或修改server_tokens指令。這個指令控制Nginx在HTTP響應頭中是否顯示版本號。

http {
    server_tokens off;
    # other configurations...
}

server_tokens設置為off將隱藏版本號。在修改配置后,重新加載Nginx配置以使更改生效。

修改nginx.h源碼文件重新編譯安裝

vim /opt/nginx-1.22.0/src/core/nginx.h
#define NGINX_VERSION  "1.22.0"

可以將其修改為一個自定義的字符串,例如:

#define NGINX_VERSION  "Custom Version"

重新編譯

cd /opt/nginx-1.22.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

分割日志文件

基于原日志文件分割當天日志

建立腳本

#!/bin/bash
#獲取當前的日期,年-月-日
d=$(date +%Y-%m-%d)

#定義存儲的目錄
dir="/usr/local/nginx/logs"

#定義分割的源日志
logs_file="/usr/local/nginx/logs/access.log"
logs_error="/usr/local/nginx/logs/error.log"

#定義出nginx的pid文件
pid_file='/usr/local/nginx/run/nginx.pid'

if [ ! -d "$dir" ]
then
  mkdir -p $dir
fi

#mv來對原日志文件重命名
mv ${logs_file} ${dir}/access_$wppm3vysvbp.log
mv ${logs_error} ${dir}/error_$wppm3vysvbp.log
#mv /usr/local/ngin/logs/access.log /usr/local/nginx/logs/access_2023_11_15.log

kill -USR1 $(cat ${pid_file})
#向nginx程序傳送一個信號 USR1,讓nginx重新生成一個新的日志文件

find ${dir} -mtime +30 -exec rm -rf {} \;
#把30天之前修改過的文件,刪除。清楚一下過期的日志文件。

賦權執(zhí)行腳本

chmod 777 nginxlog.sh
. nginxlog.sh

設置定時任務

crontab -e
0 0 * * * /opt/nginxlog.sh  

網(wǎng)頁壓縮

啟用壓縮:

在 Nginx 配置文件中,你需要啟用 gzip 模塊。通常,這個模塊已經(jīng)默認啟用,但你可以確保以下配置存在:

gzip on;

這將啟用壓縮功能。

設置壓縮類型:

使用 gzip_types 指令來指定需要壓縮的 MIME 類型。例如:

gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

這是一個示例,你可以根據(jù)你的應用程序的需要添加或移除適當?shù)?MIME 類型。

壓縮級別:

通過 gzip_comp_level 設置壓縮級別。級別范圍是 1 到 9,級別越高,壓縮效果越好,但 CPU 消耗也會增加。默認級別是 1。

gzip_comp_level 6;

最小壓縮文件大?。?/strong>

使用 gzip_min_length 指令設置允許壓縮的最小文件大小。小于該大小的文件將不會被壓縮。

gzip_min_length 1000;

壓縮緩沖區(qū)大?。?/strong>

使用 gzip_buffers 指令設置壓縮緩沖區(qū)的大小。

gzip_buffers 4 16k;

這里的 4 表示緩沖區(qū)的數(shù)量,16k 表示每個緩沖區(qū)的大小。

禁用壓縮的 User-Agent:

如果有一些 User-Agent 不支持壓縮,你可以使用 gzip_disable 指令將其排除。

gzip_disable "MSIE [1-6]\.";

上述配置將禁用對 MSIE 6 及以下版本的 Internet Explorer 的壓縮。

啟用壓縮的文件擴展名:

使用 gzip_proxied 指令來定義啟用壓縮的文件擴展名。

gzip_proxied any;

這將允許任何請求啟用壓縮。

開啟壓縮的 HTTP 版本:

使用 gzip_http_version 指令可以指定在哪個 HTTP 版本下啟用壓縮。

gzip_http_version 1.1;

重啟 Nginx:

修改配置后,確保重新加載或重啟 Nginx 以使更改生效:

sudo systemctl reload nginx

請注意,啟用壓縮可能會增加 CPU 的負擔,因此在生產(chǎn)環(huán)境中應該根據(jù)服務器的性能和網(wǎng)絡帶寬來調整相關配置。適當?shù)呐渲每梢燥@著提高頁面加載速度,特別是對于具有大量文本內容的網(wǎng)頁。

圖片緩存

Nginx 可以通過配置來緩存圖片以提高網(wǎng)站性能和加載速度。這種緩存可以減少對后端服務器的請求,提升用戶體驗

設置緩存路徑:

首先,需要定義用于存儲緩存的路徑??梢栽?Nginx 配置文件中添加類似如下的配置:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
  • /path/to/cache 是用于存儲緩存的路徑。
  • levels=1:2 指定存儲目錄的層次結構。
  • keys_zone=my_cache:10m 定義緩存鍵值對的名稱和大小。
  • max_size=10g 設置緩存的最大大小。
  • inactive=60m 定義緩存文件在一定時間內未被訪問時被認為是不活躍的,Nginx會刪除這些不活躍的緩存文件。
  • use_temp_path=off 禁用臨時路徑。

配置緩存規(guī)則:

接下來,需要為圖片文件配置緩存規(guī)則。在 Nginx 配置文件中的 server 塊中添加類似如下的配置:

location ~* \.(png|jpg|jpeg|gif|ico)$ {
    proxy_cache my_cache;
    proxy_cache_valid 200 60m;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_pass http://backend_server;
}
  • location 指定了匹配圖片文件的位置。
  • proxy_cache my_cache; 將圖片文件緩存到名為 my_cache 的緩存區(qū)域。
  • proxy_cache_valid 200 60m; 定義緩存的有效期,這里是 60 分鐘。
  • proxy_cache_key 設置緩存鍵值,這里使用了一些請求信息作為鍵值。
  • proxy_pass 定義了后端服務器的地址。

重啟 Nginx:

修改配置后,確保重新加載或重啟 Nginx 以使更改生效:

sudo systemctl reload nginx

這樣配置后,Nginx 將會緩存圖片文件,當有用戶請求圖片時,Nginx 會先檢查緩存中是否存在對應的文件,如果存在且在有效期內,就會直接返回緩存的文件,而不去請求后端服務器。這有助于提高網(wǎng)站性能和減少對服務器的請求壓力。記得根據(jù)實際需求和服務器資源進行適當?shù)恼{整。

并發(fā)設置,連接超時

Nginx 的并發(fā)設置涉及到多個配置參數(shù),其中最重要的是 worker_processesworker_connections。這兩個參數(shù)用于配置 Nginx 的工作進程和每個工作進程的最大并發(fā)連接數(shù)。

worker_processes:

worker_processes 指令用于設置 Nginx 啟動時的工作進程數(shù)。一般來說,可以設置為服務器的 CPU 核心數(shù),以充分利用系統(tǒng)資源。例如,如果你的服務器有 4 個 CPU 核心,可以設置為:

worker_processes 4;

注意:設置過多的工作進程可能會導致系統(tǒng)資源不足,而設置過少可能無法充分利用服務器性能。建議根據(jù)服務器的硬件配置和負載情況進行調整。

worker_connections:

worker_connections 指令用于設置每個工作進程的最大并發(fā)連接數(shù)。這個值的設定取決于服務器硬件資源和系統(tǒng)的 ulimit(打開文件描述符限制)。通常,可以設置為 1024 或更高。例如:

events {
    worker_connections 1024;
}

在高并發(fā)情況下,可能需要進一步增加這個值,但要確保不超過系統(tǒng)的 ulimit 限制。

還可以通過修改系統(tǒng)的 ulimit 設置來提高文件描述符的限制。例如,在 Linux 系統(tǒng)中,可以通過以下命令修改:

ulimit -n 4096

這樣會將打開文件描述符的限制提高到 4096。

優(yōu)化其他配置:

在高并發(fā)環(huán)境下,還可以通過優(yōu)化其他一些配置來提高性能,如:

  • 啟用事件驅動模型:在 nginx.conf 文件中,確保 use epoll;use kqueue;(根據(jù)系統(tǒng)類型)已啟用。
  • 啟用 sendfile:在 nginx.conf 文件中,確保 sendfile on; 已啟用。
  • 啟用 TCP nodelay:在 nginx.conf 文件中,確保 tcp_nodelay on; 已啟用。
  • 啟用 TCP nopush:在 nginx.conf 文件中,確保 tcp_nopush on; 已啟用。

總體而言,Nginx 的并發(fā)設置需要根據(jù)具體的服務器硬件、網(wǎng)絡環(huán)境和應用負載來進行調整,因此需要不斷優(yōu)化和測試以達到最佳性能。

http {
...... 
    keepalive_timeout 65 180;  #指定TCP鏈接最多可以保持65秒
    client_header_timeout 80;  #請求頭
    client_body_timeout 80;    #請求體
...... 
} 

keepalive_timeout 65 180;

  • 這個指令用于配置HTTP keep-alive連接的超時時間。
  • 第一個參數(shù) 65 表示在連接空閑時間超過 65 秒后,連接可能被關閉。
  • 第二個參數(shù) 180 表示一個連接上允許的最大空閑時間,即連接在空閑時間達到 180 秒后,可能被強制關閉。

client_header_timeout 80;

  • 這個指令用于配置客戶端發(fā)送HTTP請求頭的超時時間。
  • 參數(shù) 80 表示客戶端在發(fā)送請求頭的過程中,如果在 80 秒內沒有完成發(fā)送,連接可能被關閉。
  • 如果客戶端在指定時間內沒有發(fā)送任何內容,Nginx 返回 HTTP 408(Request Timed Out)。

client_body_timeout 80;

  • 這個指令用于配置客戶端發(fā)送HTTP請求體的超時時間。
  • 參數(shù) 80 表示客戶端在發(fā)送請求體的過程中,如果在 80 秒內沒有完成發(fā)送,連接可能被關閉。

連接保持與會話保持

連接保持(Connection Keep-Alive):

特點:

  • 是一種通過在單個TCP連接上保持多個HTTP請求/響應的機制。

  • 允許在同一連接上發(fā)送多個請求,而無需為每個請求都重新建立TCP連接,從而減少了連接的開銷。

  • 提高了性能,尤其是在多個資源需要加載的情況下,因為可以重用同一連接。

實現(xiàn):

  • 通過在HTTP頭中包含 Connection: keep-alive 字段來實現(xiàn)。

  • Web服務器和客戶端都必須支持并啟用連接保持。

會話保持(Session Persistence):

特點:

  • 是確保用戶的一系列請求都被路由到同一臺服務器的機制。

  • 在負載均衡環(huán)境中,避免用戶在不同服務器之間失去會話狀態(tài)。

  • 常用于需要用戶保持登錄狀態(tài)或其他會話信息的應用程序。

實現(xiàn):

  • 通過在負載均衡器上維護會話信息,確保相同用戶的請求都被路由到同一臺服務器。

  • 常見的實現(xiàn)方式包括基于IP地址的粘滯會話(Sticky Sessions)或使用會話標識符在服務器之間進行共享。

區(qū)別:

焦點不同:

  • 連接保持關注的是在單個TCP連接上重用HTTP請求和響應,以減少連接建立和關閉的開銷。

  • 會話保持關注的是確保用戶的所有請求都被路由到同一臺服務器,以保持應用程序的會話狀態(tài)。

應用場景不同:

  • 連接保持通常用于提高性能,減少重復的TCP連接建立和關閉。

  • 會話保持通常用于確保在負載均衡環(huán)境中保持用戶會話狀態(tài)。

實現(xiàn)方式不同:

  • 連接保持是通過HTTP頭中的 Connection: keep-alive 實現(xiàn)的。

  • 會話保持通常是在負載均衡器上實現(xiàn)的,使用IP地址、會話標識符等來確保請求路由到同一臺服務器。

在某些情況下,這兩個機制可能會一起使用,以提供更好的性能和用戶體驗。

nginx中當cpu頻繁切換時怎么辦

查看cpu的核心數(shù),根據(jù)核心數(shù)來設置工作進程數(shù)

查看cpu核數(shù)
cat /proc/cpuinfo |grep processor|wc -l

cat /proc/cpuinfo |grep -c processor

cat /proc/cpuinfo | grep -c "physical id"

worker_processes最多開啟8個,8個以上性能就不會再提升了,而且穩(wěn)定性會變的更低,因此8個進程夠用了

可以使用進程綁定。進程綁定是指將一個進程或線程綁定到特定的CPU核心上,以確保它只在該核心上運行。這可以提高性能,減少由于上下文切換引起的開銷。

vim /usr/local/nginx/conf/nginx.conf
worker_processes  4;                #修改為核數(shù)相同或者2倍
worker_cpu_affinity 0001 0010 0100 1000;    
#worker_cpu_affinity 是一個用于設置 worker 進程綁定到指定 CPU 的指令。
將 Nginx worker 進程綁定到特定的 CPU 核心,以提高性能和避免 CPU Cache 的偽共享。

通過將 worker 進程綁定到特定的 CPU 核心,可以減少 CPU 切換(context switching)的開銷,
并確保 worker 進程在一個獨立的 CPU 核心上運行,避免了不同進程間的 CPU Cache 競爭,從而提高了整體性能    

time_wait 優(yōu)化

TCP連接生命周期(狀態(tài))

TCP(傳輸控制協(xié)議)是一種面向連接的協(xié)議,它在通信的兩端創(chuàng)建一個可靠的、全雙工的通信。TCP連接的狀態(tài)是在通信的不同階段中表示連接狀態(tài)的一種標志。以下是常見的TCP連接狀態(tài):

  • CLOSED(關閉): 初始狀態(tài),表示TCP連接未打開。
  • LISTEN(監(jiān)聽): 服務器端的某個套接字處于監(jiān)聽狀態(tài),可以接受客戶端的連接請求。
  • SYN_SENT(同步已發(fā)送): 客戶端發(fā)送連接請求(SYN)后等待確認。
  • SYN_RECEIVED(同步已接收): 服務器端收到客戶端的連接請求并發(fā)送確認。
  • ESTABLISHED(已建立): 連接已經(jīng)建立,雙方可以進行數(shù)據(jù)傳輸。
  • FINWAIT1(等待對方的結束連接請求): 一方(通常是客戶端)發(fā)送了結束連接請求,等待對方的確認。
  • FINWAIT2(等待對方的結束連接請求): 一方接收到對方的結束連接請求,等待對方的確認。
  • CLOSE_WAIT(等待關閉): 一方已經(jīng)關閉連接,另一方還在繼續(xù)傳輸數(shù)據(jù)。
  • CLOSING(關閉中): 兩邊同時嘗試關閉連接,出現(xiàn)在一方發(fā)送結束連接請求,另一方也發(fā)送結束連接請求的情況。
  • LAST_ACK(最后確認): 一方發(fā)送結束連接請求,等待對方的確認,同時仍然可以發(fā)送數(shù)據(jù)。
  • TIME_WAIT(時間等待): 連接已經(jīng)關閉,但在一段時間內保持連接狀態(tài),以確保遲到的數(shù)據(jù)包不會引起混亂。

這些狀態(tài)描述了TCP連接在建立、傳輸數(shù)據(jù)和關閉過程中的不同階段。不同的狀態(tài)之間的轉換構成了TCP連接的生命周期。理解這些狀態(tài)對于網(wǎng)絡故障排查和性能優(yōu)化非常重要。

  • TIMEWAIT狀態(tài)是TCP連接關閉(四次揮手)后,等待一段時間以確保對方收到最后的ACK的狀態(tài),是tcp連接狀態(tài)的一種,不是報錯。在高并發(fā)的情況下,大量的TIMEWAIT狀態(tài)可能會導致端口耗盡等問題。
  • 在timewait狀態(tài)下,tcp處于連接等待,等待一定的時間,確保所有數(shù)據(jù)全部傳送完畢。如果需要繼續(xù)傳輸數(shù)據(jù),可以繼續(xù)使用已建立的這個連接,無須再次發(fā)起連接請求。確保所有的連接。都是可靠的關閉。timewait在連接正常關閉之后,經(jīng)歷一段時間之后,會自動關閉,自動消失。占用資源非常小,對服務器的性能影響有限。大型網(wǎng)站會關注這個問題。

查看所有tcp的連接狀態(tài):

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'.

這是一個用于統(tǒng)計TCP連接狀態(tài)的命令,通過結合netstatawk來實現(xiàn)。

  • netstat -n: 這部分命令用于顯示網(wǎng)絡統(tǒng)計信息,其中-n選項表示以數(shù)字形式顯示地址和端口號,而不是嘗試解析為域名和服務名。
  • |: 這是管道符號,它將netstat -n的輸出傳遞給下一個命令。
  • awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}':這是一個用AWK編寫的腳本,用于對netstat -n的輸出進行處理。
  • /^tcp/: 這是一個模式匹配,表示只處理以 "tcp" 開頭的行。
  • {++S[$NF]}: 這是一個動作,對于匹配的行,它會自增一個數(shù)組S的元素,該元素的索引是最后一列($NF)的值。這相當于在數(shù)組S中統(tǒng)計每種TCP連接狀態(tài)的數(shù)量。
  • END {for(a in S) print a, S[a]}: 在處理完所有行后,這個部分會在最終的總結階段執(zhí)行。它使用for循環(huán)遍歷數(shù)組S,并打印出每種TCP連接狀態(tài)及其對應的數(shù)量。

綜合起來,該命令的目的是列出系統(tǒng)中各種TCP連接狀態(tài)的數(shù)量。這在網(wǎng)絡故障排查或性能監(jiān)測時很有用,可以幫助識別系統(tǒng)中連接狀態(tài)的分布情況。

TCP優(yōu)化

查看當前sysctl參數(shù):

使用以下命令查看當前系統(tǒng)的sysctl參數(shù):

sysctl -a

臨時修改參數(shù):

可以使用以下命令臨時修改參數(shù),這些修改在系統(tǒng)重啟后會失效:

sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.tcp_fin_timeout=60

永久修改參數(shù):

若要使更改永久生效,需要編輯系統(tǒng)的sysctl配置文件。配置文件通常位于 /etc/sysctl.conf/etc/sysctl.d/*.conf。使用文本編輯器打開文件:

sudo nano /etc/sysctl.conf

或者(如果存在):

sudo nano /etc/sysctl.d/99-custom.conf

在文件中添加或修改需要的參數(shù),然后保存并關閉文件。

net.ipv4.tcp_syncookies=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=60

最后,運行以下命令使更改生效:

sudo sysctl -p

上述命令會重新加載sysctl配置文件,使新的參數(shù)生效。

請注意,修改內核參數(shù)可能會對系統(tǒng)性能產(chǎn)生影響,因此在修改之前,請確保你了解每個參數(shù)的作用及其可能的影響,并在生產(chǎn)環(huán)境中謹慎操作。

net.ipv4.tcp_syncookies=1

  • 含義:啟用TCP SYN Cookies。

  • 解釋:當系統(tǒng)面臨SYN隊列溢出時,啟動TCP SYN Cookies是一種防范機制。SYN Cookies允許服務器在SYN隊列溢出時繼續(xù)接受連接請求,而不是拒絕請求。

net.ipv4.tcp_tw_reuse=1

  • 含義:允許重用TIME_WAIT狀態(tài)的端口。

  • 解釋:TIMEWAIT狀態(tài)是在連接關閉后,等待足夠的時間確保遠端收到連接關閉的確認。啟用tcp_tw_reuse允許將TIMEWAIT狀態(tài)的端口快速重用,即使該端口還在TIME_WAIT狀態(tài),也可以為新的連接使用。

net.ipv4.tcp_tw_recycle=1

  • 含義:啟用TIME_WAIT狀態(tài)的快速回收。

  • 解釋:TIMEWAIT狀態(tài)的快速回收意味著內核會更積極地嘗試回收TIMEWAIT狀態(tài),以釋放系統(tǒng)資源。這個參數(shù)在某些情況下可能導致問題,因為它依賴于一些假設,因此在某些網(wǎng)絡環(huán)境中可能不安全。

net.ipv4.tcp_fin_timeout=60

  • 含義:設置TCP連接的FIN-WAIT-2狀態(tài)的超時時間為60秒。

  • 解釋:當一方發(fā)起關閉連接(發(fā)送FIN包)后,進入FIN-WAIT-2狀態(tài),等待另一方的確認。這個參數(shù)設置了在這個狀態(tài)停留的最大時間。在這里,設置為60秒,表示如果另一端在這個時間內沒有發(fā)送確認,連接將被強制關閉。

配置防盜鏈

方法一:使用ngx_http_referer_module模塊

開啟 ngx_http_referer_module 模塊

在 Nginx 配置文件中,在需要防盜鏈的位置,添加類似如下的代碼:

location / {
    valid_referers none blocked example.com *.example.com;
    if ($invalid_referer) {
        return 403;
    }
    # 其他配置
}

這個配置會驗證請求的來源,如果不是在 valid_referers 列出的域名中,就會返回 403 狀態(tài)碼,拒絕訪問。

重新加載 Nginx 配置

確保配置文件修改后,使用命令行執(zhí)行 nginx -s reload 來重新加載配置文件。

方法二:使用secure_link模塊

開啟 secure_link 模塊

這個模塊需要在 Nginx 編譯時加入,可以在編譯時通過添加 --with-http_secure_link_module 來啟用。

生成鏈接

在需要進行防盜鏈的地方,可以通過類似如下的方式生成鏈接:

location / {
    secure_link $arg_md5,$arg_expires;
    secure_link_md5 "secret$uri$remote_addr$arg_expires";
    if ($secure_link = "") {
        return 403;
    }
    if ($secure_link = "0") {
        return 410;
    }
    # 其他配置
}

這個配置會驗證鏈接的有效性,如果鏈接無效或過期,會返回相應的狀態(tài)碼。

生成鏈接參數(shù)

生成鏈接時需要包含 md5expires 參數(shù),其中 md5 是鏈接的加密簽名,expires 是鏈接的過期時間。

無論使用哪種方式,確保在配置完成后測試并檢查 Nginx 的日志文件以確保防盜鏈功能按預期工作。

盜圖

配置防盜鏈

vim /usr/local/nginx/conf/nginx.conf

http {
...........
server{
...........
location ~* \.(jpg|gif|swf)$ {            
         root  html;
         expires 1d;
         valid_referers none blocked *.kgc.com kgc.com;   
         if ( $invalid_referer ) {
           rewrite ^/ http://www.kgc.com/error.png;
           }
        }
............
}
...............
}

這段配置是在 Nginx 的 http 配置塊中的一個 server 配置塊中,針對請求以 .jpg、.gif.swf 結尾的資源文件的 location 塊。以下是對這段配置的解釋:

http {
    # 其他 http 配置

    server {
        # 其他 server 配置

        location ~* \.(jpg|gif|swf)$ { #
            root html;  # 設置資源文件的根目錄,資源文件應該存儲在 Nginx 的 html 目錄下
            expires 1d;  # 設置瀏覽器緩存過期時間為 1 天

            valid_referers none blocked *.kgc.com kgc.com;  # 允許的合法引用者(referer),可以是 none(空)、blocked(空或錯誤的referer)、*.kgc.com 或 kgc.com。其他引用者會被視為非法

            if ($invalid_referer) {
                rewrite ^/ http://www.kgc.com/error.png;  # 如果引用者非法,則將請求重定向到 http://www.kgc.com/error.png
            }

            # 其他配置
        }

        # 其他 location 塊和配置
    }

    # 其他 server 配置和其他 http 配置
}

這段配置的作用是限制對以 .jpg、.gif.swf 結尾的資源文件的訪問,只有在合法的引用者(referer)中才允許訪問。如果引用者不在指定的合法引用者列表中,將請求重定向到 http://www.kgc.com/error.png。同時,設置了這些資源文件的緩存過期時間為 1 天。

  • location: 定義了一個匹配請求 URL 路徑的位置塊。
  • ~*: 這是一個標志,表示進行大小寫不敏感的正則表達式匹配。使用 ~* 可以確保無論路徑中的字符是大寫還是小寫,都能成功匹配到相應的規(guī)則。
  • ~: 表示進行大小寫敏感的正則匹配。
  • ~*: 表示進行大小寫不敏感的正則匹配。
  • \.(jpg|gif|swf)$: 這是一個正則表達式,用來匹配以 .jpg、.gif.swf 結尾的 URL 路徑。

因此,這個位置塊會匹配類似于 example.com/image.jpg、example.com/files/file.swf 這樣以 .jpg、.gif.swf 結尾的 URL 路徑。

對于這些匹配的請求,配置中定義了相應的處理規(guī)則,比如限制訪問權限或設置緩存等。

  • \.: 匹配一個點號,這里需要用反斜杠轉義,因為點號在正則表達式中表示任意字符。
  • (jpg|gif|swf): 這是一個括號內的組,匹配文件擴展名,其中 | 表示或的關系,匹配 .jpg.gif.swf。
  • $: 表示匹配字符串的結尾。

網(wǎng)頁準備:

Web源主機(192.168.41.10)配置:

cd /usr/local/nginx/html

/usr/local/nginx/html下創(chuàng)建倆文件(right.jpg error.jpg)

vim index.html

<img src="game.jpg"/>
</body>
</html>

echo "192.168.233.61 www.kgc.com" >> /etc/hosts 
echo "192.168.233.62 www.benet.com" >> /etc/hosts 

盜鏈網(wǎng)站主機(192.168.41.11):

cd /usr/local/nginx/html
vim index.html
...... 
<img src="http://www.kgc.com/right.jpg"/>
</body>
</html>

echo "192.168.41.10 www.kgc.com" >> /etc/hosts 
echo "192.168.14.11 www.benet.com" >> /etc/hosts 

在盜圖網(wǎng)站主機上進行瀏覽器驗證

http://www.benet.com

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Nginx后端節(jié)點健康檢查實踐

    Nginx后端節(jié)點健康檢查實踐

    文章介紹了Nginx健康檢查的重要性及其ginx自帶健康檢查的機制及其不足,并詳細介紹了淘寶開發(fā)的check模塊的配置方法及其優(yōu)勢,最后,針對不同ginx原ginx自帶模塊和Tengine給出了適用場景建議
    2026-04-04
  • nginx基于域名,端口,不同IP的虛擬主機設置的實現(xiàn)

    nginx基于域名,端口,不同IP的虛擬主機設置的實現(xiàn)

    這篇文章主要介紹了nginx基于域名,端口,不同IP的虛擬主機設置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • nginx?如何配置文件上傳大小

    nginx?如何配置文件上傳大小

    這篇文章主要介紹了nginx?如何配置文件上傳大小,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 詳解nginx靜態(tài)資源服務器簡單配置

    詳解nginx靜態(tài)資源服務器簡單配置

    這篇文章主要介紹了詳解nginx靜態(tài)資源服務器簡單配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • linux(centos5.5)/windows下nginx開啟phpinfo模式功能的配置方法分享

    linux(centos5.5)/windows下nginx開啟phpinfo模式功能的配置方法分享

    某站點用到結合phpinfo功能的urlrewrite,在nginx中需要在nginx.conf文件中進行配置才可支持phpinfo
    2013-02-02
  • Nginx多層代理下的“404”與“重定向死循環(huán)”深度排查與避坑指南

    Nginx多層代理下的“404”與“重定向死循環(huán)”深度排查與避坑指南

    最近在部署 MaxKey 認證系統(tǒng)(基于 Angular 開發(fā))時,遇到了一個極其隱蔽的坑:后端 curl 正常,但域名訪問靜態(tài)資源報 404,且頁面陷入重定向死循環(huán), 本文將復盤排查過程并提供標準配置方案,需要的朋友可以參考下
    2026-05-05
  • 提升Nginx性能的一些建議

    提升Nginx性能的一些建議

    這篇文章主要介紹了提升Nginx性能的一些建議,幫助大家更好的使用nginx,感興趣的朋友可以了解下
    2020-09-09
  • 解決Nginx網(wǎng)關超時出現(xiàn)504 GATEWAY TIMEOUT的問題

    解決Nginx網(wǎng)關超時出現(xiàn)504 GATEWAY TIMEOUT的問題

    這篇文章主要給大家介紹了如何解決Nginx網(wǎng)關超時出現(xiàn)504 GATEWAY TIMEOUT的問題,文章通過代碼示例和圖文結合介紹的非常詳細,有遇到相同問題的朋友可以參考閱讀本文
    2023-11-11
  • Nginx 站點垂直擴容的幾種優(yōu)化方案

    Nginx 站點垂直擴容的幾種優(yōu)化方案

    本文主要介紹了Nginx 站點垂直擴容的幾種優(yōu)化方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-01-01
  • nginx代理去掉URL前綴的實現(xiàn)方法

    nginx代理去掉URL前綴的實現(xiàn)方法

    nginx作為一款廣泛使用的反向代理服務器,在實際應用中,經(jīng)常需要去掉代理請求中的前綴,下面這篇文章主要給大家介紹了關于nginx代理去掉URL前綴的實現(xiàn)方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論

馆陶县| 东港市| 正宁县| 鄂托克旗| 容城县| 错那县| 于都县| 仪征市| 时尚| 鹿邑县| 鱼台县| 商城县| 台中市| 金川县| 邵武市| 紫云| 池州市| 安龙县| 昭苏县| 偏关县| 平度市| 当雄县| 苏州市| 鹿邑县| 望谟县| 安多县| 陇西县| 会宁县| 公主岭市| 延津县| 栾川县| 铜川市| 富锦市| 夏津县| 莱阳市| 江山市| 南汇区| 绥棱县| 吉林省| 手游| 凤庆县|