在Nginx中阻止來(lái)自特定的IP地址訪問(wèn)的操作指南
前言
在網(wǎng)絡(luò)安全方面,有時(shí)你可能需要限制特定國(guó)家或地區(qū)的訪問(wèn)權(quán)限。本文將介紹如何使用 Nginx 配置文件來(lái)阻止來(lái)自特定國(guó)家或地區(qū)的 IP 地址訪問(wèn)你的網(wǎng)站。
一、準(zhǔn)備工作
首先,確保你的 Nginx 服務(wù)器已經(jīng)安裝并正確配置ngx_http_geoip2 模塊。另外,你需要獲取一個(gè) IP 地理位置數(shù)據(jù)庫(kù)文件,通常是 GeoLite2 數(shù)據(jù)庫(kù),以便識(shí)別 IP 地址所屬的國(guó)家或地區(qū)。具體步驟如下:
二、查看 Nginx 服務(wù)器都擁有哪些模塊
2.1 先查看本地nginx是否有ngx_http_geoip2模塊
nginx -V
沒(méi)有我們所需的模塊,如果有的同學(xué)有該模塊可以直接跳到下面直接配置nginx服務(wù)
在 Nginx 的配置文件中,添加以下代碼以加載 IP 地理位置數(shù)據(jù)庫(kù)文件:
2.2 安裝nginx并配置ngx_http_geoip2模塊
本次使用的nginx是編譯安裝的方式,如果能找到本地的nginx編譯的文件在哪就不用重新下載nginx,如果找不到請(qǐng)重新編譯安裝
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時(shí),你正在配置nginx的編譯選項(xiàng)。以下是每行命令的解釋:
–prefix=/nginxtest: 指定nginx的安裝目錄為/nginxtest,這意味著nginx將安裝到該目錄下。
–user=nginx: 指定nginx運(yùn)行時(shí)的用戶為nginx,這是為了增加安全性,以防止nginx以超級(jí)用戶權(quán)限運(yùn)行。
–group=nginx: 指定nginx運(yùn)行時(shí)的用戶組為nginx,與上述相似,也是為了增加安全性。
–with-pcre: 啟用PCRE(Perl Compatible Regular Expressions)庫(kù),用于支持正則表達(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在代理模式下獲取真實(shí)的客戶端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í)壓縮數(shù)據(jù)。
–with-http_random_index_module: 啟用HTTP Random Index模塊,允許nginx在目錄中選擇一個(gè)隨機(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)證時(shí)向另一個(gè)服務(wù)器發(fā)送認(rèn)證請(qǐng)求。
–with-http_image_filter_module: 啟用HTTP Image Filter模塊,允許對(duì)圖像進(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 會(huì)被新版本 nginx 完完整整的替換掉。完成后只需要覆蓋替換就可以
make -j2 && make install #安裝,重新安裝的需要make install
結(jié)束查看一下是否安裝成功
ln -s /nginxtest/nginx/sbin/nginx /usr/local/sbin/ #讓系統(tǒng)識(shí)別nginx的操作命令 nginx- V
三、添加攔截規(guī)則配置
先下載 IP 地理位置數(shù)據(jù)庫(kù)文件
3.1 加載 IP 地理位置數(shù)據(jù)庫(kù)
nginx http { # 設(shè)置攔截規(guī)則 map $geoip2_data_country_code $allowed_country { default yes; # 默認(rèn)情況下允許訪問(wèn) CN no; # 指定中國(guó) IP 地址不被攔截 } }
3.2 配置攔截規(guī)則
在配置文件中添加攔截規(guī)則,指定你要阻止的國(guó)家或地區(qū)。以下是一個(gè)示例:
nginx http { # 設(shè)置攔截規(guī)則 map $geoip2_data_country_code $allowed_country { default yes; # 默認(rèn)情況下允許訪問(wèn) CN no; # 指定中國(guó) IP 地址不被攔截 } }
3.3 應(yīng)用攔截規(guī)則
在你的服務(wù)器塊或虛擬主機(jī)配置中,使用 if 指令結(jié)合上述定義的 map 指令來(lái)應(yīng)用攔截規(guī)則:
nginx server { listen 80; server_name example.com; if ($allowed_country = yes) { # 如果 IP 地址所屬國(guó)家被標(biāo)記為不允許訪問(wèn) return 403; # 返回 403 Forbidden 錯(cuò)誤頁(yè)面 } # 其他配置項(xiàng) }
3.4 重新加載 Nginx
完成配置后,重新加載或重啟 Nginx 以使更改生效:
nginx -s reload
這樣配置后,Nginx 將會(huì)攔截來(lái)自指定國(guó)家或地區(qū)的 IP 請(qǐng)求,并返回 403 Forbidden 錯(cuò)誤頁(yè)面。
總結(jié)
通過(guò)簡(jiǎn)單的 Nginx 配置,你可以有效地限制來(lái)自特定國(guó)家或地區(qū)的 IP 地址訪問(wèn)你的網(wǎng)站。這種措施有助于加強(qiáng)你的網(wǎng)絡(luò)安全,保護(hù)你的服務(wù)器免受潛在的惡意攻擊。
以上就是在Nginx中中阻止來(lái)自特定的IP地址訪問(wèn)的操作指南的詳細(xì)內(nèi)容,更多關(guān)于Nginx阻止IP地址訪問(wèn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
配置nginx 重定向到系統(tǒng)維護(hù)頁(yè)面
今天抽時(shí)間給大家普及nginx 重定向到系統(tǒng)維護(hù)頁(yè)面的配置內(nèi)容,nginx重定向問(wèn)題說(shuō)起來(lái)也很簡(jiǎn)單,因?yàn)橹囟ㄏ蚝笾苯犹D(zhuǎn)到靜態(tài)頁(yè)面,不需要后續(xù)操作和記錄,所以直接301永久重定向。今天簡(jiǎn)單給大家介紹配置方法,一起看看吧2021-06-06解決systemctl reload nginx重啟Nginx服務(wù)報(bào)錯(cuò):Job for&n
文章描述了通過(guò)`systemctl status nginx.service`發(fā)現(xiàn)Nginx服務(wù)未啟動(dòng),啟動(dòng)失敗的原因可能是端口號(hào)被占用,使用`netstat -ntlp | grep 80`命令找到了占用80端口的進(jìn)程(PID為7008),通過(guò)`kill 7008`停止了該進(jìn)程,然后重新啟動(dòng)Nginx2025-01-01nginx網(wǎng)頁(yè)緩存時(shí)間的配置過(guò)程
Nginx緩存的設(shè)置可以提高網(wǎng)站性能,對(duì)于網(wǎng)站的圖片,尤其是新聞網(wǎng)站,下面這篇文章主要給大家介紹了關(guān)于nginx網(wǎng)頁(yè)緩存時(shí)間的配置過(guò)程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01Nginx根據(jù)url中的path動(dòng)態(tài)轉(zhuǎn)發(fā)到upstream的實(shí)現(xiàn)
這篇文章主要介紹了Nginx根據(jù)url中的path動(dòng)態(tài)轉(zhuǎn)發(fā)到upstream的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Nginx實(shí)現(xiàn)基于請(qǐng)求頭的訪問(wèn)控制配置的示例
在Nginx中,可以使用"allow"和"deny"指令來(lái)實(shí)現(xiàn)IP訪問(wèn)限制,本文給大家介紹Nginx實(shí)現(xiàn)基于請(qǐng)求頭的訪問(wèn)控制配置,感興趣的朋友一起看看吧2023-11-11nginx配置PC站手機(jī)站分離實(shí)現(xiàn)重定向
這篇文章主要介紹了nginx配置PC站手機(jī)站分離實(shí)現(xiàn)重定向,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Nginx FastCGI緩存的實(shí)現(xiàn)示例
Nginx的FastCGI緩存是一種性能優(yōu)化手段,通過(guò)緩存動(dòng)態(tài)內(nèi)容減少對(duì)后端服務(wù)器的請(qǐng)求,提高系統(tǒng)響應(yīng)速度,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12Prometheus監(jiān)控實(shí)戰(zhàn)篇Nginx、Hbase操作詳解
這篇文章主要介紹了Prometheus監(jiān)控實(shí)戰(zhàn)篇Nginx、Hbase,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02