Leiten Sie HTTP mit Elastic Beanstalk in einer Go / Java SE-Umgebung zu HTTPS um

Es war vielleicht nicht notwendig, es zusammenzufassen, aber ich bin ziemlich süchtig danach, also würde ich es gerne aufschreiben.

Annahme

Wir gehen davon aus, dass das grundlegende SSL-Setup abgeschlossen ist. Bitte überprüfen Sie erneut, ob Elastic Load Balancer (ELB) mit der Elastic Beanstalk (EB) -Umgebung verknüpft ist und das entsprechende SSL-Zertifikat und der HTTPS / Port für ELB festgelegt sind.

Einstellungen umleiten

Da ELB das Protokoll der empfangenen Anforderung im X-Forwarded-Proto-Header speichert, kann die HTTP → HTTPS-Umleitung durch Lesen der folgenden Einstellungen im Nginx-Serverblock realisiert werden.

if ($http_x_forwarded_proto != 'https') {
    rewrite ^ https://$host$request_uri? permanent;
}

Nginx-Einstellungen

Wie überschreiben Sie die wesentlichen Nginx-Einstellungen? Go/ [Java SE](http://docs.aws.amazon.com/ja_jp/ elasticbeanstalk / latest / dg / java-se-platform.html) In der Umgebung wird ein Mechanismus eingeführt, mit dem die Nginx-Einstellungen leicht manipuliert werden können. Die Einstellmethode ist für beide gleich.

Wenn Sie eine Datei mit dem Namen ".ebextensions / nginx / nginx.conf" erstellen und im Stammverzeichnis der Anwendung ablegen, die mit EB bereitgestellt werden soll, überschreibt diese "nginx.conf" "/ etc / nginx / nginx.conf" auf EC2. Getan werden.

Wenn Sie die Dateien in ".ebextensions / nginx / conf.d / *. Conf" ablegen, werden diese Dateien "/ etc / nginx / conf.d / elasticbeanstalk" und "nginx.conf" kopiert Wenn Sie es nicht überschrieben haben, im server {} Block darin, oder wenn Sie nginx.conf überschrieben haben, schreiben Sie include conf.d / elasticbeanstalk / *. Conf; Es wird gelesen, aber aus irgendeinem Grund wird die if-Anweisung nicht zugelassen und beim Lesen der Nginx-Einstellungsdatei abgespielt, wenn Sie die Datei, die die obigen Umleitungseinstellungen beschreibt, als ".ebextensions / nginx / conf.d / 02_proxy.conf" einfügen.

Hinweis

Bitte beachten Sie, dass wenn Sie CodeBuild beißen und vergessen, .ebextensions bei der Ausgabe von Artefakten auszugeben, diese natürlich nicht kopiert werden.

Nginx.conf vorbereiten

Aus diesem Grund funktioniert das Schreiben in die enthaltene Datei nicht, sodass die vorhandene Nginx-Konfigurationsdatei überschrieben wird. Wenn Sie die obigen Umleitungseinstellungen in den Block "server {}" schreiben, ist dies wie folgt.

# Elastic Beanstalk Nginx Configuration File

user                    nginx;
error_log               /var/log/nginx/error.log warn;
pid                     /var/run/nginx.pid;
worker_processes        auto;
worker_rlimit_nofile    33193;

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;

        # Redirect to https
        if ($http_x_forwarded_proto != 'https') {
           rewrite ^ https://$host$request_uri? permanent;
        }

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

Wenn Sie das Obige kopieren und einfügen und es als ".ebextensions / nginx / nginx.conf" speichern, sollte die HTTP → HTTPS-Umleitung aktiviert sein.

Recommended Posts

Leiten Sie HTTP mit Elastic Beanstalk in einer Go / Java SE-Umgebung zu HTTPS um
Hallo Welt mit gRPC / go in Docker-Umgebung
So erstellen Sie einen HTTPS-Server mit Go / Gin
Doppelklicken Sie in Windows + Anaconda auf ipynb, um es in jupyter-notebook zu öffnen
[AWS] Flask-Anwendungsbereitstellungsversion, die versucht hat, eine Python-Umgebung mit eb zu erstellen [Elastic Beanstalk]
Stellen Sie mit GO eine Verbindung zu Postgresql her
HTTP-Umgebungsvariablen in Flask
Ich möchte Rails mit Rails auch in einer vagabundierenden Umgebung betreiben
[AWS] Vorbereitung der Bereitstellung von Flask-Anwendungen zum Erstellen einer Python-Umgebung mit eb [Elastic Beanstalk]