我有一个运行 Apache 2.4 的代理服务器。客户端使用它来连接到fcm.googleapis.com
。
配置非常简单:
Listen 8099
ServerTokens Prod
ServerSignature Off
<VirtualHost *:8099>
ProxyRequests on
ProxyVia off
ProxyTimeout 30
<Proxy *>
Require ip XXX
Require ip YYY
Require local
</Proxy>
LogLevel warn
ErrorLog "logs/forwardproxy_error_log"
CustomLog "logs/forwardproxy_access_log" combined
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^OPTIONS
RewriteRule .* - [F]
</VirtualHost>
fcm.googleapis.com
映射到多个IP地址。
从连接互联网的机器:
fcm.googleapis.com is an alias for googleapis.l.google.com.
googleapis.l.google.com has address 216.58.207.234
googleapis.l.google.com has address 172.217.20.42
googleapis.l.google.com has address 216.58.207.202
googleapis.l.google.com has address 172.217.22.170
googleapis.l.google.com has address 172.217.21.170
googleapis.l.google.com has address 216.58.211.10
googleapis.l.google.com has address 172.217.21.138
googleapis.l.google.com has IPv6 address 2a00:1450:400f:806::200a
由于某些(网络/防火墙相关)原因,上面的某些 IP 地址无法通过我的 Apache 代理访问(ex. 172.217.0.0/16
),而有些可以访问(ex. 216.58.0.0/16
)。但是,由于某些 IP 段仍然可用,因此后面的服务fcm.googleapis.com
应该仍然可用,因此代理客户端出现连接超时的情况是没有道理的。
curl 和 wget 测试:
[user@server ~]$ wget https://fcm.googleapis.com
--2019-08-16 11:50:30-- https://fcm.googleapis.com/
Connecting to proxyip:8099... connected.
Unable to establish SSL connection.
[user@server ~]$ curl -X GET https://fcm.googleapis.com
curl: (35) TCP connection reset by peer
[ansible@server ~]$
更新 1:这些客户端上的代理 IP 和端口设置正确(例如export http_proxy=http://proxyip:8099; export https_proxy=$http_proxy
)。我知道连接已到达代理,因为其他一些网站(例如 Facebook)可以访问。
所以我的问题是:我如何确保连接fcm.googleapis.com
不会失败?应该在哪里修复它?在 Apache 代理上(如果是,如何修复?)还是在代理客户端上?
任何建议都将不胜感激。谢谢!