HTTP基础认证(Basic Authentication)是一种简单的用户名/密码认证机制,Nginx可以很方便地实现这种认证方式。下面是完整的配置步骤:
首先需要创建一个包含用户名和密码的文件,推荐使用htpasswd
工具:
# 安装htpasswd工具(如果尚未安装)
# 在Debian/Ubuntu上:
sudo apt-get install apache2-utils
# 在CentOS/RHEL上:
sudo yum install httpd-tools
# 创建密码文件(首次创建用户)
sudo htpasswd -c /etc/nginx/.htpasswd username
# 添加更多用户(不要使用-c选项,否则会覆盖文件)
sudo htpasswd /etc/nginx/.htpasswd anotheruser
在Nginx配置文件中添加认证配置:
server {
listen 80;
server_name example.com;
location / {
auth_basic "Restricted Content"; # 认证提示信息
auth_basic_user_file /etc/nginx/.htpasswd; # 密码文件路径
# 其他配置...
root /var/www/html;
index index.html;
}
}
# 测试配置是否正确
sudo nginx -t
# 重载Nginx配置
sudo systemctl reload nginx
location /public {
auth_basic off;
}
location / {
satisfy any;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
allow 192.168.1.100; # 允许的IP
deny all; # 拒绝其他所有
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
bash
sudo chown root:www-data /etc/nginx/.htpasswd
sudo chmod 640 /etc/nginx/.htpasswd
/var/log/nginx/error.log
auth_basic
指令没有在其他地方被关闭通过以上步骤,你就可以为Nginx网站添加基本的HTTP认证保护了。