Nginx y Apache son servidores web fantásticos y potentes. Sin embargo, ambos tienen desventajas; Apache consume memoria del servidor, mientras que Nginx (mejor utilizado para archivos estáticos) necesita la ayuda de php-fpm para manejar contenido dinámico.

Este artículo le muestra cómo configurar Nginx y Apache para que funcionen juntos.

Información general

Nginx es un servidor web excelente y ligero diseñado para alto tráfico, mientras que Apache es otro servidor web popular que sirve a más de la mitad de todos los sitios web activos del mundo. Puede combinar los dos servidores web con sensatez, con Nginx sirviendo como un servidor web estático en el frente y Apache procesando el back-end. Entonces, veamos cómo configurar su Nginx para que funcione junto con Apache.

Configurar Apache y Nginx

Configura Nginx y apache en diferentes puertos para cada servidor. Eso significa que puede dejar el puerto 80 para Nginx y asignar otro puerto a Apache.

Nginx

Instalar Nginx

Instale y configure Nginx, que servirá como la interfaz de su sitio.

Descarga de apt-get;

sudo apt-get install nginx

Después de la descarga, configure el host virtual para que se ejecute en el front-end. Sin embargo, para configurar Nginx se requieren algunos cambios en el archivo de configuración.

Configurar Nginx

Abra el archivo de configuración de nginx

sudo nano /etc/nginx/sites-available/example

Por ejemplo, podría decirle a Apache que escuche en 127.0.0.1:8080 y decirle a Nginx que invierta el tráfico de proxy a Apache mientras sigue sirviendo contenido estático;

server {
 listen   127.0.0.1:80;
 server_name  some.name another.dname;
 access_log  /var/log/nginx/something-access.log;
 location / {
  proxy_pass http://localhost:8080;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
 location ~* ^.+.(jpg|js|jpeg|png)$ {
  root /some/where/on/your/disks;
 }
; put your static hosting config here.
}

Active el host virtual.

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

Elimina el bloque del servidor Nginx predeterminado.

sudo rm /etc/nginx/sites-enabled/default

apache

Instalar Apache

Instale el backend que es Apache

sudo apt-get install apache2

Apache se inicia en el puerto 80 porque Nginx no se inicia. Escuchemos Apache en un puerto diferente para que puedan trabajar juntos.

Configurar Apache

Apache abierto ports.conf Archivo con el siguiente comando;

sudo nano /etc/apache2/ports.conf

Busque la siguiente línea;

Listen 127.0.0.1:80

También cámbielo a;

Listen 127.0.01:8080

ahorrar y Salida.

A continuación, edite el archivo de hosts virtuales Apache predeterminado. La Este archivo está configurado para servir sitios en el puerto 80 únicamente

sudo nano /etc/apache2/sites-available/000-default.conf

Busque la siguiente línea;

<VirtualHost 127.0.0.1:80>

También cámbielo a;

<VirtualHost 127.0.0.1:8080>

Guarde el archivo y vuelva a cargar Apache.

sudo service apache2 reload

Asegúrese de que Apache esté escuchando en 8080 ahora.

sudo netstat -tlpn

La salida se muestra a continuación con Apache2 escuchar ::: 8080.

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address     Foreign Address      State    PID/Program name
tcp        0      0 0.0.0.0:22        0.0.0.0:*            LISTEN   1086/sshd
tcp6       0      0 :::8080           :::*                 LISTEN   4678/apache2

Nginx está configurado y ejecutándose como servidor web frontal en el puerto, mientras que Apache está configurado para ejecutarse en el back-end en el puerto 8080. Nginx redirige el tráfico del proxy a medida que continúa ofreciendo contenido estático.

Conclusión

Lo más importante que obtenemos de esta configuración simple es que Apache y Nginx pueden trabajar y trabajarán juntos. Puede surgir un problema si ambos están escuchando en los mismos puertos. Al proporcionarles varios puertos para escuchas clandestinas, la funcionalidad de su sistema está asegurada.