小米华为苹果推送相关Nginx转发推送配置

小米华为苹果推送相关Nginx转发推送配置## 标题
1.1推送类型及涉及的推送url
目前涉及到的推送类型包括:
1)、APNS苹果推送
2)、华为厂商推送
3)、小米厂商推送
4)、魅族厂商推送
5)、极光推送
APNS苹果推送协议有新旧两种,它们都是tcp协议。
基于socket二进制老的apns服务涉及的域名和端口是:
域名: gateway.push.apple.com
gateway.sandbox.push.apple.com
端口:2195
基于http/2协议新的apns服务涉及的域名和端口是:
域名:api.push.apple.com
api.development.push.apple.com
端口:443
华为厂商推送涉及2个url,一个是获取华为token的url,一个是推送的url,它们都是https协议,端口默认是443。
获取token的url:https://login.vmall.com/oauth2/token
推送消息的url:https://api.push.hicloud.com/pushsend.do
小米厂商推送涉及一个url,是https协议,端口默认是443
推送消息url:https://api.xmpush.xiaomi.com/v3/message/regid
魅族厂商推送涉及2个url,一个是通知消息url,一个是透传消息url,它们都是http协议,端口号默认80
通知消息url : http://server-api-mzups.meizu.com/ups/api/server/push/varnished/pushByPushId
通知消息url :http://server-api-mzups.meizu.com/ups/api/server/push/unvarnished/pushByPushId
极光推送涉及一个url,是https协议,端口默认是443
推送url:https://api.jpush.cn/v3/push

1.2Nginx转发规则配置
1.2.1Nginx转发推送请求说明
由于通知服务一般部署在内网,不能直接访问外网,导致上述推送的url都不能访问,现阶段是将推送请求转发到一个专门的web应用,由应用去转发推送请求。
为了不用额外的应用,可以将通知服务的推送请求转发到Nginx服务器,由Nginx服务器再转发到外网的第三方推送服务器。
由于推送服务的地址都是域名,要想将推送请求先转发到Nginx,再由Nginx转发到原外网地址,有2种方式:
1)、将原推送地址域名(可能写在第三方jar包中)改成Nginx的ip和监听端
口(原地址在jar中的,如苹果、小米、魅族、极光,需要改源码,再编译放到原jar包中)。
2)、修改通知服务所在服务器的hosts文件,将推送的域名如gateway.push.apple.com映射为Nginx的服务器ip。
然后在Nginx中监听原推送服务的端口,如2195端口,再路由到真正的推送外网服务域名和端口。是http/https协议的,需要配置location节点来转发,是tcp协议的,需要配置upstream节点来转发。
注:Nginx默认安装是不支持转发tcp和https请求的,需要在编译时加上–with-stream --with-stream_ssl_module --with-http_ssl_module参数。另外由于Nginx中配置监听https的443端口需要https证书,为了简化流程,通知服务转发推送请求到Nginx时,https协议最好都改成http协议(涉及改源码中http协议的有小米推送、极光推送)。
3.2.2Nginx转发具体改动点
基于二进制socket老的apns推送
添加如下hosts配置:

在nginx中增加stream节点,侦听2195端口:

基于http/2协议新的apns推送
添加如下hosts配置:

基于pushy框架开发新的apns推送时,可以自定义指定服务器的ip和端口,ip我们可以用框架中的 api.push.apple.com即可,端口可以随意指定,不要和其他推送服务端口冲突即可,如定义为2196,然后在nginx中像老的apns协议配置一样,监听2196端口,配置一个upstream和server节点:

华为推送
添加如下hosts配置:

将代码中的https协议修改为http协议即可:
然后在Nginx中侦听80端口:

小米推送
添加如下hosts配置:

修改源码中的Constants类如下:

如果不想改源码,在调用推送代码前,也可以加一行代码,将https协议改为http协议:

然后在Nginx中侦听80端口,加入location:

魅族推送
添加如下hosts配置:

魅族推送本身是http协议,只要在Nginx中侦听80端口,加入location即可:

极光推送
添加如下hosts配置:

修改源码中ClientConfig类

然后在Nginx中侦听80端口,加入location:

通知服务服务器总的hosts文件修改示例

10.1.0.0 gateway.push.apple.com

注:如果推送原https协议都改成了http协议,则只要监听80端口即可:
Nginx路由规则配置示例:

在这里插入图片描述

对于在华为云上配置Nginx,你可以按照以下步骤进行操作: 1. 登录到华为云管理控制台:https://console.huaweicloud.com/ 2. 在控制台中,选择合适的区域和项目。 3. 在左侧导航栏中,选择"云服务器ECS"。 4. 在ECS服务页面,点击"创建云服务器"。 5. 在创建云服务器页面,选择适合你需求的实例规格、镜像和网络设置等。 6. 在"安全组规则"中,添加入站规则,允许HTTP(80端口)和HTTPS(443端口)访问。 7. 点击"下一步"并完成其他配置,然后点击"创建云服务器"。 8. 等待云服务器创建完成后,在ECS服务页面找到你的服务器实例,点击它的名称进入详情页面。 9. 在详情页面中,找到"管理登录密钥"部分,点击"创建密钥对"并下载私钥文件(通常为.pem格式)。 10. 打开终端或命令提示符窗口,在本地机器上通过SSH连接到云服务器: ``` ssh -i /path/to/private_key.pem root@<服务器公网IP> ``` (将 `/path/to/private_key.pem` 替换为你下载的私钥文件路径,`<服务器公网IP>` 替换为你的云服务器的公网IP地址) 11. 成功连接到服务器后,运行以下命令安装Nginx: ``` apt update apt install nginx ``` 12. 安装完成后,通过以下命令启动Nginx服务: ``` systemctl start nginx ``` 13. 验证Nginx是否正常运行,通过在浏览器中输入服务器的公网IP地址,应该能看到Nginx的默认欢迎页面。 14. 如果需要自定义Nginx配置,可以编辑 `/etc/nginx/nginx.conf` 文件或在 `/etc/nginx/conf.d/` 目录下创建新的配置文件,并重启Nginx服务以使配置生效。 这些步骤应该能帮助你在华为云上成功配置和运行Nginx。记得根据你的具体需求进行适当的配置调整。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值