Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurazione del server proxy
Elastic Beanstalk può usare NGINX oppure Apache HTTPD come reverse proxy per mappare l'applicazione al sistema di bilanciamento del carico Elastic Load Balancing sulla porta 80. L'impostazione predefinita è NGINX. Elastic Beanstalk fornisce una configurazione proxy predefinita che puoi estendere o sostituire completamente con la tua configurazione.
Per impostazione predefinita, Elastic Beanstalk configura il proxy per inoltrare le richieste all'applicazione sulla porta 5000. È possibile sostituire la porta predefinita impostando la PORT
proprietà dell'ambiente sulla porta di ascolto dell'applicazione principale.
Nota
La porta su cui l'applicazione è in ascolto non influisce sulla porta che NGINX il server ascolta per ricevere richieste dal sistema di bilanciamento del carico.
Configurazione del server proxy sulla versione della piattaforma
Tutte le AL2 piattaforme AL2 023/ supportano una funzionalità di configurazione proxy uniforme. Per ulteriori informazioni sulla configurazione del server proxy sulle versioni della piattaforma che eseguono AL2 AL2 023/, consulta. Configurazione del proxy inverso
Se il tuo Elastic Beanstalk Node.js l'ambiente utilizza una versione AMI della piattaforma Amazon Linux (precedente ad Amazon Linux 2), leggi le informazioni in questa sezione.
Note
-
Le informazioni contenute in questo argomento si applicano solo ai rami della piattaforma basati su Amazon Linux AMI (AL1). AL2I rami della AL2 piattaforma 023/ non sono compatibili con le versioni precedenti della piattaforma Amazon Linux AMI (AL1) e richiedono impostazioni di configurazione diverse.
-
Il 18 luglio 2022, Elastic Beanstalk ha impostato lo stato di tutte le filiali della piattaforma basate su Amazon Linux () come ritirato. AMI AL1 Per ulteriori informazioni sulla migrazione a una ramificazione della piattaforma Amazon Linux 2023 attuale e completamente supportata, consulta Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2.
Il Node.js la piattaforma utilizza un reverse proxy per inoltrare le richieste dalla porta 80 sull'istanza all'applicazione in ascolto sulla porta 8081. Elastic Beanstalk fornisce una configurazione proxy predefinita che puoi estendere o ignorare completamente in favore di quella personalizzata.
Per estendere la configurazione predefinita, aggiungi file .conf
a /etc/nginx/conf.d
con un file di configurazione. Per un esempio specifico, consulta Terminazione di HTTPS nelle istanze EC2 che eseguono Node.js.
Il Node.js la piattaforma imposta il PORT variabile di ambiente relativa alla porta a cui il server proxy trasmette il traffico. Leggi questa variabile nel codice per configurare la porta della tua applicazione.
var port = process.env.PORT || 3000;
var server = app.listen(port, function () {
console.log('Server running at http://127.0.0.1:' + port + '/');
});
Il valore di timeout predefinito per NGINX la configurazione inoltra il traffico a un server upstream denominato nodejs
in. 127.0.0.1:8081
È possibile rimuovere la configurazione predefinita e fornire quella personalizzata in un file di configurazione.
Esempio .ebextensions/proxy.config
L'esempio seguente rimuove la configurazione predefinita e aggiunge una configurazione personalizzata che inoltra il traffico alla porta 5000 anziché alla porta 8081.
files:
/etc/nginx/conf.d/proxy.conf:
mode: "000644"
owner: root
group: root
content: |
upstream nodejs {
server 127.0.0.1:5000;
keepalive 256;
}
server {
listen 8080;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
access_log /var/log/nginx/access.log main;
location / {
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
gzip on;
gzip_comp_level 4;
gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location /static {
alias /var/app/current/static;
}
}
/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh:
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash -xe
rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
service nginx stop
service nginx start
container_commands:
removeconfig:
command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf"
La configurazione di esempio, /etc/nginx/conf.d/proxy.conf
, utilizza la configurazione predefinita specificata in /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
come base per includere il blocco di server predefinito con la compressione e le impostazioni dei log, nonché una mappatura di file statici.
Il comando removeconfig
rimuove la configurazione predefinita per il container, in modo che il server proxy utilizzi la configurazione personalizzata. Elastic Beanstalk ricrea la configurazione predefinita una volta implementate tutte le configurazioni. Per tenere conto di ciò, nell'esempio seguente viene aggiunto un post-configuration-deployment hook (/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh
). In questo modo viene rimossa la configurazione predefinita e riavvia il server proxy.
Nota
La configurazione predefinita potrebbe cambiare nelle future versioni di Node.js piattaforma. Per garantire la compatibilità, utilizza la versione più recente della configurazione come base per le personalizzazioni.
Se si sovrascrive la configurazione predefinita, è necessario definire eventuali mappature statiche dei file e GZIP compressione. Questo perché la piattaforma non può applicare le impostazioni standard.