AWS Beanstalk使用Apache将www重定向到非www
我已经部署了我的应用程序,使用Tomcat和Apache 2.4创建了AWS Beanstalk配置。我还成功地安装了Letsencrypt证书并启用了https。HTTP/2也已启用,工作正常。我唯一坚持的是将www重定向到非www。 我已尝试在war-中添加适当的配置。ebextensions\httpd\conf.d\ssl.conf,即:AWS Beanstalk使用Apache将www重定向到非www,apache,amazon-web-services,amazon-elastic-beanstalk,Apache,Amazon Web Services,Amazon Elastic Beanstalk,我已经部署了我的应用程序,使用Tomcat和Apache 2.4创建了AWS Beanstalk配置。我还成功地安装了Letsencrypt证书并启用了https。HTTP/2也已启用,工作正常。我唯一坚持的是将www重定向到非www。 我已尝试在war-中添加适当的配置。ebextensions\httpd\conf.d\ssl.conf,即: LoadModule ssl_module modules/mod_ssl.so LoadModule http2_module modules/mo
LoadModule ssl_module modules/mod_ssl.so
LoadModule http2_module modules/mod_http2.so
Listen 443
<VirtualHost *:443>
Protocols h2 http/1.1
<Proxy *>
Require all granted
</Proxy>
ServerName example.com
SSLEngine on
SSLCertificateFile "/etc/letsencrypt/live/example.com/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/example.com/privkey.pem"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost on
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1$1 [R=301,L]
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
RewriteEngine On
Redirect 301 / https://example.com
</VirtualHost>
LoadModule ssl\u module modules/mod\u ssl.so
加载模块http2_模块模块/mod_http2.so
听我说
协议h2 http/1.1
要求所有授权
ServerName example.com
斯伦金安
SSLCertificateFile“/etc/letsencrypt/live/example.com/fullchain.pem”
SSLCertificateKeyFile“/etc/letsencrypt/live/example.com/privkey.pem”
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All-SSLv2-SSLv3
SSLHonorCipherOrder开启
标头始终设置严格的传输安全性“最大年龄=63072000;包括子域;预加载”
标题始终设置X帧选项拒绝
标题始终设置X-Content-Type-Options nosniff
ProxyPass/http://localhost:8080/ 重试=0
ProxyPassReverse/http://localhost:8080/
代理主机
重新启动发动机
重写条件%{HTTP_HOST}^www\.(.*)$[NC]
重写规则^(.*)$https://%1$1[R=301,L]
服务器名www.example.com
重新启动发动机
重定向301/https://example.com
它实际上会重定向,但是。。。它重定向一次!然后客户端从example.com收到一个证书,下一次调用www.example.com失败,因为为没有www的资源生成了“错误”的证书。因此,SEO checkers无法通过301检查
我的问题-有没有办法用Apache配置重定向?
s3+Cloudfront是唯一的解决方案吗?可以。因此,我终于找到了一种方法,在没有s3 bucket和Cloudfront的情况下,设置一个从www.site版本到非www的301重定向 因此,从问题描述来看,Apache可以很好地重定向资源,在浏览器获得example.com的证书后,它实际上拒绝了子域。我错过的是可以生成并使用另一个证书 第一步是生成证书:
certbot certonly -d *.example.com --manual --preferred-challenges dns
细微差别在于你必须通过挑战。它将要求向托管区域添加CNAME记录:
Please deploy a DNS TXT record under the name
_acme-challenge.domain.com with the following value:
cxAGAsIvxQggW5FRAqUJfjsnknsYBjb3
Before continuing, verify the record is deployed.
添加记录后,点击Enter按钮,您将安装证书
别忘了重新启动Apache!
干得好!www.example.com现在被重定向到example.com