通过nginx反向代理接收应用宝回调

  年前的时候,正好公司把用来接收应用宝回调的服务从Windows服务器上迁移带Linux服务器上,没想到最后折腾了两个工作日,腾讯的文档真的无力吐槽,不知道以后会不会有人碰到我相同的问题,我先记录一下。

  因为Java项目,当时刚开始准备配置Tomcat的HTTPS双向认证,配置完全是按照腾讯的文档来,但是就是无法接收到回调,然后腾讯那边回复也很慢,回复就是让我们看文档,但是文档也比较老,就像我看别人写的文档,吐槽腾讯说,难的不是接应用宝,是没有一个详细的文档。

因为我是通过Nginx做的反向代理,先给大家看一下我的Nginx的配置文件

server {
    listen       443;
    server_name  localhost;
    ssl on;
    ssl_certificate         /usr/local/nginx/crt/server.crt;
    ssl_certificate_key     /usr/local/nginx/crt/server.key;

    ssl_verify_client off;
    ssl_protocols TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    ssl_client_certificate  /usr/local/nginx/crt/ca.crt;

    ssl_verify_depth            1;

    client_header_buffer_size 16k;
    large_client_header_buffers 4 16k;
    proxy_buffer_size 8k;

    location / {
    proxy_pass http://127.0.0.1:8899;
            proxy_set_header        Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_ignore_client_abort on;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

  基本这样的配置就可以了,

当时不成功的时候抓包(tcpdump port 443 -X)结果如下:

  成功的抓包如下:

可以看到,腾讯会先去认证他发给你的CA证书,通过之后才会去认证你的crt和key,都成功之后就会进行通信。也就是可以收到回调。

PS:后端的java程序,依然是通过Tomcat跑的,配置没有更改,只是将8080改成了8899.

至于代码层面的话,因为我只是一个运维,就不是很了解了,欢迎有遇到问题的朋友讨论留言指正。

原文地址:https://www.cnblogs.com/xll970105/p/10365467.html