gpt4 book ai didi

android - 如何通过特定 IP 路由 API 请求?

转载 作者:行者123 更新时间:2023-11-28 19:26:24 24 4
gpt4 key购买 nike

我正在制作 iOS 和 Android 应用程序。我们需要应用程序中的充值功能。我们计划使用一家公司提供的 Recharge API。

出于安全原因,API 仅允许通过特定 IP 白名单 IP 地址进行请求。

这个IP地址最好是我们服务器的IP。

但我们在应用程序中使用 Firebase 作为数据库、存储和身份验证。

那么我们如何才能让我们的用户通过应用程序发出的 API 请求能够通过而不导致错误,因为用户的 IP 地址不会被列入白名单?

最佳答案

您将需要代理来自您用户的 API 请求,这样,对于您的 API 提供商来说,所有请求似乎都来自同一个静态 IP 地址,该地址将被列入白名单。

代理是一种被动软件组件,它基本上在一端接收请求,并将它们转发到另一端的 API 服务器。换句话说,它代表您的用户进行 API 调用。

您可以使用 NGINX、HAProxy 或任何可用的反向代理,或者使用您选择的语言编写自定义反向代理 - 因为这不是一项艰巨的任务。

此处介绍如何在 Linux 机器上使用 HAProxy 设置反向代理。

首先,从 linux 终端安装 haproxy

apt update && apt install haproxy

然后导航到文件夹/etc/haproxy

cd/etc/haproxy

将默认配置文件重命名为haproxy.cfg.backup

mv haproxy.cfg{,.backup}

现在,创建一个新的配置文件,haproxy.cfg

nano haproxy.cfg

有了下面的内容,然后保存修改。

global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon

defaults
log global
mode http
timeout connect 5000
timeout client 50000
timeout server 50000

frontend api_proxy
bind *:8080
mode http
default_backend remote_api_server

backend remote_api_server
#replace 10.10.10.10 with the actual Ip address
server server1 10.10.10.10:443 ssl

10.10.10.10 替换为 API 提供商 IP 地址,并将 443 替换为实际端口。

如果 API 未使用 HTTPS,请移除 ssl 选项

8080 是您的用户将连接到的端口。随心所欲地改变。

现在,使用以下命令启动 haproxy:

haproxy -D -f haproxy.cfg

您可以验证 haproxy 正在监听端口 8080

telnet localhost 8080

将您的应用配置为通过代理 URL 调用充值 API,这将是:

http://your_server_ip_address:8080/your/api/url

不过您需要在生产环境中配置 HTTPS。

查看下面的链接,了解如何使用 haproxy 配置 SSL

https://www.ibm.com/support/knowledgecenter/en/SSTPQH_1.0.0/com.ibm.cloudant.local.install.doc/topics/configure_haproxy.html

如果这有帮助,请告诉我。

关于android - 如何通过特定 IP 路由 API 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55120276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com