nginx正向代理
server {
listen 8080;
resolver 1.1.1.1;
location / {
proxy_bind $server_addr; #绑定请求的出口ip
# proxy_bind $remote_addr transparent; #这行很关键,启用透明代理
# proxy_set_header X-Real-IP $remote_addr; #这行是可选,把客户端IP头加到http自定义字段而已
proxy_pass $scheme://$http_host$request_uri;
proxy_set_header Host $http_host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
deny 127.0.0.1;
}
连接那个IP 出口就是那个 IP
nginx打印IP方法
location /myip {
default_type text/plain;
return 200 "$remote_addr\n";
}
验证脚本
#!/bin/bash
TARGET_URL="验证地址/ip" # 建议加 https
while read -r proxy; do
# 使用 curl 测试代理,获取返回 IP
result=$(curl -s -x "http://$proxy:8080" --connect-timeout 3 --max-time 5 "$TARGET_URL")
if [ "$result" = "$proxy" ]; then
echo "$result ✅"
else
echo "$proxy ❌ ($result)"
fi
done
方法bash shell.sh <ip_list.txt
随机ip方案,需要oepnresty+lua来支持
access_by_lua_block {
local ips = {
"192.168.1.10",
"192.168.1.11",
"192.168.1.12",
...
}
local ip = ips[math.random(#ips)]
ngx.var.local_bind_ip = ip
}
proxy_bind $local_bind_ip;