背景原因与解决方式
由于JAVA 的 API 不支持 国密证书,所以直接在JAVA代码中调用HTTPS请求,指挥中心无法收到请求。所以可以通过反向代理监听本地端口,通过脚本携带国密证书,把request 打到指挥中心。
shell脚本配置
nginx配置脚本
(```)
server {
listen 你的端口号;
server_name localhost; //
#charset koi8-r;
access_log /opt/pylon/nginx/logs/localhost.20731.access.log main; // 这里可以设置自己的日志
error_log /opt/pylon/nginx/logs/localhost.20731.error.log; // 这里可以设置错误的日志
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For KaTeX parse error: Double subscript at position 12: proxy_add_x_̲forwarded_for;
…request_uri; //真实的服务端的地址 ,$request_uri这个可以是你具体的接口名
}
}
(```)
PS:如果要做到实时更改服务端的地址,可以加一个刷新的脚本,在代码里加入执行刷新脚本的命令,当触发命令的时候进行刷新脚本,更改上面脚本里的 真实服务端的地址。
刷新脚本
#!/usr/bin/env bash
set -e
Usage: refresh_dock_proxy [ip] [port]
(```)
dock_ip=$1
dock_port=$2
tassl_nginx_dock_conf_tmpl="/opt/pylon/nginx/conf/conf.d/dock.proxy.conf.offline" //这里写你的nginx脚本的地址
tassl_nginx_dock_conf="/opt/pylon/nginx/conf/conf.d/dock.proxy.conf" //这里写你的nginx脚本的地址
if [ -z “dockip"]∣∣[−z"{dock_ip}" ] || [ -z "dockip"]∣∣[−z"{dock_port}” ]; then
echo “Usage: refresh_dock_proxy [ip] [port]” >&2
exit 1
fi
if [ ! -f “tasslnginxdockconftmpl"];thenecho"ERROR:dockerproxyconfnotfound[{tassl_nginx_dock_conf_tmpl}" ]; then
echo "ERROR: docker proxy conf not found [tasslnginxdockconftmpl"];thenecho"ERROR:dockerproxyconfnotfound[{tassl_nginx_dock_conf_tmpl}]” >&2
exit 1
fi
generate tassl-nginx dock proxy conf
sed -E “/proxy_pass/ s#[0-9]+.[0-9]+.[0-9]+.[0-9]+:[0-9]+#dockip:{dock_ip}:dockip:{dock_port}#g” ${tassl_nginx_dock_conf_tmpl} > ${tassl_nginx_dock_conf}
check tassl-nginx config
export LD_LIBRARY_PATH=/opt/pylon/tassl/lib:$LD_LIBRARY_PATH
/opt/pylon/nginx/sbin/nginx -t -c /opt/pylon/nginx/conf/nginx.conf
reload tassl-nginx
systemctl reload tassl-nginx //重启nginx服务
(```)
刷新脚本命令 sudo refresh_dock_proxy [ip] [port] ----- refresh_dock_proxy 是你脚本的名字,当然,你要把你写好执行刷新命令的脚本