【问题标题】:AWS EB - Redirect all traffic to httpsAWS EB - 将所有流量重定向到 https
【发布时间】:2016-09-26 04:52:50
【问题描述】:

我的 nodejs 应用程序部署在 AWS EB 上。我已经配置了 https 服务器,它工作正常。现在我需要将每个非 https 请求重定向到带有 www 的 https。作为前缀,像这样:

获取 example.com => https://www.example.com

我使用的是 nginx,而我的 EB 实例是单个实例,前面没有负载均衡器。

我已经使用此代码在 .ebextensions 文件夹中创建了一个配置文件

资源: sslSecurityGroupIngress: 类型:AWS::EC2::SecurityGroupIngress 特性: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} ip协议:tcp 到港:443 FromPort: 443 CidrIp:0.0.0.0/0 文件: /etc/nginx/conf.d/999_nginx.conf: 模式:“000644” 所有者:根 组:根 内容:| 上游节点服务器{ 服务器 127.0.0.1:8081; 保活256; } # HTTP 服务器 服务器 { 听8080; server_name 本地主机; 返回 301 https://$host$request_uri; } # HTTPS 服务器 服务器 { 听443; server_name 本地主机; 开启ssl; ssl_certificate /etc/pki/tls/certs/server.crt; ssl_certificate_key /etc/pki/tls/certs/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_prefer_server_ciphers 开启; 地点 / { proxy_pass http://nodejsserver; proxy_set_header 连接“”; proxy_http_version 1.1; proxy_set_header 主机 $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } /etc/pki/tls/certs/server.crt: 模式:“000400” 所有者:根 组:根 内容:| -----开始证书----- 我的crt -----结束证书----- /etc/pki/tls/certs/server.key: 模式:“000400” 所有者:根 组:根 内容:| -----开始 RSA 私钥----- 我的钥匙 -----结束 RSA 私钥----- /etc/nginx/conf.d/gzip.conf: 内容:| gzip打开; gzip_comp_level 9; gzip_http_version 1.0; gzip_types text/plain text/css image/png image/gif image/jpeg application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+ xml; gzip_proxied 任何; gzip_disable "msie6"; 命令: 00_enable_site: 命令:'rm -f /etc/nginx/sites-enabled/*'

我确定 aws 正在考虑我的配置,因为 de ssl 工作正常。但是http块不起作用..没有重定向。

可能我的问题是重写EB原来的nginx配置,你知道怎么实现吗?

你能帮我吗?我已经尝试了很多东西..

谢谢

【问题讨论】:

  • 忘了说我在单个实例上使用 nginx 和 eb,前面没有负载均衡器!
  • 您是否搜索过“Nginx force SSL”之类的内容?这个问题已经有很多答案了。
  • 是的,当然。我尝试了很多东西,对我的情况没有任何效果..
  • 您可以使用 Cloudfront 和 S3 重定向功能来处理此问题。让 Cloudfront 将所有请求重定向到 https,然后让 S3 将您的裸域重定向到 www。

标签: node.js amazon-web-services nginx amazon-elastic-beanstalk


【解决方案1】:

好的,找到问题了,EB 创建了一个默认配置文件/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf,它正在侦听 8080。因此,由于 Nginx 使用的是之前为 8080 定义的规则,因此您的重定向不会被拾取。

这是我使用的一个配置文件。它生成的文件将优先于默认规则。

https://github.com/jozzhart/beanstalk-single-forced-ssl-nodejs-pm2/blob/master/.ebextensions/https-redirect.config

【讨论】:

  • 谢谢 Jozzhart,我会尽快尝试的 :)
猜你喜欢
  • 2014-08-23
  • 2013-01-06
  • 2014-04-27
  • 2011-03-15
  • 2016-07-27
  • 2020-05-16
  • 2020-04-11
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多