Apache-Httpd
繞過特定 IP 的 Apache 身份驗證
我們使用 Apache 作為反向代理,因此我們的一些內部開發/測試伺服器可以在開放 Internet 上訪問以用於 UAT/CAT 目的。
我們通過 LDAP 伺服器進行了基本的身份驗證設置,但我們有一些站點需要將某些特定 IP 列入白名單,以便他們無需通過身份驗證即可訪問伺服器。
我不確定在目前部分之上添加另一個像這樣的部分是否會起作用:
<proxy *> Require all granted Require ip x.x.x.x y.y.y.y </proxy>
這是
.conf
文件目前的樣子:<VirtualHost *:80> ServerName some.server.url ## Vhost docroot DocumentRoot "/var/www" ## Directories, there should at least be a declaration for /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ## Logging ErrorLog "/var/log/httpd/some.server.url_error.log" ServerSignature Off CustomLog "/var/log/httpd/some.server.url_access.log" combined ## Proxy rules ProxyRequests Off ProxyPreserveHost Off ProxyPass /robots.txt ! ProxyPassReverse /robots.txt ! ProxyPass / https://some.server.url/ acquire=3000 keepalive=On retry=0 timeout=1800 ProxyPassReverse / https://some.server.url/ ## Custom fragment <proxy *> AuthBasicProvider ldap-client-websites ldap-sidlee-dig AuthType Basic AuthName "GRM CRHA UAT" Require valid-user </proxy> </VirtualHost>
不,不要添加第二個
<proxy *>
塊,因為它會與第一個塊衝突。相反,將現有
<proxy *>
塊更改為:## Custom fragment <proxy *> AuthBasicProvider ldap-client-websites ldap-sidlee-dig AuthType Basic AuthName "GRM CRHA UAT" <RequireAny> Require ip x.x.x.x y.y.y.y Require valid-user </RequireAny> </proxy> </VirtualHost>
這樣,只滿足組
Require
內的一個指令<RequireAny>
就足以允許訪問。因此,需要具有匹配的 IP 地址或成功的身份驗證才能允許訪問。