php网站制作工具,做网站关键词必须要中文网址,软件排名优化,海南省建设执业资格管理中心网站需求
内网部署safeline#xff0c;通过frp让外网访问内部web网站服务#xff0c;让safeline记录真实外网攻击IP safeline 跟 frp都部署在同一台服务器#xff1a;192.168.2.103
frp client 配置
frpc只需要在https上添加transport.proxyProtocolVersion v2即…需求
内网部署safeline通过frp让外网访问内部web网站服务让safeline记录真实外网攻击IP safeline 跟 frp都部署在同一台服务器192.168.2.103
frp client 配置
frpc只需要在https上添加transport.proxyProtocolVersion v2即可例如
rootsafeline:~# cat /etc/frp/frpc.toml
[[proxies]]
name web1
type https
localIP 192.168.2.103
localPort 443
subdomain web1
transport.proxyProtocolVersion v2[[proxies]]
name web2
type https
localIP 192.168.2.103
localPort 443
subdomain web2
transport.proxyProtocolVersion v2保存并且重启frp服务
safeline配置
safeline不支持web界面添加proxy_protocol支持无法正常搭配frp显示真实IP需要直接修改配置文件
1. 修改proxy_params 配置文件
/data/safeline/resources/nginx/proxy_params配置文件不会随着safeline重启而重置我们在这里给配置全局开启proxy_protocol。
这里注意需要修改set_real_ip_from 服务器的 IP 地址;改为自己frps服务器的ip地址
rootsafeline:/data/safeline/resources/nginx# cat /data/safeline/resources/nginx/proxy_params
# 内网地址范围
set_real_ip_from 192.168.0.0/16; # 覆盖 192.168.0.0 到 192.168.255.255
set_real_ip_from 172.16.0.0/12; # 覆盖 172.16.0.0 到 172.31.255.255
set_real_ip_from 10.0.0.0/8; # 覆盖 10.0.0.0 到 10.255.255.255# 公网 frps 服务器的 IP 地址
set_real_ip_from 服务器的 IP 地址;real_ip_header proxy_protocol;# 其他代理设置
proxy_set_header X-Real-IP $realip_remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_headers_hash_max_size 1024;
proxy_headers_hash_bucket_size 128;proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_hide_header X-Powered-By;# 添加条件判断以兼容非 proxy_protocol 连接
set $proxy_x_forwarded_for $proxy_add_x_forwarded_for;
set $proxy_x_real_ip $remote_addr;if ($proxy_protocol_addr) {set $proxy_x_forwarded_for $proxy_protocol_addr, $proxy_x_forwarded_for;set $proxy_x_real_ip $proxy_protocol_addr;
}proxy_set_header X-Forwarded-For $proxy_x_forwarded_for;
proxy_set_header X-Real-IP $proxy_x_real_ip;2. 创建config-proxy_protocol.sh脚本
我们要给/data/safeline/resources/nginx/sites-enabled目录下所有的IF_backend文件在监听部分上添加proxy_protocol支持其中增加一个白名单域名白名单中的域名不做任何更改该脚本可实现批量添加或者移除所有proxy_protocol
我们把脚本放在/data/safeline/resources/nginx/sites-enabled目录下即/data/safeline/resources/nginx/sites-enabled/config-proxy_protocol.sh
1创建脚本
vim /data/safeline/resources/nginx/sites-enabled/config-proxy_protocol.sh2 脚本内容如下请注意要修改成自己的主域名和子域名
#!/bin/bash# 主域名 改为自己的主域名例如 ttxs.com
main_domainttxs.com# 白名单子域名列表如:op1.ttxs.com、op2.ttxs.com
whitelist_subdomains(op1op2
)# 帮助函数
show_help() {echo 用法$0 [true|false]echo true - 添加 proxy_protocol 支持echo false - 移除 proxy_protocol 支持echo ? - 显示此帮助信息
}# 检查参数
case $1 intrue|false) action$1 ;;|?) show_help; exit 0 ;;*) echo 错误参数必须是 true 或 false。; exit 1 ;;
esac# 修改配置函数
modify_config() {local file$1local add_proxy$2local changedfalsewhile IFS read -r line; doif [[ $line ~ listen.*:443 ]]; thenif $add_proxy [[ ! $line ~ proxy_protocol ]]; thenline${line/ssl http2;/ssl http2 proxy_protocol;}changedtrueelif ! $add_proxy [[ $line ~ proxy_protocol ]]; thenline${line/ proxy_protocol/}changedtruefifiecho $linedone $file ${file}.tmpif $changed; thenmv ${file}.tmp $fileif $add_proxy; thenecho 已添加 proxy_protocol 支持: $fileelseecho 已移除 proxy_protocol 支持: $filefielserm ${file}.tmpif $add_proxy; thenecho 已支持 proxy_protocol无需修改: $fileelseecho 无 proxy_protocol 支持无需修改: $filefifi
}# 主处理逻辑
for file in IF_backend_*; do[ -f $file ] || continueserver_name$(grep server_name $file | awk {print $2} | tr -d ;\n | sed s/on$//)subdomain${server_name%%.*}if [[ ${whitelist_subdomains[*]} ~ $subdomain ]]; thenecho 白名单域名跳过修改: $file ($server_name)continueficase $action intrue) modify_config $file true ;;false) modify_config $file false ;;*) modify_config $file true ;; # 默认添加支持esac
done# 测试并重新加载 Nginx 配置
echo 测试 Nginx 配置...
if docker exec safeline-tengine nginx -t; thenecho 重新加载 Nginx 配置...docker exec safeline-tengine nginx -s reloadecho 操作完成
elseecho Nginx 配置测试失败未重新加载配置exit 1
fi3给脚本添加执行权限
chmod x /data/safeline/resources/nginx/sites-enabled/config-proxy_protocol.sh3. 执行脚本进行批量修改
执行脚本可传入参数true或false 用法
rootsafeline:/data/safeline/resources/nginx/sites-enabled# bash config-proxy_protocol.sh
用法config-proxy_protocol.sh [true|false]true - 添加 proxy_protocol 支持false - 移除 proxy_protocol 支持? - 显示此帮助信息1执行批量添加proxy_protocol示例
bash config-proxy_protocol.sh true2批量取消proxy_protocol添加示例
bash config-proxy_protocol.sh false因为我们添加有白名单而所有的防护站点都是监听同一个443端口所以当有站点加白没有添加protocol支持的时候执行会打印如下告警
nginx: [warn] protocol options redefined for 0.0.0.0:443 in /etc/nginx/sites-enabled/IF_backend_3:13含义是”protocol options redefined” 表示在 Nginx 配置中对于同一个监听地址和端口在这个例子中是 0.0.0.0:443协议选项被重复定义了。我们忽略这个报警即可。
当我们不做白名单所有站点都添加proxy_protocol那就不会打印这个告警了
如果重启服务器或者服务IF_backend文件被重置那么直接执行一下该脚本即可
4. 测试
上面都配置好之后访问配置好的域名发现小地图已经正常显示归属地配置成功 —百川论坛转发作者つ微凉徒眸意浅挚半