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

Swa*_*tar 4 networking android ip-address ios firebase

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

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

理想情况下,此 IP 地址应该是我们服务器的 IP。

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

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

ben*_*sha 6

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

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

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

在这里,是如何在 Linux 机器上使用 HAProxy 设置反向代理。

首先,haproxy从Linux终端安装

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
Run Code Online (Sandbox Code Playgroud)

替换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

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