Prerrequisitos
Instalar Apache2
Configuración de Apache2
Lo primero que debemos hacer es cambiar el puerto predeterminado que usa Apache2, por lo que usaremos el puerto 8000 en lugar del 80. Desde la terminal damos este comando:
sudo nano /etc/apache2/ports.conf
Buscamos la línea:
Listen 80
Cambiemos la puerta:
Listen 8000
Guarde y cierre el archivo.
Ahora cambiemos el puerto en VirtualHost. Siempre desde la terminal:
sudo nano /etc/apache2/sites-available/000-default.conf
Estamos buscando:
<VirtualHost *:80>
Cambiemos la puerta:
<VirtualHost *:8000>
Guarde y cierre el archivo.
Podemos instalar un módulo Apache2 libapache2-mod-rpaf que tiene la tarea de cambiar la dirección del cliente remoto visible para otros módulos de Apache.
sudo apt-get -y install libapache2-mod-rpaf
Reiniciamos Apache2:
sudo service apache2 restart
Instalación y configuración de Nginx
Para más detalles lea la guía sobre Nginx
Desde la terminal:
sudo apt install nginx
Activemos el inicio automático de Nginx:
sudo systemctl enable nginx.service
Reiniciamos Nginx:
sudo service nginx restart
Encontraremos configuraciones de proxy predeterminadas en el siguiente archivo:
sudo nano /etc/nginx/proxy_params
Agreguemos las siguientes configuraciones de proxy estándar:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;
Guarde y cierre el archivo.
Abramos el archivo de configuración de Nginx:
sudo nano /etc/nginx/sites-available/default
Esta es una configuración básica que nos permite usar Nginx como proxy inverso Apache2:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location /{
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
}
}
Reiniciemos Nginx
sudo service nginx reload
Nginx es más rápido que Apache en el servicio de archivos estáticos como Js y CSS, por lo que configuramos Nginx para entregar archivos estáticos directamente y enviar solicitudes PHP a Apache:
server {
listen 80;
server_name default_server;
root /var/www/html;
index index.php index.htm index.html;
location /{
try_files $uri $uri//index.php;
}
location ~ \.php$ {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
}
location ~* \.(js|css|jpg|jpeg|gif|png|svg|ico|pdf|html|htm)$ {
expires 30d;
}
}
Guarde y cierre el archivo. Verifiquemos la configuración correcta de Nginx:
sudo nginx -t
Entonces reiniciamos Nginx si no hemos cometido ningún error se reiniciará sin problemas:
sudo service nginx restart