cPanel/Linux下Go服务+React前端HTTPS端点SSL协议错误排查
问题分析与解决方案
你的核心问题出在.htaccess的规则顺序和逻辑错误,同时缺少API请求到Go后端的正确转发配置,导致HTTPS环境下请求无法正确路由,引发SSL协议相关错误。
一、修正.htaccess配置
当前配置先处理了React SPA的路由 fallback,之后才尝试HTTPS跳转,且跳转目标是HTTP协议的8080端口,这会导致混合内容错误或SSL握手失败。以下是修正后的配置:
RewriteEngine On RewriteBase / # 1. 强制所有HTTP请求跳转至HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] # 2. 转发API相关请求到Go后端的8080端口 RewriteRule ^api/(.*)$ http://localhost:8080/api/$1 [P,L] RewriteRule ^login$ http://localhost:8080/login [P,L] RewriteRule ^logout$ http://localhost:8080/logout [P,L] # 3. React SPA路由 fallback:非静态资源请求跳转至index.html RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule . /index.html [L]
配置说明:
- 先强制所有HTTP请求转为HTTPS,确保全站使用加密协议
- 把Go服务的路由(
/api/*、/login、/logout)通过反向代理(P标记)转发到本地8080端口的Go后端,Apache会处理HTTPS与后端HTTP的协议转换 - 最后处理React SPA的路由,确保单页应用的前端路由正常工作
二、其他必要检查项
React请求地址修正
确保baseUrl使用HTTPS协议,比如:const baseUrl = "https://你的域名/api/attendance";禁止使用HTTP协议或带端口的地址,避免混合内容错误。
Go后端部署验证
- 确保Go服务监听
localhost:8080(而非公网IP),避免直接暴露端口 - 如果Go后端未配置SSL证书,无需额外处理,因为Apache已经通过反向代理完成了HTTPS加密,后端与Apache之间走本地HTTP通信即可
- 确保Go服务监听
cPanel模块检查
确认主机商在cPanel中启用了mod_proxy和mod_proxy_http模块(通常默认开启,若未开启需联系主机商)浏览器错误排查
打开浏览器控制台查看具体错误:- 若显示
Mixed Content:说明仍有HTTP请求存在,检查baseUrl或其他资源地址 - 若显示
SSL Protocol Error:可能是Apache的SSL证书配置问题,或Go后端错误监听了HTTPS端口但证书不匹配
- 若显示
内容的提问来源于stack exchange,提问作者Edwin Fernando Pirajan Arevalo
相关产品推荐
相关产品推荐

