使用Nginx将Elastic Beanstalk HTTP请求重定向到HTTPS

时间:2018-08-17 17:45:35

标签: amazon-web-services nginx elastic-beanstalk

我希望在以nginx作为代理系统的Elastic Beanstalk上从HTTP请求重定向到HTTPS。

我在Google上找到了很多建议,但没有人提供帮助,它没有重定向。

这是我当前在Column目录中的test.config文件:

.ebexentions

我还尝试了无数其他设置,但没有一个起作用。

这是我的负载均衡器设置: enter image description here

希望您能帮助我。 :)

3 个答案:

答案 0 :(得分:1)

This是唯一可行的解​​决方案。

在AWS创建默认nginx文件后,有必要覆盖它。因此,必须再有两个文件:

  1. 编写nginx文件。
  2. 创建一个脚本来覆盖默认的nginx文件。
  3. AWS创建默认文件后运行脚本。

答案 1 :(得分:0)

当我尝试使用Nginx在我的AWS Elastic Beanstalk Go环境中将所有HTTP通信重定向到HTTPS时,遇到了类似的问题。这是解决方案,由AWS支持团队提供:

在以下目录结构中的应用程序代码的根目录下创建一个文件。

.ebextensions/nginx/conf.d/elasticbeanstalk/00_application.conf

带有内容

location / {
     set $redirect 0;
     if ($http_x_forwarded_proto != "https") {
       set $redirect 1;
     }
     if ($http_user_agent ~* "ELB-HealthChecker") {
       set $redirect 0;
     }
     if ($redirect = 1) {
       return 301 https://$host$request_uri;
     }   

     proxy_pass          http://127.0.0.1:5000;
     proxy_http_version  1.1;

     proxy_set_header    Connection          $connection_upgrade;
     proxy_set_header    Upgrade             $http_upgrade;
     proxy_set_header    Host                $host;
     proxy_set_header    X-Real-IP           $remote_addr;
     proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
}

有关AWS提供的配置文件的完整列表,您应签出this link

答案 2 :(得分:0)

要实现的目标,我使用给定的nginx.conf自定义完全覆盖了原始nginx.conf以及一些位置指令的自定义配置

.plateform -- nginx -- nginx.conf -- conf.d -- elasticbeanstalk --custom.conf

这是我的nginx.conf

user  nginx;
error_log               /var/log/nginx/error.log warn;
pid                     /var/run/nginx.pid;
worker_processes        auto;
worker_rlimit_nofile    32153;
events {
  worker_connections  1024;
}
http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

  include       conf.d/*.conf;

   map $http_upgrade $connection_upgrade {
    default     "upgrade";
  }
  server {
    listen        80 default_server;
    access_log    /var/log/nginx/access.log main;

    client_header_timeout 60;
    client_body_timeout   60;
    keepalive_timeout     60;
    gzip                  off;
    gzip_comp_level       4;
    gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    # Include the Elastic Beanstalk generated locations
    include conf.d/elasticbeanstalk/*.conf;
}

}

以下内容将帮助我安全地覆盖配置

include conf.d/elasticbeanstalk/*.conf;