我知道这个问题之前已经被问过了,但是似乎没有任何东西可以为我工作。 我已经尝试了多种不同的东西,比如这些问题中描述的答案:
如何获得Elastic Beanstalk nginx支持的代理服务器自动从HTTPredirect到HTTPS? 将http的EC2 elb从httpredirect到https
他们似乎没有任何工作。 我是aws noob,所以我不完全确定如何编辑configuration文件 – 或者如果我做错了什么。
我的设置如下:
我的.ebextensions文件夹中的当前nginx.config文件(从这篇文章得到这个):
files: "/tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf" : mode: "000755" owner: root group: root content: | upstream nodejs { server 127.0.0.1:8081; keepalive 256; } server { listen 8080; set $fixedWWW ''; set $needRedir 0; # nginx does not allow nested if statements # check and decide on adding www prefix if ($host !~* ^www(.*)) { set $fixedWWW 'www.'; set $needRedir 1; } # what about that https? the traffic is all http right now # but elastic load balancer tells us about the original scheme # using $http_x_forwarded_proto variable if ($http_x_forwarded_proto != 'https') { set $needRedir 1; } # ok, so whats the verdict, do we need to redirect? if ($needRedir = 1) { rewrite ^(.*) https://$fixedWWW$host$1 redirect; } location / { proxy_pass http://nodejs; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } gzip on; }
但是这似乎没有做任何事情。 我已经用完了想法。 我不确定我是否错过了一个步骤,但我不知道该怎么做。 作为一个解决方法,我已经得到了我的angularjs前端redirect非https请求,但这太hacky和一些DOM在redirect之前呈现,我想redirect到负载平衡器 – 它应该redirect。
看起来您正在尝试为非WWW和非HTTPS连接执行重定向。 你有没有尝试过简单的情况下只是http:// – > https://?
if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }
有时候,通过两个重定向,一个从HTTP到HTTPS,一个从非WWW到WWW,处理起来更容易。 事实上,如果你要通过HSTS(https到处)注册你的站点,他们需要这种方法。
编辑:另外,只注意到你的配置的第一行,你可能想尝试直接注入nginx文件:
files: "/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf" :