Il n'a peut-être pas été nécessaire de le résumer, mais j'y suis assez accro, alors j'aimerais l'écrire.
Nous partirons du principe que la configuration SSL de base est terminée. Veuillez vérifier à nouveau si Elastic Load Balancer (ELB) est lié à l'environnement Elastic Beanstalk (EB) et si le certificat SSL et HTTPS / port appropriés sont définis pour ELB.
Puisque ELB stocke le protocole de la demande reçue dans l'en-tête X-Forwarded-Proto, la redirection HTTP → HTTPS peut être réalisée en lisant les paramètres suivants dans le bloc de serveur nginx.
if ($http_x_forwarded_proto != 'https') {
rewrite ^ https://$host$request_uri? permanent;
}
Alors, comment écraser les paramètres essentiels de nginx? Aller/ [Java SE](http://docs.aws.amazon.com/ja_jp/ Elasticbeanstalk / latest / dg / java-se-platform.html) Dans l'environnement, un mécanisme est introduit pour modifier facilement les paramètres de nginx. La méthode de réglage est la même pour les deux.
Si vous créez un fichier appelé «.ebextensions / nginx / nginx.conf» et le placez dans le répertoire racine de l'application à déployer avec EB, ce «nginx.conf» écrasera «/ etc / nginx / nginx.conf» sur EC2. Sera fait.
Autre chose, si vous placez les fichiers dans .ebextensions / nginx / conf.d / *. Conf
, ces fichiers seront copiés / etc / nginx / conf.d / élastiquebeanstalk
, et nginx.conf
sera copié. Si vous ne l'avez pas écrasé, dans le bloc server {}
dedans, ou si vous avez écrasé nginx.conf
, écrivez ʻinclude conf.d / élastiquebeanstalk / *. Conf;Il sera lu, mais pour une raison quelconque, si vous placez le fichier qui décrit les paramètres de redirection ci-dessus comme
.ebextensions / nginx / conf.d / 02_proxy.conf`, l'instruction if ne sera pas autorisée et sera lue lors de la lecture du fichier de paramètres nginx.
Veuillez noter que si vous mordez CodeBuild, si vous oubliez de sortir des extensions .eb lors de la sortie de l'artefact, il ne sera pas copié, bien sûr.
C'est pourquoi l'écrire dans le fichier inclus ne fonctionne pas, donc il écrase le fichier de configuration nginx existant. Si vous écrivez les paramètres de redirection ci-dessus dans le bloc server {}
, ce sera comme suit.
# 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;
}
}
Si vous copiez et collez ce qui précède et enregistrez-le sous .ebextensions / nginx / nginx.conf
, la redirection HTTP → HTTPS doit être activée.