欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx訪問(wèn)控制的原理及實(shí)現(xiàn)

 更新時(shí)間:2024年07月02日 11:21:41   作者:TA548464  
訪問(wèn)控制是一種安全機(jī)制,旨在限制系統(tǒng)或網(wǎng)絡(luò)資源的訪問(wèn)權(quán)限,本文主要介紹了Nginx訪問(wèn)控制的原理及實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下

什么是訪問(wèn)控制?

訪問(wèn)控制是一種安全機(jī)制,旨在限制系統(tǒng)或網(wǎng)絡(luò)資源的訪問(wèn)權(quán)限,確保只有經(jīng)過(guò)授權(quán)的用戶或系統(tǒng)可以訪問(wèn)這些資源。對(duì)訪問(wèn)控制的理解可能包括以下幾個(gè)關(guān)鍵方面:

身份驗(yàn)證(Authentication): 訪問(wèn)控制的第一步是確認(rèn)用戶或系統(tǒng)的身份。這通常涉及到使用用戶名、密碼、密鑰或其他身份驗(yàn)證手段來(lái)驗(yàn)證用戶的身份。合法的身份驗(yàn)證是訪問(wèn)控制的基礎(chǔ)。

授權(quán)(Authorization): 一旦用戶身份得到驗(yàn)證,接下來(lái)的步驟是確定用戶被授予的權(quán)限范圍。這包括確定用戶可以訪問(wèn)的資源、可以執(zhí)行的操作以及其他相關(guān)權(quán)限。授權(quán)確保用戶只能訪問(wèn)其被明確允許的資源和功能。

訪問(wèn)級(jí)別(Access Levels): 訪問(wèn)控制通常涉及定義不同的訪問(wèn)級(jí)別,如讀取、寫(xiě)入、執(zhí)行等。每個(gè)用戶或系統(tǒng)被授予的訪問(wèn)級(jí)別取決于其角色和權(quán)限配置。精細(xì)的訪問(wèn)級(jí)別有助于確保安全性和數(shù)據(jù)完整性。

訪問(wèn)策略(Access Policies): 訪問(wèn)策略是一組規(guī)則和規(guī)范,用于定義系統(tǒng)中的訪問(wèn)控制規(guī)則。這可能包括規(guī)定誰(shuí)可以訪問(wèn)什么資源、在什么條件下可以訪問(wèn)等。訪問(wèn)策略是實(shí)施訪問(wèn)控制的具體指南。

審計(jì)和監(jiān)控(Auditing and Monitoring): 訪問(wèn)控制不僅僅是在用戶嘗試訪問(wèn)資源時(shí)的阻止和允許,還包括對(duì)訪問(wèn)活動(dòng)的審計(jì)和監(jiān)控。記錄和分析訪問(wèn)日志有助于檢測(cè)潛在的安全威脅或違規(guī)行為。

單點(diǎn)登錄(Single Sign-On,SSO): SSO是一種訪問(wèn)控制方法,允許用戶通過(guò)一次身份驗(yàn)證獲得對(duì)多個(gè)系統(tǒng)的訪問(wèn)權(quán)限,而不需要在每個(gè)系統(tǒng)中單獨(dú)登錄。這提高了用戶體驗(yàn)并簡(jiǎn)化了訪問(wèn)管理。

1. Nginx 訪問(wèn)控制模塊

Nginx 是一款高性能的 Web 服務(wù)器,支持多種操作系統(tǒng)。通過(guò) HTTP 模塊、TCP 模塊、UDP 模塊等多種模塊的支持,Nginx 提供了很多靈活的訪問(wèn)控制配置選項(xiàng)。
Nginx提供了2種最常用的訪問(wèn)控制方法
(1)基于IP的訪問(wèn)控制:http_access_module可以使用 Nginx 的 allow 和 deny 指令,來(lái)控制對(duì)來(lái)自特定 IP 地址的客戶端的訪問(wèn)權(quán)限。

例:
location /admin {
    allow 192.168.1.100;
    deny all;
}

(2)基于用戶的信任登錄:http_auth_basic_module可以使用 Nginx 的 auth_basic 和 auth_basic_user_file 指令,來(lái)啟用基于 HTTP 認(rèn)證的訪問(wèn)控制。

例:
location /admin {
    auth_basic "Restricted Area";
    auth_basic_user_file /path/to/password/file;
}

2. 基于 IP 的訪問(wèn)控制

2.1. 配置語(yǔ)法

#allow允許IP
Syntax:allow address | all;
default:默認(rèn)無(wú)
Context:http,server,location
?
#deny拒絕IP
Syntax:deny address | all;
default:默認(rèn)無(wú)
Context:http,server,location
=======================================================================
allow    允許    ip或者網(wǎng)段
deny    拒絕     ip或者網(wǎng)段

2.2. allow 允許配置實(shí)驗(yàn)

