非 www 重定向到 www 不适用于 https

非 www 重定向到 www 不适用于 https

我正在尝试使用我的 nginx 服务器将所有非 www 请求重定向到 www,但尽管成功重定向了 http 请求(http://example.comhttps://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 证书

SSL 证书

  • S3 设置为将非 www 请求重定向到 www

s3-重定向

  • 为 example.com 配置 DNS 以指向 s3-bucket 重定向

DNS 配置

  • 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

相关内容