在Nginx中阻止來自特定的IP地址訪問的操作指南
前言
在網(wǎng)絡(luò)安全方面,有時你可能需要限制特定國家或地區(qū)的訪問權(quán)限。本文將介紹如何使用 Nginx 配置文件來阻止來自特定國家或地區(qū)的 IP 地址訪問你的網(wǎng)站。
一、準(zhǔn)備工作
首先,確保你的 Nginx 服務(wù)器已經(jīng)安裝并正確配置ngx_http_geoip2 模塊。另外,你需要獲取一個 IP 地理位置數(shù)據(jù)庫文件,通常是 GeoLite2 數(shù)據(jù)庫,以便識別 IP 地址所屬的國家或地區(qū)。具體步驟如下:
二、查看 Nginx 服務(wù)器都擁有哪些模塊
2.1 先查看本地nginx是否有ngx_http_geoip2模塊
nginx -V
沒有我們所需的模塊,如果有的同學(xué)有該模塊可以直接跳到下面直接配置nginx服務(wù)
在 Nginx 的配置文件中,添加以下代碼以加載 IP 地理位置數(shù)據(jù)庫文件:
2.2 安裝nginx并配置ngx_http_geoip2模塊
本次使用的nginx是編譯安裝的方式,如果能找到本地的nginx編譯的文件在哪就不用重新下載nginx,如果找不到請重新編譯安裝
2.2.1下載所需版本的nginx到服務(wù)器
2.2.2 先安裝所需依賴
yum install -y libmaxminddb-devel pcre-devel zlib-devel gcc gcc-c++ make git
2.2.3 解壓文件
tar -xvzf nginx-1.24.0.tar.gz
2.2.4 下載ngx_http_geoip2模塊
在服務(wù)上下載模塊
git clone https://github.com/leev/ngx_http_geoip2_module.git
2.2.5 編譯安裝nginx并指定ngx_http_geoip2_module所在目錄
切換到nginx所在目錄
./configure --prefix=/nginxtest \ --user=nginx \ --group=nginx \ --with-pcre \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_stub_status_module \ --with-http_auth_request_module \ --with-http_image_filter_module \ --with-http_slice_module \ --with-mail \ --with-threads \ --with-file-aio \ --with-stream \ --with-mail_ssl_module \ --with-stream_ssl_module \ --add-module=/usr/local/ngx_http_geoip2_module
解釋一下參數(shù)的含義
當(dāng)你運(yùn)行./configure時,你正在配置nginx的編譯選項。以下是每行命令的解釋:
–prefix=/nginxtest: 指定nginx的安裝目錄為/nginxtest,這意味著nginx將安裝到該目錄下。
–user=nginx: 指定nginx運(yùn)行時的用戶為nginx,這是為了增加安全性,以防止nginx以超級用戶權(quán)限運(yùn)行。
–group=nginx: 指定nginx運(yùn)行時的用戶組為nginx,與上述相似,也是為了增加安全性。
–with-pcre: 啟用PCRE(Perl Compatible Regular Expressions)庫,用于支持正則表達(dá)式。
–with-http_ssl_module: 啟用HTTP SSL模塊,支持HTTPS協(xié)議。
–with-http_v2_module: 啟用HTTP/2模塊,支持HTTP/2協(xié)議。
–with-http_realip_module: 啟用HTTP RealIP模塊,允許nginx在代理模式下獲取真實的客戶端IP地址。
–with-http_addition_module: 啟用HTTP Addition模塊,允許在響應(yīng)中添加內(nèi)容。
–with-http_sub_module: 啟用HTTP Substitution模塊,允許在響應(yīng)中替換內(nèi)容。
–with-http_dav_module: 啟用HTTP DAV(WebDAV)模塊,支持WebDAV協(xié)議。
–with-http_flv_module: 啟用HTTP FLV模塊,支持Flash視頻流。
–with-http_mp4_module: 啟用HTTP MP4模塊,支持MP4視頻流。
–with-http_gunzip_module: 啟用HTTP GUNZIP模塊,用于解壓縮響應(yīng)中的gzip壓縮數(shù)據(jù)。
–with-http_gzip_static_module: 啟用HTTP Gzip Static模塊,用于在發(fā)送靜態(tài)文件時壓縮數(shù)據(jù)。
–with-http_random_index_module: 啟用HTTP Random Index模塊,允許nginx在目錄中選擇一個隨機(jī)文件作為索引。
–with-http_secure_link_module: 啟用HTTP Secure Link模塊,用于生成帶有安全簽名的URL。
–with-http_stub_status_module: 啟用HTTP Stub Status模塊,允許監(jiān)控nginx的狀態(tài)信息。
–with-http_auth_request_module: 啟用HTTP Auth Request模塊,允許在需要認(rèn)證時向另一個服務(wù)器發(fā)送認(rèn)證請求。
–with-http_image_filter_module: 啟用HTTP Image Filter模塊,允許對圖像進(jìn)行處理。
–with-http_slice_module: 啟用HTTP Slice模塊,允許nginx按指定大小切片響應(yīng)。
–with-mail: 啟用郵件代理服務(wù)器功能。
–with-threads: 啟用線程支持。
–with-file-aio: 啟用文件異步IO支持。
–with-stream: 啟用TCP/UDP流代理功能。
–with-mail_ssl_module: 啟用郵件SSL模塊,支持SSL加密的郵件傳輸。
–with-stream_ssl_module: 啟用流SSL模塊,支持SSL加密的TCP/UDP流。
--add-module=/usr/local/ngx_http_geoip2_module: 添加額外的模塊ngx_http_geoip2_module,該模塊用于GeoIP2地理定位功能。
2.2.6 編譯安裝
添加 nginx 模塊,只需要編譯,然后 make。不需要 make instll,不然線上的 nginx 會被新版本 nginx 完完整整的替換掉。完成后只需要覆蓋替換就可以
make -j2 && make install #安裝,重新安裝的需要make install
結(jié)束查看一下是否安裝成功
ln -s /nginxtest/nginx/sbin/nginx /usr/local/sbin/ #讓系統(tǒng)識別nginx的操作命令 nginx- V
三、添加攔截規(guī)則配置
先下載 IP 地理位置數(shù)據(jù)庫文件
3.1 加載 IP 地理位置數(shù)據(jù)庫
nginx http { # 設(shè)置攔截規(guī)則 map $geoip2_data_country_code $allowed_country { default yes; # 默認(rèn)情況下允許訪問 CN no; # 指定中國 IP 地址不被攔截 } }
3.2 配置攔截規(guī)則
在配置文件中添加攔截規(guī)則,指定你要阻止的國家或地區(qū)。以下是一個示例:
nginx http { # 設(shè)置攔截規(guī)則 map $geoip2_data_country_code $allowed_country { default yes; # 默認(rèn)情況下允許訪問 CN no; # 指定中國 IP 地址不被攔截 } }
3.3 應(yīng)用攔截規(guī)則
在你的服務(wù)器塊或虛擬主機(jī)配置中,使用 if 指令結(jié)合上述定義的 map 指令來應(yīng)用攔截規(guī)則:
nginx server { listen 80; server_name example.com; if ($allowed_country = yes) { # 如果 IP 地址所屬國家被標(biāo)記為不允許訪問 return 403; # 返回 403 Forbidden 錯誤頁面 } # 其他配置項 }
3.4 重新加載 Nginx
完成配置后,重新加載或重啟 Nginx 以使更改生效:
nginx -s reload
這樣配置后,Nginx 將會攔截來自指定國家或地區(qū)的 IP 請求,并返回 403 Forbidden 錯誤頁面。
總結(jié)
通過簡單的 Nginx 配置,你可以有效地限制來自特定國家或地區(qū)的 IP 地址訪問你的網(wǎng)站。這種措施有助于加強(qiáng)你的網(wǎng)絡(luò)安全,保護(hù)你的服務(wù)器免受潛在的惡意攻擊。
以上就是在Nginx中中阻止來自特定的IP地址訪問的操作指南的詳細(xì)內(nèi)容,更多關(guān)于Nginx阻止IP地址訪問的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決systemctl reload nginx重啟Nginx服務(wù)報錯:Job for&n
文章描述了通過`systemctl status nginx.service`發(fā)現(xiàn)Nginx服務(wù)未啟動,啟動失敗的原因可能是端口號被占用,使用`netstat -ntlp | grep 80`命令找到了占用80端口的進(jìn)程(PID為7008),通過`kill 7008`停止了該進(jìn)程,然后重新啟動Nginx2025-01-01Nginx根據(jù)url中的path動態(tài)轉(zhuǎn)發(fā)到upstream的實現(xiàn)
這篇文章主要介紹了Nginx根據(jù)url中的path動態(tài)轉(zhuǎn)發(fā)到upstream的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01nginx配置PC站手機(jī)站分離實現(xiàn)重定向
這篇文章主要介紹了nginx配置PC站手機(jī)站分離實現(xiàn)重定向,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Prometheus監(jiān)控實戰(zhàn)篇Nginx、Hbase操作詳解
這篇文章主要介紹了Prometheus監(jiān)控實戰(zhàn)篇Nginx、Hbase,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02