通过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.
至于代码层面的话,因为我只是一个运维,就不是很了解了,欢迎有遇到问题的朋友讨论留言指正。


浙公网安备 33010602011771号