

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configuración del proxy inverso
<a name="platforms-linux-extend.proxy"></a>

Todas las versiones de la plataforma Amazon Linux 2 y Amazon Linux 2023 utilizan nginx como servidor proxy inverso predeterminado. Las plataformas Tomcat, Node.js, PHP y Python también admiten Apache HTTPD como alternativa. Para seleccionar Apache en estas plataformas, establezca la opción `ProxyServer` en el espacio de nombres `aws:elasticbeanstalk:environment:proxy` en `apache`. Todas las plataformas habilitan la configuración del servidor proxy de manera uniforme, como se describe en esta sección.

**nota**  
En las versiones de la plataforma AMI de Amazon Linux (antes de Amazon Linux 2), es posible que tenga que configurar servidores proxy de manera diferente. Puede encontrar estos detalles heredados en los [temas respectivos de la plataforma](concepts-all-platforms.md) en esta guía.

Elastic Beanstalk configura el servidor proxy de las instancias del entorno para que reenvíen el tráfico web a la aplicación web principal de la URL raíz del entorno; por ejemplo, `http://my-env.elasticbeanstalk.com`.

De forma predeterminada, Elastic Beanstalk configura el proxy para que reenvíe las solicitudes entrantes en el puerto 80 a la aplicación web principal en el puerto 5000. Puede configurar este número de puerto con la propiedad de entorno `PORT` utilizando el espacio de nombres [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment) en un archivo de configuración, tal y como se muestra en el ejemplo siguiente.

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  PORT
    value:  {{<main_port_number>}}
```

Para obtener más información sobre cómo configurar las variables de la aplicación, consulte [Opciones de configuración](ebextensions-optionsettings.md).

La aplicación debe escuchar el puerto que esté configurado para ella en el proxy. Si cambia el puerto predeterminado utilizando la propiedad de entorno `PORT`, el código podrá acceder a él a través del valor de la variable de entorno `PORT`. Por ejemplo, llame a `os.Getenv("PORT")` en Go o `System.getenv("PORT")` en Java. Si configura el proxy para que envíe tráfico a diferentes procesos de la aplicación, puede configurar varias propiedades de entorno y utilizar sus valores tanto en la configuración del proxy como en el código de la aplicación. Otra opción es pasar el valor del puerto al proceso como un argumento de comando en el archivo `Procfile`. Para obtener más información, consulte [Buildfile y Procfile](platforms-linux-extend.build-proc.md).

## Configuración de nginx
<a name="platforms-linux-extend.proxy.nginx"></a>

Elastic Beanstalk utiliza nginx como proxy inverso predeterminado para asignar la aplicación al equilibrador de carga de Elastic Load Balancing. Elastic Beanstalk proporciona una configuración de nginx predeterminada que puede ampliar o invalidar completamente con su propia configuración.

**nota**  
Cuando agregue o edite un archivo de configuración `.conf` de nginx, asegúrese de codificarlo como UTF-8.

Para ampliar la configuración predeterminada de nginx de Elastic Beanstalk, añada los archivos de configuración `.conf` en una carpeta llamada `.platform/nginx/conf.d/` del paquete de código fuente de su aplicación. La configuración de nginx de Elastic Beanstalk incluye archivos `.conf` en esta carpeta automáticamente.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- myconf.conf
`-- {{other source files}}
```

Los archivos de configuración de `.platform/nginx/conf.d/` se incluyen en el bloque `http` de la configuración de nginx. Utilice esta ubicación para las configuraciones que se aplican a nivel mundial.

Para ampliar la configuración predeterminada del bloque del `server` de nginx, añada los archivos de configuración `.conf` en una carpeta llamada `.platform/nginx/conf.d/elasticbeanstalk/` del paquete de código fuente de su aplicación. La configuración de nginx de Elastic Beanstalk incluye archivos `.conf` en esta carpeta dentro del bloque del `server`.

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- conf.d
|           `-- elasticbeanstalk
|               `-- server.conf
`-- {{other source files}}
```

Utilice esta ubicación para agregar configuraciones específicas del servidor, como bloques de ubicación adicionales, páginas de error personalizadas o directivas a nivel del servidor. En el siguiente ejemplo, se agrega un bloque de ubicación personalizado.

**Example . platform/nginx/conf.d/elasticbeanstalk/server.conf**  

```
location /test {
    return 200 "Hello World!";
    add_header Content-Type text/plain;
}
```

Para anular completamente la configuración predeterminada de nginx de Elastic Beanstalk, incluya una configuración en el paquete de código fuente de `.platform/nginx/nginx.conf`:

```
~/workspace/my-app/
|-- .platform
|   `-- nginx
|       `-- nginx.conf
`-- {{other source files}}
```

Si invalida la configuración de nginx de Elastic Beanstalk, agregue la siguiente línea al archivo `nginx.conf` para extraer las configuraciones de Elastic Beanstalk de [Informes y monitoreo de estado mejorados de Elastic Beanstalk](health-enhanced.md), los mapeos automáticos de la aplicación y los archivos estáticos.

```
 include conf.d/elasticbeanstalk/*.conf;
```

## Configuración de Apache HTTPD
<a name="platforms-linux-extend.proxy.httpd"></a>

Las plataformas Tomcat, Node.js, PHP y Python le permiten elegir el servidor proxy Apache HTTPD como alternativa a nginx. Este no es el valor predeterminado. En el siguiente ejemplo se configura Elastic Beanstalk para que utilice Apache HTTPD.

**Example .ebextensions/httpd-proxy.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: apache
```
Puede ampliar la configuración de Apache predeterminada de Elastic Beanstalk con archivos de configuración adicionales. Si lo prefiere, puede anular por completo la configuración de Apache predeterminada de Elastic Beanstalk.  
Para ampliar la configuración de Apache predeterminada de Elastic Beanstalk, añada los archivos de configuración `.conf` a una carpeta con el nombre `.platform/httpd/conf.d` en el paquete de código fuente de su aplicación. La configuración de Apache de Elastic Beanstalk incluye archivos `.conf` en esta carpeta automáticamente.  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   -- httpd
|      -- conf.d
|         -- port5000.conf
|         -- ssl.conf
-- index.jsp
```
Por ejemplo, la siguiente configuración de Apache 2.4 agrega un agente de escucha en el puerto 5000.  

**Example . platform/httpd/conf.d/port5000.conf**  

```
listen 5000
<VirtualHost *:5000>
  <Proxy *>
    Require all granted
  </Proxy>
  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>
```
Para anular por completo la configuración de Apache predeterminada de Elastic Beanstalk, incluya una configuración en el paquete de código fuente en `.platform/httpd/conf/httpd.conf`.  

```
~/workspace/my-app/
|-- .ebextensions
|   -- httpd-proxy.config
|-- .platform
|   `-- httpd
|       `-- conf
|           `-- httpd.conf
`-- index.jsp
```
Si invalida la configuración de Apache de Elastic Beanstalk, agregue la siguiente línea al archivo `httpd.conf` para extraer las configuraciones de Elastic Beanstalk de [Informes y monitoreo de estado mejorados de Elastic Beanstalk](health-enhanced.md), los mapeos automáticos de la aplicación y los archivos estáticos.  

```
IncludeOptional conf.d/elasticbeanstalk/*.conf
```