【案例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协议)

相关推荐
好好学习啊天天向上几秒前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
好奇的菜鸟1 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°1 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
典学长编程1 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk9982 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
DuelCode2 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社22 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
幽络源小助理2 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
猴哥源码2 小时前
基于Java+springboot 的车险理赔信息管理系统
java·spring boot
会飞的鱼先生3 小时前
Node.js-http模块
网络协议·http·node.js