Nginx Proxy Manager (NPM) 是一个基于Web的图形界面工具,用于管理Nginx反向代理服务器。下面我将详细介绍如何使用它来实现请求拦截与转发。
反向代理:接收客户端请求,然后转发到后端服务器,并将响应返回给客户端,隐藏了后端服务器的真实信息。
使用Docker安装(推荐):
docker run -d \
--name=nginx-proxy-manager \
-p 80:80 \
-p 81:81 \
-p 443:443 \
-v npm_data:/data \
-v npm_letsencrypt:/etc/letsencrypt \
jc21/nginx-proxy-manager:latest
访问管理界面:http://服务器IP:81
admin@example.com
changeme
example.com
)http
或 https
在"Advanced"选项卡中可以添加自定义Nginx配置:
# 自定义location规则
location /api/ {
proxy_pass http://backend-server:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 拦截特定路径
location /admin/ {
deny all;
return 403;
}
在"Custom Locations"选项卡中添加拦截规则:
拦截特定路径:
location /private/ {
deny all;
return 403;
}
密码保护路径:
在"Advanced"选项卡中添加:
# 允许特定IP
allow 192.168.1.100;
deny all;
# 或拒绝特定IP
deny 10.0.0.1;
allow all;
if ($http_user_agent ~* (bot|crawler|spider)) {
return 403;
}
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20;
}
}
location /oldpath/ {
rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
}
在"Advanced"中添加:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;
location / {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
通过以上配置,你可以灵活地实现各种请求拦截和转发场景,满足不同业务需求。