Cómo configurar Nginx como proxy inverso para Apache en un VPS Ubuntu 16.04 o un servidor dedicado

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.
Para comenzar los pasos de este artículo, necesitará lo siguiente:
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
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.
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:
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
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.
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
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
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
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á:
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.