Nginx o "motor-x " es un servidor web de alto rendimiento con bajo uso de memoria, creado por Igor Sysoev en 2002. Nginx no es solo un servidor web, puede usarse como un proxy inverso para muchos protocolos como HTTP, HTTPS, POP3, SMTP e IMAP y también como equilibrador de carga y caché HTTP.
Apache es el software de servidor web más popular mantenido por la comunidad de código abierto bajo Apache Software Foundation. Hay muchos módulos complementarios disponibles para apache, como la compatibilidad con WebDav o firewalls de aplicaciones web como mod_security, y es compatible con muchos lenguajes de programación web como Perl, Python, PHP a través de módulos nativos o mediante interfaces cgi, fcgi y FPM.
En este tutorial, instalaré y configuraré Nginx como un proxy inverso de almacenamiento en caché para un servidor web Apache en Ubuntu 15.10, Nginx se usa como front-end y Apache como back-end. Nginx se ejecutará en el puerto 80 para responder a las solicitudes de un usuario/navegador, la solicitud se reenviará al servidor apache que se ejecuta en el puerto 8080.
Paso 1 - Instalar Apache y PHP
Inicie sesión en su servidor ubuntu con SSH y conviértase en usuario root ejecutando:
sudo su
Luego instale apache con el comando apt-get:
apt-get install apache2
Una vez instalado apache, debemos instalar PHP como módulo de apache para este tutorial:
apt-get install php5 php5-mysql libapache2-mod-php5
Paso 2:configurar Apache y PHP
De forma predeterminada, apache escucha en el puerto 80. Tenemos que configurar apache para que se ejecute en el puerto 8080 para nuestra configuración de proxy, ya que nginx usará el puerto 80 más adelante.
Si desea cambiar el puerto para el servidor web apache, debe editar el archivo de configuración de apache "/etc/apache2/ports.conf", y luego continuar con la configuración del host virtual en "/etc/apache2/sites-disponible/ " directorio.
Primero cambie el puerto de apache a 8080 editando el archivo "ports.conf" con el editor vim:
vim /etc/apache2/ports.conf
En línea 5 , cambie el puerto 80 a 8080.
Listen 8080
Guardar y salir.
Ahora ve al directorio virtualhost y edita el archivo "000-default.conf":
cd sites-available/
vim 000-default.conf
Asegúrese de que su configuración sea la misma que se muestra a continuación:
<VirtualHost *:8080> ServerName www.reverse.com ServerAlias reverse.com ServerAdmin [email protected] DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Guardar y salir.
A continuación, pruebe la configuración y reinicie apache:
apachectl configtest
systemctl restart apache2
Finalmente verificamos que apache y php estén funcionando. Cree un nuevo archivo con el nombre "info.php" en el directorio "/var/www/html/".
cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php
Visite su sitio www.reverse.com:8080/info.php .
El resultado debería ser similar a la captura de pantalla anterior.
Paso 3:instalar Nginx
Instale Nginx con el siguiente comando apt-get:
apt-get install nginx
Paso 4:configurar Nginx
Una vez que Nginx esté instalado, configure Nginx para que actúe como proxy inverso para el servidor web apache que se ejecuta en el puerto 8080.
Vaya al directorio de configuración de nginx y edite el archivo "nginx.conf":
cd /etc/nginx/
vim nginx.conf
Habilite la compresión Gzip para Nginx descomentando las líneas gzip:
# Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
más importante es:
gzip en :para activar la compresión gzip.
tipos_gzip :es una lista de tipos MIME a los que desea convertir la compresión.
gzip_proxied cualquiera :es habilitar la compresión para la solicitud de proxy.
Justo debajo de la configuración de gzip, agregue esta configuración de caché de proxy:
# Proxy Cache Settings proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;
El directorio para el caché del proxy es /var/cache.
niveles es una directiva que le dice a Nginx cómo se guarda el caché en el sistema de archivos.
clave_zona es solo un nombre de la zona de caché, puede elegirlo libremente, pero no agregue caracteres especiales o espacios en blanco en el nombre. Usaré el nombre "reverse_cache " aquí.
Guardar y Salir.
Ahora configuraremos un host virtual en el directorio "/etc/nginx/sites-disponible".
En este tutorial, crearé un nuevo archivo de configuración de virtualhost llamado "reverse.conf". Acabo de llegar al directorio y crear un nuevo archivo con vim:
cd /etc/nginx/sites-available
vim reverse.conf
Pegue la configuración a continuación:
server { listen 80; # Site Directory same in the apache virtualhost configuration root /var/www/html; index index.php index.html index.htm; # Domain server_name www.reverse.com reverse.com; location / { try_files $uri $uri/ /index.php; } # Reverse Proxy and Proxy Cache Configuration 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; # Cache configuration proxy_cache reverse_cache; proxy_cache_valid 3s; proxy_no_cache $cookie_PHPSESSID; proxy_cache_bypass $cookie_PHPSESSID; proxy_cache_key "$scheme$host$request_uri"; add_header X-Cache $upstream_cache_status; } # Enable Cache the file 30 days location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ { proxy_cache_valid 200 120m; expires 30d; proxy_cache reverse_cache; access_log off; } # Disable Cache for the file type html, json location ~* .(?:manifest|appcache|html?|xml|json)$ { expires -1; } location ~ /\.ht { deny all; } }
Guardar y salir.
Luego active la nueva configuración de virtualhost:
ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/
Finalmente probaremos la configuración de nginx y reiniciaremos nginx:
nginx -t
systemctl restart nginx
Nginx está configurado como proxy inverso ahora. Puedes probarlo con curl:
curl -I www.reverse.com
Control de caché:sin caché significa index.html y todos los archivos terminados en .html no se almacenarán en caché.
Otra prueba:
curl -I www.reverse.com/info.php
Caché X:HIT significa que la página está siendo servida por el caché de Nginx.
Paso 5:configurar el registro
En este paso, configuraré apache para registrar la IP real del visitante en lugar de la IP local.
Instale el módulo de apache "libapache2-mod-rpaf" y edite el archivo de configuración del módulo:
sudo apt-get install libapache2-mod-rpaf
cd /etc/apache2/mods-available/
vim rpaf.conf
Agregue la IP del servidor a la línea 10 . Mi servidor tiene la IP:192.168.1.108.
RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1
Guardar y salir.
Ahora reinicie Apache:
systemctl restart apache2
Pruebe rpaf viendo el registro de acceso de apache con el comando tail:
tail -f /var/log/apache2/access.log
Eso es todo.
Nginx se instala como proxy inverso frente al servidor web Apache. Si un visitante solicita un archivo php, la solicitud se pasará a apache en el puerto 8080 y podrá ver la IP real del visitante en el archivo de registro de apache.
Conclusión
Nginx es un servidor web rápido y popular con poco uso de memoria que puede actuar como servidor web y proxy inverso para el protocolo HTTP y HTTPS. El proxy inverso de Nginx para apache es una configuración que usa Nginx como front-end y apache como back-end. Nginx maneja la solicitud entrante del navegador y la pasa al backend de apache. En este tutorial, hemos configurado una configuración para nginx como caché http que almacena en caché las solicitudes de archivos PHP y las imágenes.