【案例73】Uclient无法读取https地址添加应用

问题现象

客户做了一个https的域名转换,网页端是正常访问的,但是在uclient里面添加应用就不行了,出来两个不对的应用,也安装不了,提示失败。

问题分析

点击添加应用发现,本来添加地址是https://域名:外网端口,但是相关jar下载地址却变成了http://服务器主机名:外网端口,但服务器内网无相关端口。由此可判断可能是转发出现异常导致。

查看网络配置逻辑,有个统一绑定域名和证书的Nginx1,用户通过https协议访问Nginx1的Port1端口后,把请求转发到Nginx2的Port2端口上,在通过Nginx2通过http代理把请求转发到NCC的Port3端口上。分别部署在3台不同的机器上。分别放置Nginx1、Nginx2、NCC代码。

查看NCC架构发现非集群架构,只是一个单点模式。

Nginx1关键配置

bash 复制代码
#### 服务器1的IP加密为1.1.1.1;服务器2的IP加密为2.2.2.2;服务器3的IP加密为3.3.3.3

server {
    listen 443 ssl;
    server_name 1.1.1.1;
    ssl_certificate /a/b/c/9496525__dossen.com.pem;
    ssl_certificate_key /a/b/c/9496525__dossen.com.key;
    ssl_session_timeout  5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    underscores_in_headers on;
    ssl_prefer_server_ciphers on;
    location / {
           proxy_pass http://NCNginx;
     }
}

upstream NCNginx {
    server 2.2.2.2:Port2
}

Nginx2关键配置

bash 复制代码
#### 服务器1的IP加密为1.1.1.1;服务器2的IP加密为2.2.2.2;服务器3的IP加密为3.3.3.3

server {
    listen Port2;
    server_name 2.2.2.2;
    location / {
           proxy_pass http://NCServer;
           proxy_set_header Host $host:$server_port;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_http_version 1.1;
           proxy_set_header Connection keep-alive;
     }
}

upstream NCServer {
    server 3.3.3.3:Port3
}

由于非集群中间层Nginx2没有部署的必要,和客户沟通,建议减少一层负载。直接让其从Nginx1直接把请求转到NCC上。

bash 复制代码
#### 服务器1的IP加密为1.1.1.1;服务器2的IP加密为2.2.2.2;服务器3的IP加密为3.3.3.3

server {
    listen 443 ssl;
    server_name 1.1.1.1;
    ssl_certificate /data/yonyou/certs/9496525__dossen.com.pem;
    ssl_certificate_key /data/yonyou/certs/9496525__dossen.com.key;
    ssl_session_timeout  5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    underscores_in_headers on;
    ssl_prefer_server_ciphers on;
    location / {
           proxy_pass http://NCServer;
		   #增加如下配置
           proxy_set_header Host $host:$server_port;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_http_version 1.1;
           proxy_set_header Connection keep-alive;
     }
}

upstream NCServer {
    server 3.3.3.3:Port3
}

再次测试发现,通过Uclient添加应用,轻量端正常。但重量端问题依旧。还剩走http协议,但是直接下载地址从http://应用服务器主机名:外端端口变更为真实域名。但轻量端已经恢复正常。

查阅文档得知,如果Uclient想走https协议添加应用。

需要修改webapps/nc_web/Client/uclient_appconfig.properties文件增加如下内容。

重启服务后验证后发现Uclient重量端依旧有问题。

访问https://域名:端口/app.esc发现,还是走的http协议,说明修改的配置未生效。说明应该是代码层面绑定导致的。

解决方案

打相关补丁,重启服务。

注意,打了此补丁,可能会导致uclient通过http协议添加应用失败。(强走https协议)

相关推荐
没有黑科技几秒前
5G网络中频段的分配
网络·5g
余厌厌厌12 分钟前
go语言学习 第9章:映射(Map)
服务器·学习·golang
搬码临时工20 分钟前
如何通过外网访问内网?哪个方案比较好用?跨网远程连接网络知识早知道
网络·智能路由器
海棠一号27 分钟前
JAVA理论第五章-JVM
java·开发语言·jvm
waving-black29 分钟前
利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
linux·服务器·腾讯云·frp·内网穿透
stormsha41 分钟前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
eternal__day44 分钟前
Spring Cloud 多机部署与负载均衡实战详解
java·spring boot·后端·spring cloud·负载均衡
颜淡慕潇1 小时前
Redis 实现分布式锁:深入剖析与最佳实践(含Java实现)
java·redis·分布式
程序员秘密基地1 小时前
基于vscode,idea,java,html,css,vue,echart,maven,springboot,mysql数据库,在线考试系统
java·vue.js·spring boot·spring·web app
何中应1 小时前
【设计模式-5】设计模式的总结
java·后端·设计模式