編輯/etc/nginx/conf.d/access_mod.conf內(nèi)容如下:

[root@localhost ~]# hostname -I
192.168.221.138 
?
[root@localhost ~]# vim /etc/nginx/conf.d/allow.conf
server {
        listen 80;
        server_name localhost;  #注意域名不要有沖突
        location  / {
                root /usr/share/nginx/html;
                index index.html index.hml;
                deny 192.168.221.136;    #不允許136訪問(wèn)
                allow all;
                }
}
?
[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# systemctl restart nginx
?
//136訪問(wèn)測(cè)試:
[root@localhost ~]# hostname -I
192.168.221.136 
[root@localhost ~]# curl  -I http://192.168.221.138
HTTP/1.1 403 Forbidden  //403訪問(wèn)被拒絕
Server: nginx/1.24.0
Date: Sun, 30 Jul 2023 23:24:08 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive
?
//130訪問(wèn)測(cè)試:
[root@localhost ~]# hostname -I
192.168.221.130 
[root@localhost ~]# curl  -I http://192.168.221.138
HTTP/1.1 200 OK         //200訪問(wèn)ok
Server: nginx/1.24.0
Date: Sun, 30 Jul 2023 23:24:28 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 11 Apr 2023 17:22:34 GMT
Connection: keep-alive
ETag: "6435975a-267"
Accept-Ranges: bytes

?需要注意:
1.按順序匹配,已經(jīng)被匹配的ip或者網(wǎng)段,后面不再被匹配。
2.如果先允許所有ip訪問(wèn),在定義拒絕訪問(wèn)。那么拒絕訪問(wèn)不生效。
3.默認(rèn)為allow all

  • 被拒絕的IP為192.168.221.136,配置拒絕的虛擬機(jī)IP為192.168.221.138,這里禁止136訪問(wèn),允許其他所有IP訪問(wèn)。
  • 主機(jī)136訪問(wèn)http://192.168.221.138,顯示403 Forbidden。
  • 當(dāng)然也可以反向配置,同時(shí)也可以使用IP網(wǎng)段的配置方式,如allow 192.168.17.0/24; deny all;,表示滿足此網(wǎng)段的IP都可以訪問(wèn)。

2.3. deny 拒絕配置實(shí)驗(yàn)

如果你想拒絕某個(gè)指定URL地址的所有請(qǐng)求,只需要在location塊中配置deny all指令:

[root@localhost conf.d]# hostname -I
192.168.221.138 

[root@localhost conf.d]# vim /etc/nginx/conf.d/deny.conf
server {
        listen 80;
        server_name localhost;
        location  / {
                root /usr/share/nginx/html;
                index index.html index.hml;
                allow 192.168.221.136;    #只允許136可以訪問(wèn)
                deny all;    #拒絕所有
                }
}

[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# systemctl restart nginx

//136訪問(wèn)測(cè)試
[root@localhost ~]# hostname -I
192.168.221.136 
[root@localhost ~]# curl  -I http://192.168.221.138
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Sun, 30 Jul 2023 23:38:18 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 11 Apr 2023 17:22:34 GMT
Connection: keep-alive
ETag: "6435975a-267"
Accept-Ranges: bytes

//130訪問(wèn)測(cè)試
[root@localhost ~]# hostname -I
192.168.221.130 
[root@localhost ~]# curl  -I http://192.168.221.138
HTTP/1.1 403 Forbidden
Server: nginx/1.24.0
Date: Mon, 31 Jul 2023 00:51:10 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive

//windows宿主機(jī)curl測(cè)試
C:\Users\TZH>curl -I http://192.168.221.138
HTTP/1.1 403 Forbidden
Server: nginx/1.24.0
Date: Mon, 31 Jul 2023 00:51:49 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive

3. 基于用戶的信任登錄

基于用戶的信任登錄模塊:http_auth_basic_module有時(shí)候我們會(huì)有這么一種需求,就是你的網(wǎng)站的某些頁(yè)面不希望對(duì)所有人公開(kāi)訪問(wèn),我們希望的是某些特定的客戶端可以訪問(wèn)。
那么我們可以在訪問(wèn)時(shí)要求進(jìn)行身份認(rèn)證,就如給你自己的家門加一把鎖,以拒絕那些不速之客。

3.1. 配置語(yǔ)法

Syntax:auth_basic string | off;
default:auth_basic off;
Context:http,server,location
auth_basic string; 設(shè)置基本驗(yàn)證的描述信息

Syntax:auth_basic_user_file file;
default:默認(rèn)無(wú)
Context:http,server,location
file:設(shè)置存儲(chǔ)用戶名密碼信息的文件。
密碼文件格式 username:password

例:

server {
  location /private {
    auth_basic "Private area";
    auth_basic_user_file /etc/nginx/passwords;
  }
}

這就要求用戶訪問(wèn) /private 路徑時(shí)輸入密碼才能訪問(wèn)。
用戶密碼文件也可以放在其他位置,只要 auth_basic_user_file 指令指向正確的文件即可。

3.2. 配置示例

[root@localhost conf.d]# hostname -I
192.168.221.138 

[root@localhost ~]# vim /etc/nginx/conf.d/auth_mod.conf 
server {
    listen 80;
    server_name localhost;
    location ~ /admin {
        root /var/www/html;
        index index.html index.hml;
        auth_basic "Auth access test!";
        auth_basic_user_file /etc/nginx/auth_conf;
        }
}

[root@localhost conf.d]# mkdir /var/www/html/admin    //創(chuàng)建目錄
[root@localhost conf.d]# echo "auth..."  > /var/www/html/index.html/admin    //創(chuàng)建文件

[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# systemctl restart nginx

//做好本地windows的host文件解析
192.168.221.138 www.Jltauth.com

auth_basic不為 off 時(shí),開(kāi)啟登錄驗(yàn)證功能,auth_basic_user_file 加載賬號(hào)密碼文件。
瀏覽器訪問(wèn)測(cè)試

3.3. 創(chuàng)建登錄的口令文件

[root@localhost ~]# yum install -y httpd-tools 
//htpasswd 是開(kāi)源 http 服務(wù)器 apache httpd 的一個(gè)命令工具,用于生成 http 基本認(rèn)證的密碼文件

[root@localhost conf.d]# htpasswd -cm /etc/nginx/auth_conf jack
New password: 
Re-type new password: 
Adding password for user jack
//jack:用戶
//-c: 創(chuàng)建一個(gè)新的密碼文件,如果密碼文件已存在,則會(huì)直接覆蓋。
//-m: 在已有的密碼文件中添加用戶,不會(huì)覆蓋已有用戶。
//該命令中,會(huì)創(chuàng)建密碼文件 auth_conf,并寫(xiě)入用戶 jack 的密碼記錄

[root@localhost conf.d]# htpasswd -m /etc/nginx/auth_conf tom
New password: 
Re-type new password: 
Adding password for user tom
//該命令中,會(huì)在已有的密碼文件 auth_conf 中追加用戶 tom 的密碼記錄

[root@localhost nginx]# cat /etc/nginx/auth_conf
jack:$apr1$YmpHMEkH$OtjswnIL5F.E7HUGKBi6U/
tom:$apr1$S8Q.Csg.$JQ6hQSExltiB9x/vlQURb0

瀏覽器訪問(wèn)測(cè)試

到此這篇關(guān)于Nginx 訪問(wèn)控制的原理及實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx 訪問(wèn)控制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nginx配置負(fù)載均衡的服務(wù)宕機(jī)了怎么處理

    nginx配置負(fù)載均衡的服務(wù)宕機(jī)了怎么處理

    這篇文章主要為大家介紹了nginx配置負(fù)載均衡的服務(wù)宕機(jī)的處理方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn)

    Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn)

    本文主要介紹了Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 如何用nginx解決前端部署跨域問(wèn)題

    如何用nginx解決前端部署跨域問(wèn)題

    這篇文章主要介紹了如何用nginx解決前端部署跨域問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Nginx 代理轉(zhuǎn)發(fā)阿里云OSS上傳的實(shí)現(xiàn)代碼

    Nginx 代理轉(zhuǎn)發(fā)阿里云OSS上傳的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Nginx 代理轉(zhuǎn)發(fā)阿里云OSS上傳的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • nginx泛域名解析配置教程

    nginx泛域名解析配置教程

    這篇文章主要介紹了nginx泛域名解析配置教程,需要的朋友可以參考下
    2017-01-01
  • nginx中keepalive配置詳解

    nginx中keepalive配置詳解

    keepalive是長(zhǎng)連接的意思,本文主要介紹了nginx中keepalive配置詳解,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Centos下編譯安裝Nginx教程詳解

    Centos下編譯安裝Nginx教程詳解

    這篇文章主要介紹了Centos下編譯安裝Nginx的教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • Nginx中使用gzip_http_version解決CDN只支持http 1.0問(wèn)題

    Nginx中使用gzip_http_version解決CDN只支持http 1.0問(wèn)題

    這篇文章主要介紹了Nginx中使用gzip_http_version解決CDN只支持http 1.0問(wèn)題,問(wèn)題原因是在Header信息中看到Transfer-Encoding: chunked,使用本文方法就可以解決這個(gè)問(wèn)題,需要的朋友可以參考下
    2014-09-09
  • 詳解如何修改nginx的默認(rèn)端口

    詳解如何修改nginx的默認(rèn)端口

    這篇文章主要介紹了詳解如何修改nginx的默認(rèn)端口,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的方法

    nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的方法

    這篇文章主要介紹了nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論