致远 OA HTTPS 配置避坑指南

致远 OA HTTPS 配置避坑指南

环境说明

  • 产品版本 :致远 A6-V5 企业版 V5.6SP1
  • 部署环境Windows Server 2008 R2 Standard
  • 应用部署方式单机 Tomcat 部署
  • Tomcat 端口8080
  • HTTPS 方式:Nginx 反向代理
  • 域名oa.xxxx.com
  • HTTPS 端口4433 (本机443端口已被其他服务占用)

一、需求简述

将致远 A6-V5 企业版 V5.6SP1 从原来的:

bash 复制代码
http://oa.xxxx.com:8080

改为通过 Nginx 对外提供 HTTPS 访问:

bash 复制代码
https://oa.xxxx.com:4433

并解决 HTTPS 场景下常见的报错:

  • 页面可打开但提交报错
  • 浏览器提示混合内容
  • 页面中仍然生成 http:// 地址
  • 400 The plain HTTP request was sent to HTTPS port

二、致远OA实现HTTPS加密访问的逻辑图

三、NGINX准备

Windows Server 中安装NGINX参考文章:Windows Server 部署 Nginx 反向代理指南

本环境最终使用的思路:

  • 80 端口跳转到 HTTPS
  • 4433 提供 HTTPS
  • 反向代理到本机 OA Tomcat 的 8080
  • 使用sub_filter模块对页面中的 http://oa.xxxx.com 做内容替换,修复老版本 A6V5 输出 HTTP 地址的问题
1、配置NGINX

nginx.conf 推荐配置内容如下:

nginx 复制代码
worker_processes  auto;

events {
    worker_connections  2048;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout 65;
    keepalive_requests 1000;
    server_tokens off;
    client_max_body_size 60m; #文件上传大小限制

    tcp_nopush on;
    tcp_nodelay on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 5;
    gzip_min_length 1k;
    gzip_buffers 16 8k;

    gzip_types
        text/plain
        text/css
        text/html
        text/xml
        application/javascript
        application/x-javascript
        text/javascript
        application/json
        application/xml
        application/xhtml+xml;

    server {
        listen 80;
        server_name oa.xxxx.com;
        return 301 https://$host:4433$request_uri;
    }

    server {
        listen 4433 ssl;
        server_name oa.xxxx.com;

        ssl_certificate      E:/nginx-1.16.1/nginx-1.16.1/ssl/ssl.pem;
        ssl_certificate_key  E:/nginx-1.16.1/nginx-1.16.1/ssl/ssl.key;

        ssl_protocols TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf)$ {
            proxy_pass http://127.0.0.1:8080;

            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_redirect http:// https://;
            proxy_set_header Accept-Encoding "";

            sub_filter_once off;
            sub_filter_types text/css application/javascript application/x-javascript text/javascript;
            sub_filter 'http://oa.xxxx.com' 'https://oa.xxxx.com';

            expires 7d;
            add_header Cache-Control "public";

            proxy_connect_timeout 300;
            proxy_read_timeout 300;
            proxy_send_timeout 300;
        }

        location / {
            proxy_pass http://127.0.0.1:8080;

            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_redirect http:// https://;
            proxy_set_header Accept-Encoding "";

            sub_filter_once off;
            sub_filter_types text/html text/css text/xml text/plain application/javascript application/x-javascript text/javascript application/json;
            sub_filter 'http://oa.xxxx.com' 'https://oa.xxxx.com';

            proxy_connect_timeout 300;
            proxy_read_timeout 300;
            proxy_send_timeout 300;
        }
    }
}

sub_filter 是本次修复的关键,它的核心作用是在响应内容返回给客户端之前,对 HTML 等文本内容进行实时、轻量级的字符串替换,而无需修改后端代码或源文件。

2、放置 SSL 证书

把SSL证书文件.pem.key 文件放入目录(自定义)

bash 复制代码
E:\nginx-1.16.1\nginx-1.16.1\ssl\

并确认配置中的路径一致:

nginx 复制代码
ssl_certificate      E:/nginx-1.16.1/nginx-1.16.1/ssl/ssl.pem;
ssl_certificate_key  E:/nginx-1.16.1/nginx-1.16.1/ssl/ssl.key;

四、修改OA配置

对于 A6V5,不建议优先改 Tomcat HTTPS,而是需要在服务器本地打开【协同系统配置】------【系统参数设置】------找到参数【internet.site.url】,并将原来的http://oa.xxxx.com:8080改成https://oa.xxxx.com:4433

1、服务器本地打开【协同系统配置】
2、修改参数

五、效果检查

完成以上配置后,通过访问 【oa.xxxx.com】,可自动跳转https://oa.xxxx.com:4433,页面可正常提交表单,不再报错,浏览器不再提示混合内容拦截,说明 HTTPS 配置可用。

相关推荐
2501_915909061 小时前
iOS test 测试怎么做?功能、性能、兼容、稳定与安全五类测试指南
android·ios·小程序·https·uni-app·iphone·webview
我星期八休息4 小时前
网络编程—NAT、代理服务与内网穿透
linux·服务器·网络·网络协议
A_humble_scholar4 小时前
Linux 网络基础(三)下的 HTTP 核心详解:从请求响应到状态管
linux·网络·http
Lucis__4 小时前
如何实现长连接通信机制?Websocket的最佳实践
网络·websocket·网络协议
winfreedoms5 小时前
VMware 桥接模式无法联网:从 DHCPDISCOVER 到静态 IP 的完整排障实战
网络协议·tcp/ip·ubuntu·桥接模式·vmware·嵌入式学习
微硬创新20 小时前
老旧产线改造:耐达讯自动化16路4‑20mA转PROFINET的工程实践
人工智能·网络协议·自动化·信息与通信
80s7771 天前
独享住宅IP、长效代理ip是什么?有哪些作用?
网络·网络协议·tcp/ip
IPdodo_1 天前
静态 IP、住宅 IP 和固定出口有什么区别?开发场景选型指南
服务器·网络·网络协议·tcp/ip·代理ip
_ZHOURUI_H_1 天前
Unity TCP底层极限拆解:粘包、半包、CRC、序列号、双缓冲到底怎么一起工作的?
网络·网络协议·tcp/ip·游戏·unity·游戏引擎·游戏开发