Nginx 被廣泛應用於反向代理、負載平衡等場景,這些應用場景往往需要存取控制。 Nginx 提供了一種基於存取控制清單(ACL)的設定方式,可實現對不同使用者、不同IP 位址、不同請求路徑等進行存取控制。本文著重介紹基於使用者認證的 ACL 設定方法,以實現身分認證和權限控制。
- 使用者認證模組
Nginx 提供了兩個使用者認證模組:ngx_http_auth_basic_module 和 ngx_http_auth_request_module。前者是基於 HTTP Basic Auth,使用者需要在請求頭中提供使用者名稱和密碼,而後者則是透過向後端伺服器進行請求認證。兩種認證模組各有優缺點,選擇適合自己的認證模組依實際需求進行選擇。
- 認證流程
基於ngx_http_auth_request_module 模組的使用者認證流程如下:
1)用戶端傳送請求至Nginx;
2)Nginx攔截請求,並向後端伺服器發送認證請求;
3)後端伺服器認證用戶,傳回認證結果;
4)Nginx 根據認證結果回應客戶端。
- 設定實例
假設我們的應用程式提供了以下幾個介面:
1)/admin:只有管理員可以存取;
2)/user:任何使用者都可以存取;
3)/login:用於使用者認證的介面。
現在,我們希望透過 Nginx 進行反向代理,實現對介面的存取控制。同時,我們希望只有經過身份認證的使用者才能存取介面。我們可以透過以下配置實現對登入狀態的檢查。
location /admin { auth_request /auth; error_page 401 = /login; proxy_pass http://upstream; } location /user { auth_request /auth; proxy_pass http://upstream; } location = /auth { internal; proxy_pass http://upstream/auth; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; }
這個設定中,我們定義了三個 location。其中,/admin 和 /user 分別代表需要進行存取控制的接口,/auth 是用於進行使用者認證的接口。當客戶端請求 /admin 時,Nginx 透過 auth_request 指令將認證請求轉送給 /auth,如果傳回 401 錯誤碼,則跳到 /login。 /user 的處理類似,只不過沒有加入錯誤碼處理。 /auth 的處理則是真正實現使用者認證的地方,其代理至後端伺服器進行認證,並傳回認證結果。
在這個例子裡,/auth 是實現用戶認證的後端接口,我們可以透過編寫相應的後端程式碼來實現對各種認證方式(如 LDAP、資料庫等)的支援。
整體來說,Nginx 的 ACL 功能是基於強大的正規表示式引擎和一些約定的變數等實現,對於使用者認證方案的開發人員來說,是非常有效的一種權限控制實作方式。當然,在實現時,必須針對特定需求進行有針對性的配置,並結合應用場景的特性進行最佳化。
以上是Nginx反向代理中基於使用者認證的ACL配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

NGINX可用於服務文件和管理流量。 1)配置NGINX服務靜態文件:定義監聽端口和文件目錄。 2)實現負載均衡和流量管理:使用upstream模塊和緩存策略優化性能。

NGINX適合處理高並發和靜態內容,Apache適用於動態內容和復雜URL重寫。 1.NGINX採用事件驅動模型,適合高並發。 2.Apache使用進程或線程模型,適用於動態內容。 3.NGINX配置簡單,Apache配置複雜但更靈活。

NGINX和Apache各有優勢,選擇取決於具體需求。 1.NGINX適合高並發,部署簡單,配置示例包括虛擬主機和反向代理。 2.Apache適用於復雜配置,部署同樣簡單,配置示例包括虛擬主機和URL重寫。

NGINXUnit的目的是簡化Web應用程序的部署和管理。其優勢包括:1)支持多種編程語言,如Python、PHP、Go、Java和Node.js;2)提供動態配置和自動重載功能;3)通過統一的API管理應用生命週期;4)採用異步I/O模型,支持高並發和負載均衡。

NGINX始於2002年,由IgorSysoev開發,旨在解決C10k問題。 1.NGINX是高性能Web服務器,基於事件驅動的異步架構,適用於高並發。 2.提供反向代理、負載均衡和緩存等高級功能,提升系統性能和可靠性。 3.優化技巧包括調整worker進程數、啟用Gzip壓縮、使用HTTP/2和安全配置。

NGINX和Apache在架構上的主要區別在於:NGINX採用事件驅動、異步非阻塞模型,而Apache使用進程或線程模型。 1)NGINX通過事件循環和I/O多路復用機制高效處理高並發連接,適合靜態內容和反向代理。 2)Apache採用多進程或多線程模型,穩定性高但資源消耗大,適合需要豐富模塊擴展的場景。

NGINX適合處理高並發和靜態內容,Apache則適用於復雜配置和動態內容。 1.NGINX高效處理並發連接,適合高流量場景,但處理動態內容需額外配置。 2.Apache提供豐富模塊和靈活配置,適合複雜需求,但高並發性能較差。

NGINX和Apache各有優劣,選擇應基於具體需求。 1.NGINX適合高並發場景,因其異步非阻塞架構。 2.Apache適用於需要復雜配置的低並發場景,因其模塊化設計。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器