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

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

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

什么是訪問控制?

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

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

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

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

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

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

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

1. Nginx 訪問控制模塊

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

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

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

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

2. 基于 IP 的訪問控制

2.1. 配置語法

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

2.2. allow 允許配置實驗

編輯/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訪問
                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訪問測試:
[root@localhost ~]# hostname -I
192.168.221.136 
[root@localhost ~]# curl  -I http://192.168.221.138
HTTP/1.1 403 Forbidden  //403訪問被拒絕
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訪問測試:
[root@localhost ~]# hostname -I
192.168.221.130 
[root@localhost ~]# curl  -I http://192.168.221.138
HTTP/1.1 200 OK         //200訪問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訪問,在定義拒絕訪問。那么拒絕訪問不生效。
3.默認為allow all

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

2.3. deny 拒絕配置實驗

如果你想拒絕某個指定URL地址的所有請求,只需要在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可以訪問
                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訪問測試
[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訪問測試
[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宿主機curl測試
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有時候我們會有這么一種需求,就是你的網(wǎng)站的某些頁面不希望對所有人公開訪問,我們希望的是某些特定的客戶端可以訪問。
那么我們可以在訪問時要求進行身份認證,就如給你自己的家門加一把鎖,以拒絕那些不速之客。

3.1. 配置語法

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

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

例:

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

這就要求用戶訪問 /private 路徑時輸入密碼才能訪問。
用戶密碼文件也可以放在其他位置,只要 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 時,開啟登錄驗證功能,auth_basic_user_file 加載賬號密碼文件。
瀏覽器訪問測試

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

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

[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)建一個新的密碼文件,如果密碼文件已存在,則會直接覆蓋。
//-m: 在已有的密碼文件中添加用戶,不會覆蓋已有用戶。
//該命令中,會創(chuàng)建密碼文件 auth_conf,并寫入用戶 jack 的密碼記錄

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

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

瀏覽器訪問測試

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

相關(guān)文章

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

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

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

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

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

    如何用nginx解決前端部署跨域問題

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

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

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

    nginx泛域名解析配置教程

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

    nginx中keepalive配置詳解

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

    Centos下編譯安裝Nginx教程詳解

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

    Nginx中使用gzip_http_version解決CDN只支持http 1.0問題

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

    詳解如何修改nginx的默認端口

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

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

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

最新評論