You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Safari无法访问Nginx部署网站:安全连接建立失败求助

解决iOS Safari无法访问Nginx托管网站的安全连接问题

排查方向1:禁用HTTP2协议

Nginx 1.10.0+版本默认会在listen 443 ssl时启用HTTP2,但部分iOS Safari版本对HTTP2的兼容性存在问题。你可以显式禁用HTTP2来验证:

  • 修改所有443端口的listen指令为:
    listen 443 ssl http2 off;
    
  • 重启Nginx:sudo systemctl restart nginx
  • 用iOS Safari重新访问测试

排查方向2:调整TLS协议与加密套件

Certbot生成的options-ssl-nginx.conf可能配置了较新的TLS协议或套件,旧版iOS设备不支持。你可以修改这个文件或者在server块中覆盖配置:

  1. 打开/etc/letsencrypt/options-ssl-nginx.conf,确保包含以下兼容iOS的配置:
    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;
    
  2. 保存后重启Nginx,测试访问

排查方向3:验证证书链完整性

虽然其他设备正常,但iOS对证书链的验证更严格。可以通过以下命令检查证书链:

openssl s_client -connect louislecouturier.fr:443 -showcerts

确保输出中包含完整的证书链(根证书、中间证书、服务器证书),如果缺失中间证书,重新生成Certbot证书:

sudo certbot renew --force-renewal

修改后的示例Server块(以主站为例)

server {
  server_name louislecouturier.fr www.louislecouturier.fr;

  location / {
    proxy_pass http://$server_addr:3000;
  }

  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
  add_header X-XSS-Protection          "1; mode=block" always;
  add_header X-Frame-Options DENY always;

  listen 443 ssl http2 off; # 显式禁用HTTP2
  ssl_certificate /etc/letsencrypt/live/louislecouturier.fr/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/louislecouturier.fr/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

内容的提问来源于stack exchange,提问作者Louis Lecouturier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:22:28