uni-app激励广告回调时,使用阿里云服务区需固定出口IP

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app激励广告回调时,使用阿里云服务区需固定出口IP

产品分类

uniapp/小程序/微信

PC开发环境

  • 操作系统:Windows
  • 操作系统版本号:Windows 10 专业版
  • 开发工具:HBuilderX
  • 开发工具版本号:4.36
  • 第三方开发者工具版本号:RC 1.06.2412031
  • 基础库版本号:3.6.6
  • 项目创建方式:HBuilderX

示例代码

'[uniAdCallback/ac1cc3181734075031530154299/317ms/DEBUG] WeixinServer::response {
data: {
errcode: 40164,
errmsg: "invalid ip 47.92.75.210 ipv6 ::ffff:47.92.75.210, not in whitelist rid: 675be299-0a86a0be-5e1862d2"
},
status: 200,
headers: {
connection: "keep-alive",
date: "Fri, 13 Dec 2024 07:30:33 GMT",
"content-type": "application/json; encoding=utf-8",
retkey: "11",
logicret: "40164",
"content-length": "127"
},
}'

操作步骤

{
"args": {
"content": "Ut1r0SwpM0y/McexcKPqcLdKZ2ROZJEEoL0o84QtDTtDYGNB9Muqg6BSjZA7x4wAj5SDyWOX5xqLTe2PmJfU4nczV21dE/gjNOQdmoP9WG/cWjycu0YO8Vy0unHybMsXAc6PPbueP7O6LAStliQZL5Y39Ydfu26ViEIHkCs3J0zzlmfN6gfMCwfM0IdAxAcSlLod+ikaEIHVknyxWEBcYmrsoZSgh8SBR/1F7fJohAZgrXLR/oZdUMzCSTKCOvsP/YIndiU3lQrffx7Qpkysm0UtcgOx4w11NSIuxRraZxJS0QCIcZL/QO7MS0ABuwPenCL9H2tO/QD2RyovzIwlEJyyGo1yGDODkMrAzo7hzIm0xkyssr7bN1fQwgxErA9mCnDgbOs7+oIovPiWjeIKcoJrajPSJMX4NI+X6exYz14=",
"_uniCloudOptions": {
"secretType": "both",
"encryptKeyId": 13,
"mpWeixinOpenid": "omJzs66MJYg2tikSgWmZi5YZcqAc"
},
"clientInfo": {
"PLATFORM": "mp-weixin",
"OS": "ios",
"APPID": "UNIBD509E7",
"DEVICEID": "17339034238575659912",
"scene": 1001,
"deviceId": "17339034238575659912",
"appId": "UNIBD509E7",
"appName": "扫立富",
"appVersion": "1.0.0",
"appVersionCode": "100",
"appLanguage": "zh-Hans",
"uniCompilerVersion": "4.36",
"uniRuntimeVersion": "4.36",
"uniPlatform": "mp-weixin",
"deviceBrand": "devtools",
"deviceModel": "iPhone 12/13 (Pro)",
"deviceType": "phone",
"osName": "ios",
"osVersion": "10.0.1",
"hostVersion": "8.0.5",
"hostName": "WeChat",
"locale": "zh-Hans",
"LOCALE": "zh-Hans"
}
},
"requestId": "ac1cc3181734075031530154299"
}

预期结果

获取固定ip后激励视频能正常回调

实际结果

无法通过回调


5 回复

云函数中目前没有这个逻辑,可以切换为腾讯云,提供固定ip


但是 更换腾讯云 的 小程序激励广告是无法添加的,而且 空间选择这里无法修改,请问怎么处理呢

在处理 uni-app 激励广告回调时,如果需要确保请求通过阿里云服务器的固定出口 IP 发出,你可以通过配置阿里云 ECS(Elastic Compute Service)实例和相关的网络设置来实现这一点。以下是一个基本的思路和代码示例,展示如何在 uni-app 中配置和使用阿里云 ECS 的固定 IP。

步骤 1: 配置阿里云 ECS 实例

  1. 购买并配置 ECS 实例:确保 ECS 实例已正确配置并运行。
  2. 分配固定 IP:为 ECS 实例分配一个弹性 IP(EIP),这个 IP 将作为你的固定出口 IP。
  3. 安全组设置:确保 ECS 实例的安全组规则允许你的 uni-app 应用进行必要的网络通信。

步骤 2: 在 ECS 实例上设置代理服务器

为了在 ECS 实例上设置一个代理服务器,你可以使用 Nginx 或其他代理软件。以下是一个使用 Nginx 的简单示例:

  1. 安装 Nginx

    sudo apt-get update
    sudo apt-get install nginx
    
  2. 配置 Nginx 作为反向代理

    编辑 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/default):

    server {
        listen 80;
        server_name your_ecs_ip;
    
        location / {
            proxy_pass http://your_backend_server_or_service;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

    替换 your_ecs_ipyour_backend_server_or_service 为你的 ECS 实例 IP 和后端服务的地址。

  3. 重启 Nginx

    sudo systemctl restart nginx
    

步骤 3: 在 uni-app 中配置代理

在你的 uni-app 项目中,你可以通过配置 HTTP 请求的代理来确保所有请求都通过 ECS 实例的固定 IP 发出。这通常在你的项目配置文件或网络请求库中设置。

例如,如果你使用的是 Axios,可以在请求拦截器中设置代理:

axios.interceptors.request.use(config => {
    if (!/localhost/.test(window.location.hostname)) {
        config.baseURL = 'http://your_ecs_ip'; // ECS 实例的 IP 地址
    }
    return config;
}, error => {
    return Promise.reject(error);
});

注意,这里的 baseURL 应该设置为你的 Nginx 代理服务器的地址。

通过上述步骤,你可以确保 uni-app 的激励广告回调请求通过阿里云服务器的固定出口 IP 发出。请根据你的具体需求和环境调整配置。

回到顶部