我正在尝试使用我的 nginx 服务器将所有非 www 请求重定向到 www,但尽管成功重定向了 http 请求(http://example.com到https://www.example.com),https 请求被挂起。我读到过浏览器在重定向之前尝试读取 SSL 证书,因此可能会发生挂起,但我最近创建了一个新的 SSL 证书来包含example.com
,所以我认为这不应该是一个问题。以下是我的设置细节:
Route53、Elastic Beanstalk、负载均衡器、S3
- 我的 Elastic Beanstalk 实例正在使用附加了 SSL 证书的 Classic Load Balancer。
- www.example.com(主要)、example.com、.example.com 的 SSL 证书
- S3 设置为将非 www 请求重定向到 www
- 为 example.com 配置 DNS 以指向 s3-bucket 重定向
- Nginx 配置强制使用 https
files: "/tmp/45_nginx_https_rw.sh": owner: root group: root mode: "000644" content: | #! /bin/bash CONFIGURED=`grep -c "return 301 https" /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf` if [ $CONFIGURED = 0 ] then sed -i '/listen 8080;/a \ if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }\n'
/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf logger -t nginx_rw "已添加 https 重写规则" exit 0 else logger -t nginx_rw "已设置 https 重写规则" exit 0 fi
container_commands: 00_appdeploy_rewrite_hook: command: cp -v /tmp/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/appdeploy/enact 01_configdeploy_rewrite_hook: command: cp -v /tmp/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/configdeploy/enact 02_rewrite_hook_perms: command: chmod 755 /opt/elasticbeanstalk/hooks/appdeploy/enact/45_nginx_https_rw.sh
/opt/elasticbeanstalk/hooks/configdeploy/enact/45_nginx_https_rw.sh 03_rewrite_hook_ownership:命令:chown root:用户/opt/elasticbeanstalk/hooks/appdeploy/enact/45_nginx_https_rw.sh /opt/elasticbeanstalk/hooks/configdeploy/enact/45_nginx_https_rw.sh