在Nginx中配置訪問控制可以通過多種方式實現,包括使用allow和deny指令、基于IP的訪問控制、使用HTTP基本認證等。以下是一些常見的訪問控制配置示例:
你可以允許或拒絕特定的IP地址或IP范圍訪問你的服務器。
server {
listen 80;
server_name example.com;
location / {
allow 192.168.1.1;
deny all;
root /var/www/html;
}
}
server {
listen 80;
server_name example.com;
location / {
deny 192.168.1.1;
allow all;
root /var/www/html;
}
}
server {
listen 80;
server_name example.com;
location / {
allow 192.168.1.1;
allow 192.168.1.2;
deny all;
root /var/www/html;
}
}
你可以要求用戶提供用戶名和密碼才能訪問特定的資源。
server {
listen 80;
server_name example.com;
location /protected/ {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
root /var/www/html;
}
}
在這個例子中,auth_basic指令設置了認證提示信息,auth_basic_user_file指令指定了包含用戶名和密碼的文件路徑。你需要使用htpasswd工具來創建這個文件。
你可以使用Nginx Plus(商業版本)或第三方模塊來實現基于用戶組的訪問控制。
server {
listen 80;
server_name example.com;
location /admin/ {
auth_request /auth;
root /var/www/html/admin;
}
location = /auth {
internal;
proxy_pass http://auth-server/validate;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
}
在這個例子中,auth_request指令將認證請求轉發到一個外部認證服務。
Nginx Plus支持使用ACL進行更復雜的訪問控制。
server {
listen 80;
server_name example.com;
acl allowed_ips src 192.168.1.1 192.168.1.2;
acl auth_required src 192.168.1.3;
location / {
allow allowed_ips;
deny all;
root /var/www/html;
}
location /admin/ {
allow auth_required;
deny all;
root /var/www/html/admin;
}
}
在這個例子中,acl指令定義了兩個訪問控制列表,一個用于允許特定IP訪問,另一個用于要求特定IP進行認證。
以上是一些常見的Nginx訪問控制配置示例。根據你的具體需求,你可以選擇適合的方法來實現訪問控制。記得在修改Nginx配置文件后,使用nginx -s reload命令重新加載配置以使更改生效。