En este tutorial voy a enseñar a fusionar
NGINX como Proxy Estático ( Frontend )
+
Apache para servir contenido Dinámico (Backend)
Nginx es un servidor HTTP muy ligero, rápido y eficiente y muy bien pensado para trabajar como proxy inverso, y no solo para HTTP, sino que también soporta SMTP.
La desventaja de NGINX es que tenemos que instalar el modulo FPM para trabajar con contenido dinámico.
Apache Consume más memoria y recursos , pero aprovecharemos su potencia para mover el contenido Dinamico, su veterania y más funcionalidades extra que las que incluye NGINX.
¿Que beneficios tenemos al combinar? Los principales son:
- Más seguridad: Al trabajar las peticiones PHP a través de Proxy inverso, mejoramos bastante la seguridad.
- Mas rendimiento: Usaremos lo mejor de cada uno para sacar lo máximo
Bueno vamos al grano!! :x
Primero debemos tener instalado
>>NGINX (BASICO) A TRAVES DE ESTE TUTORIAL<<
( No nos hará falta en este caso instalar PHP en NGINX , ya que APACHE lleva módulos independientes )
Una vez configurado, vamos a editar el archivo de configuración de nuestra Web NGINX [por defecto /etc/nginx/sites-available/default] ,
para ello pondremos en el terminal SSH el siguiente comando:
Código: Seleccionar todo
sudo nano /etc/nginx/sites-available/default
Para ello pondremos esto:
Explicacion: http://127.0.0.1:8080 conecta por Proxy LAN hasta Apache por el puerto 8080.(NO MODIFICAR!)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;
}
El archivo de configuración NGINX quedaria mas o menos asi:
Código: Seleccionar todo
server {
listen 80 default_server;
server_name www.miweb.com;
root /var/www;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
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;
}
}
Control + X
tecleamos Y
ENTER
INSTALANDO APACHE:
Primero antes de nada, actualizamos Repositorios con:
Código: Seleccionar todo
sudo apt-get update
Código: Seleccionar todo
sudo apt-get install apache2
Vamos a editar el archivo:
Código: Seleccionar todo
sudo nano /etc/apache2/ports.conf
Código: Seleccionar todo
Listen 81
NameVirtualHost *:81
Código: Seleccionar todo
NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080
Control + X
tecleamos Y
ENTER
Ahora editaremos la configuración del sitio web (por defecto /etc/apache2/sites-available/000-default.conf)
Código: Seleccionar todo
sudo nano /etc/apache2/sites-available/000-default.conf
Explico lo más importante:<VirtualHost 127.0.0.1:8080>
ServerName www.ejemplo.com
ServerAdmin email@fororaspberry.es
DocumentRoot /var/www
<Directory "/var/www">
AllowOverride All
<IfModule sapi_apache2.c>
php_admin_flag engine on
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
</IfModule>
Order allow,deny
Allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Configuramos para que reciba entradas por ese puerto y dirección
El nombre de nuestra Web con .WWW<VirtualHost 127.0.0.1:8080>
La ruta donde esta ubicada nuestra WebServerName www.ejemplo.com
De nuevo indicando la ruta de nuestra Web , para activar todos los comandos dentro de <Directory>DocumentRoot /var/www
Ya estando todo configurado, guardaremos los cambios del archivo pulsando estas teclas, en este caso (putty ssh)<Directory "/var/www">
Control + X
tecleamos Y
ENTER[/i]
Instalamos módulos PHP si no los tiene:
Aqui he optado por instalar PHP5 y PHP7, por si queremos usar uno u otro (no interfieren en nada)
Podremos el comando:
Código: Seleccionar todo
sudo apt-get install php5 php7.0
Código: Seleccionar todo
sudo a2dismod php7.0
sudo a2enmod php5
Código: Seleccionar todo
sudo a2dismod php5
sudo a2enmod php7.0
Código: Seleccionar todo
sudo service apache restart
sudo service nginx restart
en nuestra carpeta de la WEB (en nuestro caso , ruta /var/www/ )
DESCARGAR AQUI
Accedemos desde el navegador a nuestra Web ,a través de la IP
Y YA TENEMOS NUESTRO PROXY INVERSO FUNCIONANDO PERFECTAMENTE :P :P
Si os ha gustado y os ha servido , por favor comentarme o darme "Like"



Hasta pronto
