Configurazione del server proxy - AWS Elastic Beanstalk

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ò utilizzare NGINX o HTTPD di Apache come proxy inverso per mappare l'applicazione al sistema di bilanciamento del carico di Elastic Load Balancing sulla porta 80. Il valore predefinito è NGINX. Elastic Beanstalk fornisce una configurazione proxy predefinita che puoi estendere o ignorare completamente in favore di quella personalizzata.

Per impostazione predefinita, Elastic Beanstalk configura il proxy per inoltrare le richieste all'applicazione sulla porta 5000. È possibile sostituire la porta predefinita impostando la PORTproprietà dell'ambiente sulla porta di ascolto dell'applicazione principale.

Nota

La porta di ascolto della tua applicazione non influisce sulla porta che il server NGINX ascolta per ricevere le richieste dal sistema di bilanciamento del carico.

Configurazione del server proxy sulla versione della piattaforma

Tutte le piattaforme AL2023/AL2 supportano una funzionalità di configurazione proxy uniforme. Per maggiori informazioni sulla configurazione del server proxy nelle versioni della piattaforma che eseguono AL2023/AL2, espandi la sezione Configurazione proxy inverso in Estensione delle piattaforme Elastic Beanstalk Linux.

Se l'ambiente Node.js di Elastic Beanstalk utilizza una versione della piattaforma AMI Amazon Linux (precedente ad Amazon Linux 2), leggi le informazioni presenti in questa sezione.

Note
  • Le informazioni contenute in questo argomento si applicano solo ai rami della piattaforma basati su Amazon Linux AMI (AL1). Le ramificazioni della piattaforma AL2023/AL2 non sono compatibili con le precedenti versioni della piattaforma AMI Amazon Linux (AL1) e richiedono diverse impostazioni di configurazione.

  • Il 18 luglio 2022 Elastic Beanstalk ha impostato lo stato di tutte le ramificazioni della piattaforma sull'AMI Amazon Linux (AL1) su retired (ritirato). 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.

La piattaforma Node.js utilizza un proxy inverso per l'inoltro delle richieste provenienti dalla porta 80 dell'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.

La piattaforma Node.js imposta la variabile di ambiente PORT sulla porta a cui il server proxy trasferisce 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 + '/'); });

La configurazione NGINX predefinita inoltra il traffico a un server upstream denominato nodejs su 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 hook di implementazione post-configurazione (/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 versioni future della piattaforma Node.js. Per garantire la compatibilità, utilizza la versione più recente della configurazione come base per le personalizzazioni.

Se sovrascrivi la configurazione predefinita, devi definire eventuali mappature di file statici e compressione GZIP. Questo perché la piattaforma non può applicare le impostazioni standard.