在 Nginx 中,可以通过设置基本认证(Basic Authentication)来保护代理访问。以下是具体步骤:
- 安装 htpasswd 工具
在大多数 Linux 发行版中,htpasswd 工具是 apache2-utils 或 httpd-tools 包的一部分。可以通过以下命令安装:
# Debian/Ubuntu
sudo apt-get install apache2-utils
# CentOS/RHEL
sudo yum install httpd-tools
- 创建 .htpasswd 文件
使用 htpasswd 工具创建一个包含用户名和密码的文件。例如,创建一个名为 auth 的文件,并添加一个用户 user1:
htpasswd -c /etc/nginx/.htpasswd user1
系统会提示输入并确认密码。如果需要添加更多用户,可以使用以下命令(不加 -c 选项):
htpasswd /etc/nginx/.htpasswd user2
- 配置 Nginx
在 Nginx 配置文件中,使用 auth_basic 和 auth_basic_user_file 指令来启用基本认证。以下是一个示例配置:
server {
listen 80;
server_name example.com;
location / {
# 启用基本认证
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
# 代理到后端服务器
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- 测试配置并重启 Nginx
在修改 Nginx 配置文件后,先测试配置文件是否正确,如果没错则重启:
sudo nginx -t
sudo nginx -s reload
- 访问验证
现在,当你访问配置的路径时,浏览器会弹出一个对话框,要求输入用户名和密码。输入在 .htpasswd 文件中配置的用户名和密码即可访问。