Instalando un servidor LEMP. II NGINX

Servidor LEMP, NGINX

Seguimos con la instalación de nuestro servidor LEMP y si en el capitulo anterior instalamos PHP en nuestra Raspberry, ahora le toca el turno a Nginx, el servidor web.


Nginx

Continuamos con la E de la pronunciación en inglés ényin-ex. Instalamos:

sudo pacman -S nginx

Empezaremos averiguando cuantos núcleos tiene nuestro procesador para aprovecharlos todos. Ejecutaremos el siguiente comando para determinar el numero de ellos:

cat /proc/cpuinfo| grep processor | wc -l

El resultado sera el valor a introducir en la directiva worker processes del fichero nginx.conf.

Renombramos el fichero de configuración:

sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.jfe

Y lo creamos de nuevo:

sudo nano /etc/nginx/nginx.conf
user http http;
worker_processes 4;

events {
        worker_connections  1024;
        use epoll;
}

http {
      sendfile on;
      tcp_nopush on;
      tcp_nodelay on;
      keepalive_timeout 30;
      types_hash_max_size 4096;
      server_tokens off;

      include /etc/nginx/mime.types;
      default_type application/octet-stream;

      error_log /var/log/nginx/error.log;

      gzip on;
      gzip_disable "MSIE [1-6]\.(?!.*SV1)";
      gzip_http_version 1.1;
      gzip_vary on;
      gzip_proxied any;
      gzip_comp_level 6;
      gzip_buffers 16 8k;
      gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

      server_names_hash_bucket_size 128;

      connection_pool_size 256;
      client_header_buffer_size 1k;
      large_client_header_buffers 4 2k;
      request_pool_size 4k;

      client_max_body_size 20M;

      output_buffers 1 32k;
      postpone_output 1460;

      include /etc/nginx/sites-enabled/*;
}

Comprobamos la sintaxis con el comando:

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

Activamos y arrancamos el servicio:

sudo systemctl enable nginx
sudo systemctl start nginx

Server Blocks en nginx

Podemos gestionar varios dominios utilizando los bloques de servidor, comparables a los virtualhosts en Apache.

Añadiremos el usuario al grupo http:

sudo gpasswd -a usuario http

Verificamos:

groups usuario
lp wheel http games video audio optical storage scanner power users

Cambiamos los permisos del acceso a la ruta del servidor:

sudo chown root:http /srv/http/
sudo chmod g+w /srv/http/

Creamos los directorios necesarios para los bloques:

sudo mkdir -p /etc/nginx/sites-{available,enabled}

Para evitar tener que poner el mismo bloque de configuración en todos los hosts que permitamos la ejecución de PHP, vamos a crear un archivo php.conf con la configuración necesaria y lo incluiremos en los hosts:

sudo nano /etc/nginx/php.conf
location ~ \.php$ {
                   #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
                   fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
                   fastcgi_index index.php;
                   include fastcgi.conf;
}

Ahora si, creamos el primer bloque:

sudo nano /etc/nginx/sites-available/first_server
server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /srv/http/first_server/public_html;
        index index.html index.htm;

        server_name first_server.rpi4.*;

        access_log /var/log/nginx/first_server.access.log;
        error_log /var/log/nginx/first_server.error.log;

        location / {
                    index index.html index.htm index.php;
                    autoindex on;
                    autoindex_exact_size off;
                    autoindex_localtime on;
        }

        location = /50x.html {
                              root   /usr/share/nginx/html;
        }

        # Configuración PHP
        include php.conf;

        location ~ /\.ht {
            deny  all;
        }

        error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;

}

Creamos el enlace simbólico en sites-enabled:

sudo ln -s /etc/nginx/sites-available/first_server /etc/nginx/sites-enabled

Rutas

Vamos a crear en la ruta que deseemos, las carpetas necesarias:

sudo mkdir -p /srv/http/first_server/public_html

Damos propiedad a los directorios recién creados:

sudo chown -R http:http /srv/http/first_server/public_html

y permisos:

sudo chmod g+w /srv/http/

Creamos un sencillo fichero html para probar que funciona nuestro primer host virtual:

sudo nano /srv/http/first_server/public_html/index.html

  
     jaumeferre.net
  
  
     

Hurra! NGINX esta funcionando correctamente con jaumeferre.net!

my first virtualhost

Repetiremos el proceso para cada uno de los servidores virtuales que queremos gestionar, teniendo en cuenta que sólo se puede declarar 1 único servidor por defecto y se le indica a nginx en las lineas:

# para IPv4
listen 80 default_server;

# para IPv6
listen [::]:80 default_server ipv6only=on;

para conocer qué servidor por defecto tenemos, basta con ejecutar:

grep -R default_server /etc/nginx/sites-enabled/

No nos olvidemos de abrir el puerto http:

sudo ufw allow 80/tcp

ni tampoco el correspondiente a https:

sudo ufw allow 443/tcp

Reiniciamos el servicio

sudo systemctl restart nginx

Si vamos a utilizar la Raspberry como servidor web debemos añadir en el fichero /etc/hosts del equipo cliente la linea correspondiente:

sudo nano /etc/hosts
#
# /etc/hosts: static lookup table for host names
#

#      
127.0.0.1       localhost.localdomain   localhost
::1             localhost.localdomain   localhost

192.168.1.60     first_server.test

# End of file

Ahora, desde nuestro navegador favorito escribimos la dirección:

http://first_server.rpi4.test/

Nos debería aparecer:

Hurra! NGINX esta funcionando correctamente con first_server.rpi.test!
my first virtualhost

De la misma manera, si hemos creado mas de un servidor virtual, cambiando la dirección en el navegador, deberíamos ir cambiando de sitio.

Ya solo nos quedaría configurar Fail2ban, que podemos seguir desde aquí.

Soy un entusiasta de las nuevas tecnologías, apasionado por explorar su potencial innovador. Colecciono CDs en formato físico y disfruto creando mezclas musicales. Además, la fotografía es otra de mis pasiones, capturando momentos y expresiones con cada disparo.
¡Gracias por leerme!

Valora este artículo1 2 3 4 5 (0 votos)

(0 votos)

Categorias del blog

twitter

Últimos tweets