Nginx y Apache son servidores web innovadores de código abierto que se utilizan con PHP. Actualmente, Apache ha sido el servidor número uno de la mayoría de los sitios web desde su lanzamiento hace una década, mientras que Nginx ocupa el segundo lugar como servidor de elección para los sitios web activos. Cada servidor es popular por razones obvias: el rendimiento de Apache y la velocidad de Nginx son bien conocidos. Sin embargo, ambos servidores tienen algunas deficiencias. Apache se considera duro para la memoria del servidor, mientras que Nginx (ideal para archivos estáticos) necesita la ayuda de PHP-FPM o módulos similares para contenido dinámico.

En este artículo, lo ayudaremos a combinar los dos servidores para aprovechar sus fortalezas y eliminar las deficiencias. Usaremos Nginx como procesador estático y Apache como procesador para contenido de backend dinámico.

requisitos

Para comenzar los pasos de este artículo, necesitará lo siguiente:

  • Un servidor dedicado que ejecuta Ubuntu 16.04
  • Una cuenta de usuario estándar con permisos sudo en su servidor
  • Una dirección IP estática para este servidor

Empezado

Lo primero que debe hacer al instalar Nginx es asegurarse de que su servidor esté actualizado. Para actualizar su servidor, ejecute los siguientes comandos:

$ sudo apt-get update
$ sudo apt-get upgrade

Paso 1: instalar Nginx

Comience instalando nginx. Para hacer esto, ejecute el siguiente comando:

$ sudo apt-get install nginx

Una vez instalado, configure Nginx como proxy inverso y configúrelo para que se ejecute en la interfaz.

Paso 2: configurar Nginx

Una vez que Nginx está instalado, puede iniciar el proceso de configuración creando un nuevo archivo de hosts virtuales con el siguiente comando:

$ sudo nano /etc/nginx/sites-available/webproxy

Agregue la siguiente configuración a su archivo:

server {
        listen   80; 

        root /var/www/; 
        index index.php index.html index.htm;

        server_name example.com; 

        location / {
        try_files $uri $uri/ /index.php;
        }

        location ~ .php$ {
        
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;

         }

         location ~ /.ht {
                deny all;
        }
}

En esta configuración se han aplicado estos cambios:

  • La raíz se ha ajustado para especificar el directorio raíz.
  • La try_files Intente editar una página solicitada por un visitante. Si Nginx no puede cumplir con este requisito, se reenviará a su proxy.
  • La proxy_pass permite que nginx defina la dirección específica de su servidor proxy.
  • La localización Bloquear restringe el acceso al archivo .htaccess.

Ejecute el siguiente comando para verificar la sintaxis de configuración de Nginx:

$ sudo nginx -t

Si todo está bien, debería obtener el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, ejecute el siguiente comando para activar su host virtual:

$ sudo ln -s /etc/nginx/sites-available/proxyhost /etc/nginx/sites-enabled/webproxy

Luego, elimine el bloque del servidor de servicio Nginx predeterminado ejecutando el siguiente comando:

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

Inicie su servicio Nginx con el siguiente comando:

$ sudo /etc/init.d/nginx start

Si desea configurar Nginx para que se inicie en el arranque, ejecute el siguiente comando:

$ sudo update-rc.d nginx defaults

Paso 3: instalar Apache

Con Nginx habilitado, ahora puede instalar Apache para manejar las solicitudes de proxy.

Ejecute el siguiente comando para instalar Apache:

$ sudo apt-get install apache2

Hasta ahora, Nginx todavía está apagado, por lo que Apache se está ejecutando en el puerto 80.

Paso 4: configurar Apache

Hemos instruido a Nginx para que reenvíe el proxy al puerto 8080 donde Apache está esperando recibir solicitudes. Ahora deberíamos decirle a Apache que use el puerto 8080 y deje el puerto 80 para Nginx. Ahora abra los puertos de Apache para configurarlos en el puerto correcto en Apache.

Ejecute el siguiente comando para abrir su archivo de puertos Apache:

$ sudo nano /etc/apache2/ports.conf

Busque y edite las siguientes líneas para asegurarse de que Apache se esté ejecutando en el puerto preferido 8080 del host local:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

Guarda el archivo y cierra. Ahora reinicie su servicio Apache:

$ sudo /etc/init.d/apache2 restart

Puede configurar Apache para que se inicie en el arranque con el siguiente comando:

$ sudo update-rc.d apache2 defaults

A continuación, edite el archivo de host virtual predeterminado:

$ Sudo /etc/apache2/sites-enabled/000-default.conf

Asegúrese de que la configuración coincida con lo siguiente:

<VirtualHost 127.0.0.1:8080>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Guarde el contenido y salga. Luego reinicie los servicios de Nginx y Apache con el siguiente comando:

$ sudo /etc/init.d/apache2 restart
$ sudo /etc/init.d/nginx restart

Paso 5: instalar PHP5

Antes de probar, asegúrese de instalar PHP usando el siguiente comando:

$ sudo apt-get install php5

Guarde, salga y reinicie los servicios de Nginx y Apache para que surtan efecto los siguientes cambios:

$ sudo service apache2 restart
$ sudo service nginx restart

Paso 6: probar el proxy inverso de Nginx

Si ha configurado todo correctamente, puede probar la funcionalidad del proxy inverso de Nginx. Para hacer esto, ejecute el comando curl de la siguiente manera:

$ curl -I localhost

Debería ver el siguiente texto:

HTTP/1.1 200 OK
Server: nginx/1.6.2 (ubuntu)
Date: Wed, 28 July 2016 08:34:02 IST
Content-Type: text/html
Content-Length: 11321
Last-Modified: Tue, 31 June 2016 10:25:08 IST
Connection: keep-alive
Vary: Accept-Encoding
ETag: "564f1a7a-2c39"
Expires: Wed, 28 July 2016 08:34:31 IST
Cache-Control: no-cache
Accept-Ranges: bytes

resolución

Ahora todo está configurado, pero probaremos que la información del sistema se transmita a Apache ejecutando un script PHP rápido.

Crea tu archivo php.info con el siguiente comando:

$ sudo nano /var/www/info.php

Agregue estas líneas a su archivo:

<?
phpinfo( );
?>

Ahora guarde su archivo y salga. A continuación, abra su navegador e ingrese la siguiente dirección (reemplace el “dominio o dirección IP” con su nombre de dominio correcto.

http: //DOMAIN_OR_IP_ADDRESS/info.php

Esta página se mostrará:

Conclusión

A estas alturas, debería tener NGINX como proxy inverso para Apache en Ubuntu 16.04. La configuración exitosa de Nginx y Apache puede mejorar enormemente su servidor.

Si desea mejorar el rendimiento de sus servidores, le recomendamos que también cambie a un nuevo servicio de hosting más avanzado. Encuentre los mejores servicios de hosting web, así como opiniones de usuarios y precios de planes, en HostAdvice.

Echa un vistazo a estos 3 mejores servicios de hosting web