背景原因与解决方式
由于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 “
d
o
c
k
i
p
"
]
∣
∣
[
−
z
"
{dock_ip}" ] || [ -z "
dockip"]∣∣[−z"{dock_port}” ]; then
echo “Usage: refresh_dock_proxy [ip] [port]” >&2
exit 1
fi
if [ ! -f “
t
a
s
s
l
n
g
i
n
x
d
o
c
k
c
o
n
f
t
m
p
l
"
]
;
t
h
e
n
e
c
h
o
"
E
R
R
O
R
:
d
o
c
k
e
r
p
r
o
x
y
c
o
n
f
n
o
t
f
o
u
n
d
[
{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]+# d o c k i p : {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 是你脚本的名字,当然,你要把你写好执行刷新命令的脚本