nginx 代理地址访问加鉴权
时间: 2025-01-04 09:36:07 浏览: 6
### 配置 Nginx 作为代理服务器并添加身份验证
为了实现这一目标,需编辑 Nginx 的配置文件(通常位于 `/etc/nginx/nginx.conf` 或者在 `conf.d` 文件夹下的独立配置文件)。对于特定站点的身份验证,在相应的配置文件中加入基本认证指令。
#### 设置 HTTP 基本认证
要在 Nginx 中启用针对某个域名或子域名的基本身份验证,应当修改该位置的配置文件:
```nginx
server {
listen 80;
server_name example.com;
location / {
auth_basic "Restricted Area"; # 认证提示框显示的文字
auth_basic_user_file /etc/nginx/.htpasswd; # 用户名密码文件路径
proxy_pass http://backend_server_address; # 后端服务器地址
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_headr X-Forwarded-Proto $scheme;
}
}
```
上述代码片段展示了如何设置一个受保护的位置,并将其请求转发给另一个 Web 应用程序。这里设置了HTTP Basic Auth来保护资源[^2]。
创建 `.htpasswd` 文件用于存储用户名和加密后的密码。可以借助 Apache 提供的工具 htpasswd 来生成此文件的内容:
```bash
sudo apt install apache2-utils # 如果尚未安装的话
sudo htpasswd -c /etc/nginx/.htpasswd username
```
#### 对 Windows AD 进行 NTLM 身份验证
当涉及到更复杂的企业环境时,比如集成到现有的 Windows Active Directory 结构内,则可能需要用到更为复杂的方案如 NTLM 或 Kerberos 协议来进行单点登录(SSO)[^4]。这需要额外的模块支持以及更加详细的配置过程。
重启 Nginx 使新配置生效:
```bash
sudo systemctl restart nginx
# or on some systems:
sudo service nginx restart
```
确保每次更改配置之后都重新加载或重启 Nginx 以便让新的设定能够被应用[^3]。
阅读全文