致远 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 从原来的:
http://oa.xxxx.com:8080
改为通过 Nginx 对外提供 HTTPS 访问:
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 推荐配置内容如下:
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 文件放入目录(自定义)
E:\nginx-1.16.1\nginx-1.16.1\ssl\
并确认配置中的路径一致:
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 配置可用。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/weixin_61921997/article/details/163727140




