nginx配置公众号企微IP白名单 通过API自动更新IP白名单

    一般企业级WEB接口发布都需要信息安全政策,在Nginx上配置访问来源IP白名单是常用的做法。现在大厂服务都实现高可用&CDN应用,来源IP不定期变化,那么要如何来实现白名单限制?

     目前微信公众号、企业微信、钉钉都已提供API接口,让用户可以及时获取IP清单。以下介绍API获取及定期更新方法

本文介绍微信公众号对接为例(方法同样适用于企微、钉钉,请参照官方文档变更参数)

流程介绍:
1、获取调用授权参数
2、创建shell脚本,动作:调用官方IP清单=》转为nginx配置格式 *.conf;
3、nginx中server项配置include *.conf;
4、配置shell脚本定时运行;

1.2、关于如何获取微信服务器IP地址,请见微信官方说明  (赶时间可以不看)

2.1、
 创建名为get-uat-wxip.sh脚本,以下为脚本内容(微信公众号与企业微信获取选其一即可)

#!微信公众号IP获得方法
AppID="lakshdgosajd "                      #开发者ID
Secret="kjasdj ladsjglasdldkgsdl"      #开发者密码
GURL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$AppID&secret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
PURL="https://api.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=$Token"
RESULT=$(curl -s $PURL)
echo $RESULT > get_api_domain_ip.conf

#!企业微信IP获得方法
CorpID="wwwwsdgsdg"           #企业ID
Secret="sdjladsjglasdldkgsd"    #工作台应用的secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=$Token"
RESULT=$(curl -s $PURL)
echo $RESULT > get_api_domain_ip.conf


#将get_api_domain_ip.conf文件转换为nginx配置格式
find -name 'get_api_domain_ip.conf' | xargs perl -pi -e 's|{"ip_list"\:\["|allow |g'
find -name 'get_api_domain_ip.conf' | xargs perl -pi -e 's|","|;\nallow |g'
find -name 'get_api_domain_ip.conf' | xargs perl -pi -e 's|"]|;\ndeny all;\n#|g'

2.2、在服务器上执行

vi get-api-ip.sh         #将前面代码复制后保存
chmod +x get-api-ip.sh   #赋予执行权限
sh get-api-ip.sh         #执行脚本

2.3、执行后会生成get_api_domain_ip.conf配置文件 (重复执行会覆盖之前内容)

2.4、以下截图为ip清单的转换前后格式变化

 转换后的格式 (这内容可直接插入nginx.conf)

 3.1、在nginx配置文件中插入该文件,示例为文件绝对路径,请自行修改

 PS:要插入配置之前可以将内网IP或固定IP开放访问,如上图

 配置完就直接运行#nginx -s reload 即生效了。

4.、以下介绍让get-uat-wxip.sh脚本定时自动运行,腾讯官方建议是每天更新一次

4.1、安装crontab服务,如已安装略过

yum install -y crontabs     #安装
systemctl start crond    #启动
systemctl enable crond   #任务开机自启

4.2、配置crontab规则

vi /etc/crontab  #修改配置文件

0 1 * * * /etc/nginx/conf.d/ip_white/get-uat-wxip.sh #文件尾行插入此行

#保存退出

crontab /etc/crontab  #使配置生效
crontab -l            #查看任务列表

此配置为每天凌晨一点执行,自行修改实际执行时间。

修改参数:前5个数字分别代表

分=》数字:0-59;PS:从0至59分

时=》数字:0-23;PS:从0至23时

日=》数字:1-31;PS:从1到31日

月=》数字:1-12;PS:从1至12月

星期=》数字:0-6;PS:从星期日至星期六

5、结束!

微信小程序开发公众号需要进行以下几个步骤: 1. 首先,你需要申请微信公众号和小程序。微信公众号和小程序可以通过微信官方网站进行申请。 2. 接下来,你需要将微信小程序和公众号进行关联。这是为了实现消息推送功能。关联的过程需要在微信公众号开发平台进行操作。 3. 在小程序的后端管理界面登录并查看小程序的appid和secret。这些信息将在与微信进行请求交互时使用。 4. 为了实现与微信的请求交互,你需要使用https,并建议使用域名来实现。你还需要准备好对应的https证书,并在小程序的后端开发中配置好外网端口。 5. 如果你想实现微信推送功能,你需要成功关联微信公众号,并将你的IP添加到白名单中,以便获取token。 6. 如果你想实现图片上传功能,建议使用图片服务器,并将图片路径返回给前端。在使用Nginx时,需要注意设置传输大小。 7. 小程序的打包体积不能超过2M,其他资源(包括图片等)应放在后端的静态服务器中。 8. 在进行小程序体验版自测时,你需要在微信管理后台添加相应的开发人员,并在登录小程序时使用开发调试功能。同时,体验版的网络和后端服务的网需要在同一局域网才能进行访问。 9. 如果你想升级和上线小程序,需要提前提交审核申请。初次审核可能需要较长时间,一般需要提前进行准备。在上线前,你需要在微信公众号开发平台添加获取token的白名单,并确保后端服务开启了外网访问权限。 以上是关于微信小程序开发公众号的一些流程和步骤。你可以参考微信官方文档和API文档获取更详细的信息。 #### 引用[.reference_title] - *1* *2* *3* [手记系列之一 ----- 关于微信公众号和小程序的开发流程](https://blog.csdn.net/qazwsxpcm/article/details/127600663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零士

运维调试耗力,喜欢给个赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值