用nginx实现微信公众号相关的反向代理

原创 宇宙     发表于  2021-10-28 16:27       14
原文链接:

将原网站(微信业务)直接通过前端代理服务器(A)反向代理到后端机器(B)上会报一个 xxxx not in whitelist hint 的错误。
因为原来白名单IP为 A服务器IP,由于业务上需要修改公众号太多,于是想不修改公众号的情况下是否也可以实现。


“要么改源码,修改api url,变成a服务器的域名
要么改dns,设置为a机器的ip
然后a服务器的nginx再反代出去”

我采用的反代方式:
A(test.com)->B(127.0.0.1)
B(修改host)->A(反向代理指向微信的api)

    server{
        resolver  8.8.8.8;
        server_name api.weixin.qq.com ibsbjstar.ccb.com.cn open.weixin.qq.com api.mch.weixin.qq.com;
        access_log /var/log/nginx/access_proxy-80.log main;
        listen 80;
        location / {
            root html;
            index index.html index.htm;
            proxy_pass https://$host$request_uri;
            proxy_set_header HOST $http_host;
            proxy_buffers 256 4k;
            proxy_max_temp_file_size 0k;
            proxy_connect_timeout 30;
            proxy_send_timeout 60;
            proxy_read_timeout 60;
            proxy_next_upstream error timeout invalid_header http_502;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }

在nginx.conf的http 中加上:resolver 8.8.8.8; 然后reload即可。

还有backend 需要修改/etc/hosts的域名有:

x.x.x.x api.weixin.qq.com
x.x.x.x file.api.weixin.qq.com
x.x.x.x mp.weixin.qq.com
x.x.x.x open.weixin.qq.com
x.x.x.x open.work.weixin.qq.com
x.x.x.x demo.open.weixin.qq.com
x.x.x.x qyapi.weixin.qq.com
x.x.x.x pay.weixin.qq.com
x.x.x.x api.mch.weixin.qq.com
x.x.x.x fraud.mch.weixin.qq.com

相关文章

公众号
QQ讨论群