aws弹性beantalk上的HTTP到HTTPS不适用于Spring Boot

Posted

技术标签:

【中文标题】aws弹性beantalk上的HTTP到HTTPS不适用于Spring Boot【英文标题】:HTTP to HTTPS on aws elastic beanstalk not working for Spring Boot 【发布时间】:2019-06-07 22:09:47 【问题描述】:

我正在尝试让 http -> https 与弹性豆茎一起使用,但他们的文档似乎不起作用。我已设置负载均衡器以成功终止 http 和 https。

http://example.com
https://example.com

两者都有效。

This documentation 解释了如何配置 https 到 http 的重定向。我在 Spring Boot 中使用 java-se,所以我阅读了 the readme 并将 .ebextensions 放在我的 src/main/resources 文件夹中。

所以我完成的 spring boot jar 有 myapp.jar/BOOT-INF/classes/.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;

在里面。但是没有任何东西重定向到https。

【问题讨论】:

你能编辑.httpaccess吗? @Ismael 您的意思是像登录负载平衡器的服务器并手动更改它?理论上我可以,但它不会自动工作,如果我有另一个环境,我必须手动重做。 【参考方案1】:

好吧,想通了!将.ebextensions 放在项目的根文件夹中,而不是src/main/resources。然后添加 bootJar 命令将该文件夹粘贴到已完成 jar 的顶层,AWS 需要将其拾取:

compileKotlin 
    kotlinOptions 
        freeCompilerArgs = ["-Xjsr305=strict"]
        jvmTarget = "1.8"
    

    bootJar 
        from('.ebextensions') 
            into('.ebextensions' )
        
    

感谢您对这个问题的回答让我顺利完成了剩下的工作:

How do you build a folder into the .jar root of a spring boot gradle project?

【讨论】:

以上是关于aws弹性beantalk上的HTTP到HTTPS不适用于Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章

如何将自签名证书分配给 AWS 弹性 beantalk 应用程序

AWS 弹性 beantalk 上的 postgraphile 出现 408 超时错误

aws 弹性负载均衡器可以将端口 443 转发到端口 443 以获取弹性 beantalk 实例吗?

aws弹性beantalk上的nginx扩展

aws弹性beantalk上的Oauth2服务器

第一个 git aws.push 到弹性 beantalk 时出错