在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
命令重新加载配置以使更改生效。