致远 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 配置可用。

相关推荐
梦到啥说啥2 小时前
Linux网络编程:TCP网络协议
网络·网络协议·tcp/ip
Jeremy_WW6 小时前
802.3协议解读 06:117章节 RS 和 200GMII / 400GMII I
网络·网络协议·信息与通信·光模块·802.3协议
杨凯凡6 小时前
Spring Framework 7 HTTP Interface 实战:声明式 RestClient、超时与测试
java·spring·http
沫璃染墨8 小时前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp
CodeYp20199 小时前
第11讲:应用层协议 HTTP
linux·http
wdeok1 天前
Socket编程UDP-简单的聊天室
网络·网络协议·udp
Thanks_ks1 天前
HTTP 请求方法与 RESTful 接口设计:GET 和 POST 到底怎么用
http·api·restful·状态码·get·post·接口设计
LK_072 天前
【FastAPI】基础篇 01|开始之前:API、HTTP 与 FastAPI 到底是什么
网络协议·http·fastapi
阿星_2 天前
pydio登陆不了分析问题
网络协议·http·https
Joy T2 天前
Gzip 压缩原理与实践:HTTP 响应压缩、性能收益与工程配置
网络·网络协议·http