Nginx Proxy_Pass 白名单配置 - 使用 Access 模块实现请求控制
使用 Nginx 的 proxy_pass 指令代理请求时,如何判断请求是否来自白名单,可以使用 access 模块来实现。
在 Nginx 配置文件中,可以使用 if 语句来判断请求的来源 IP 是否在白名单中,如果在,则使用 proxy_pass 代理到指定的后端服务器,否则返回 403 或其他错误码。
以下是一个简单的示例配置:
http {
# 设置白名单 IP 列表
geo $whitelist {
default 0;
'10.10.10.10/24' 1;
'192.168.1.0/24' 1;
}
server {
listen 80;
server_name example.com;
location / {
# 判断请求 IP 是否在白名单中
if ($whitelist = 0) {
return 403;
}
# 使用 proxy_pass 代理到后端服务器
proxy_pass http://backend-server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
在上面的配置中,使用 geo 模块定义了一个名为 $whitelist 的变量,用于存储白名单 IP 列表。在 server 块中的 location 块中,使用 if 语句判断请求的来源 IP 是否在白名单中,如果不在,则返回 403 错误码,否则使用 proxy_pass 代理到后端服务器。
需要注意的是,if 语句在 Nginx 中的使用存在一些限制和注意事项,建议使用较为简单的判断条件,避免出现意外的错误。
原文地址: https://www.cveoy.top/t/topic/mWYs 著作权归作者所有。请勿转载和采集!