amazon-web-services - 在 AWS elasticbeanstalk 中使用 .ebextensions 配置 nginx 配置文件未找到

标签 amazon-web-services spring-boot ssl nginx amazon-elastic-beanstalk

我正在尝试使用自签名 SSL 对部署在 AWS 弹性 beanstalk 上的 springboot webserver 后端启用 https。我按照在线教程和指南使用新的 https-instance.config 更改我的 nginx 配置。

files:
  /etc/nginx/conf.d/myconf.conf:
    mode: "conf"
    owner: root
    group: root
    content: |
      # HTTPS server

      server {
        listen 443;
        server_name localhost;

        ssl on;
        ssl_certificate /etc/pki/tls/certs/server.crt;
        ssl_certificate_key /etc/pki/tls/certs/server.key;
        ssl_prefer_server_ciphers on;

        location / {
          proxy_pass  http://localhost:5000;
          proxy_http_version  1.1;
          proxy_set_header  Connection "";
          proxy_set_header  Host  $host;
          proxy_set_header  X-Real-IP  $remote_addr;
          proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
      }

  /etc/pki/tls/certs/server.crt:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN CERTIFICATE-----
 mycert
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN RSA PRIVATE KEY-----
mykey
      -----END RSA PRIVATE KEY-----

  /opt/elasticbeanstalk/hooks/appdeploy/post/03_restart_nginx.sh:
      mode: "000755"
      owner: root
      group: root
      content: |
        #!/usr/bin/env bash
        sudo service nginx restart

当我 ssh 到我的实例时,我无法在 conf.d 下找到我的 myconf.conf 文件。运行service nginx status给我
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/nginx.service.d
           └─nginx.conf
   Active: active (running) since Wed 2020-08-26 03:06:34 UTC; 15min ago
  Process: 28894 ExecStartPost=/bin/sh -c systemctl show -p MainPID nginx.service | cut -d= -f2 > /var/pids/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 28890 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 28887 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 28886 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 28893 (nginx)
   CGroup: /system.slice/nginx.service
           ├─28893 nginx: master process /usr/sbin/nginx
           └─28897 nginx: worker process

Aug 26 03:06:34  systemd[1]: Starting The nginx HTTP and reverse proxy server...
Aug 26 03:06:34 nginx[28887]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Aug 26 03:06:34  nginx[28887]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Aug 26 03:06:34  systemd[1]: Started The nginx HTTP and reverse proxy server.
我错过了什么。这是我在 AWS EBS 上的第一个项目。
注意:我正在为 EBS 运行免费层单实例

最佳答案

nginx您尝试使用的设置( /etc/nginx/conf.d/myconf.conf )适用于 亚马逊 Linux 1 .
但是您似乎使用的是亚马逊 Linux 2 (AL2)。因此,您应该使用不同的文件来设置 nginx。对于 AL2,nginx 设置应该在 .platform/nginx/conf.d/ ,不在 .ebextentions 中如docs所示.
因此,您可以拥有以下 .platform/nginx/conf.d/myconfig.conf内容:

server {
    listen 443;
    server_name localhost;

    ssl on;
    ssl_certificate /etc/pki/tls/certs/server.crt;
    ssl_certificate_key /etc/pki/tls/certs/server.key;
    ssl_prefer_server_ciphers on;

    location / {
      proxy_pass  http://localhost:5000;
      proxy_http_version  1.1;
      proxy_set_header  Connection "";
      proxy_set_header  Host  $host;
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}
以上是一个例子只有配置文件。我无法验证该设置是否真的有效,但您肯定使用了错误的文件夹来设置 AL2 中的 nginx 选项。
我的建议是先尝试通过 ssh 手动使其工作。如果您提供自己的 .platform/nginx/nginx.conf 没有任何效果,您可能会发现您需要覆盖整个 nginx 设置。文件。

关于amazon-web-services - 在 AWS elasticbeanstalk 中使用 .ebextensions 配置 nginx 配置文件未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63590035/

相关文章:

java - 如何向 Spring Boot 项目添加基于方法的安全性?

ssl - 无法使用 nginx 配置 certbot 以接受 https

ssl - Springboot 2.0 https 启用 CA 的 SSL 证书

java - 在多个EC2实例中远程执行程序并等待结果

amazon-web-services - Amazon RDS Small 能否每秒对主键执行 200 次时间戳更新?

spring-boot - 覆盖作为 jar 一部分的 application.properties 中的 spring 属性

java - Spring Boot中的Mockito不模拟对象

ssl - 我有一个无处不在的 SSL 站点,但我在从我的 Azure 视频流服务中提取内容时遇到错误

amazon-web-services - 什么是有效的 AWSPhone?可以使用哪些测试值?

amazon-ec2 - 如何将文件和文件夹上传到 AWS EC2 实例?