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