Nginx配置非标准端口5020部署Redmine时遭遇SSL记录过长错误
嗨,我之前刚好碰到过一模一样的问题,一眼就看到你配置里的坑了!咱们一步步来解决:
首先,你这个SSL记录过长的错误,根源就在你server块里那行多余的重定向代码:
return 301 https://$server_name:5020$request_uri;
为什么这行有问题?因为你这个server块本身就是监听5020端口的SSL请求(看开头的listen 5020 ssl default_server;),你再强制把所有请求重定向到同一个HTTPS地址,相当于让Nginx在SSL握手还没正常完成的时候就发送了重定向响应,浏览器的SSL解析器直接懵了,就会抛出“SSL received a record that exceeded the maximum permissible length”这个错误。
接下来是修复步骤,非常简单:
第一步:删掉那行多余的重定向代码
直接把return 301 https://$server_name:5020$request_uri;这一行删掉,这是最关键的操作。第二步:检查SSL配置片段(可选但推荐)
打开你的snippets/ssl-params.conf,确保里面的SSL协议和加密套件是主流的,比如:ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off;如果你之前的snippets配置本来就合理,这一步可以跳过。
第三步:重启Nginx生效
执行命令重启Nginx:sudo systemctl restart nginx第四步:确认Redmine的Passenger配置
你已经加了passenger_enabled on;和passenger_min_instances 1;,这个配置没问题,只要Redmine本身在/opt/redmine/public目录下是正常运行的,Passenger会正确拉起服务。
改完之后再访问https://my.great.server:5020,应该就能正常看到Redmine的页面了。我当时就是因为手多加了这行重定向,折腾了好半天,删了之后立马就好。
备注:内容来源于stack exchange,提问作者Sean

