¿Cómo instalar NGINX en Alpine Linux?

Español

Nginx es un servidor web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3).

Características básicas

Puede ver todas las características de NGINX en:

Le puede insteresar:

Instalar

# apk add nginx
fetch https://ams.edge.kernel.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz
(1/4) Installing pcre (8.44-r0)
(2/4) Installing nginx (1.20.1-r3)
Executing nginx-1.20.1-r3.pre-install
Executing nginx-1.20.1-r3.post-install
(3/4) Installing nginx-openrc (1.20.1-r3)
(4/4) Installing nginx-vim (1.20.1-r3)
Executing busybox-1.33.1-r3.trigger
OK: 264 MiB in 72 packages

Comprobar los módulos disponibles

# nginx -V
nginx version: nginx/1.20.1
built with OpenSSL 1.1.1k  25 Mar 2021
TLS SNI support enabled
...

Ficheros de configuración

A continuación mostramos donde se encuentra los ficheros de configuración para el servidor web.

# tree /etc/nginx/
/etc/nginx/
├── fastcgi.conf
├── fastcgi_params
├── http.d
│   └── default.conf
├── mime.types
├── modules
├── nginx.conf
├── scgi_params
└── uwsgi_params

2 directories, 7 files

Directorio web

A continuación mostramos donde se alojaran nuestros sitios web, como se puede observar solo tenemos los ficheros para localhost

# tree /var/www/
/var/www/
└── localhost
    └── htdocs

2 directories, 0 files

Administrar el servicio

En esta parte aprenderemos cómo iniciar, detener o reiniciar el servicio nginx, para esto usaremos el sistema de inicialización OpenRC. OpenRC es el sistema de inicialización por defecto en distribuciones como Gentoo y Alpine Linux.

Comprobar estado

# rc-service nginx status
 * status: stopped

Iniciar

# rc-service nginx start
 * Caching service dependencies ...   [ ok ]
 * Starting nginx ...                 [ ok ]

Ahora puede comprobar si el servicio se inició correctamente

# rc-service nginx status
 * status: started

Iniciar con el sistema operativo

Puede asegurarse de que el NGINX se iniciará automáticamente después de un reinicio del sistema ejecutando el siguiente comando:

# rc-update add nginx default
 * service nginx added to runlevel default

Refrescar las configuraciones

Cada vez que realice un cambio en los ficheros de configuración primero verifique el cambio que hizo con el comando:

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

Y luego refresque las configuraciones con:

# rc-service nginx reload
 * Reloading nginx configuration ... [ ok ]

Reiniciar

# rc-service nginx restart
 * Stopping nginx ...  [ ok ]
 * Starting nginx ...  [ ok ]

Detener

# rc-service nginx stop
 * Stopping nginx ... [ ok ]

Creando Virtual Host

El alojamiento virtual permite alojar varios dominio en un mismo servidor, compartiéndose los recursos del servidor como la memoria y los ciclos del procesador.

Crear fichero de configuración

Sustituya librebyte por el nombre de su proyecto

# touch  /etc/nginx/http.d/librebyte.conf

Proxy génerico

En caso de que use NGINX como proxy génerico, ponga en su fichero de configuración la siguiente información

server {
	listen 80;
	
	# Put here you domain	
	#
	server_name midominio.com;

	# Max file size useful for file uploading 
	# 
	client_max_body_size 8M;
	
	location / {	
	    # NGINX acting as reverse proxy
	    #
	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    proxy_set_header X-Forwarded-Proto $scheme;
	    proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header Host $http_host;
	    #
	    # Set the backend url and port, port is optional for standard services
	    # when there is a variable as a part of proxy_pass URL a resolver is needed.
	    #
	    proxy_pass http://miurl.internal:port;
	}
}

Ajuste las directivas listen, server_name y proxy_pass de acuerdo a sus necesidade consulte: NGINX como proxy reverso para más información.

Proxy FastCGI

En caso de que use NGINX como proxy FastCGI, ponga en su fichero de configuración la siguiente información:

server {
    listen 80;
    server_name midominio.com;
    # Set the document root
    root /var/www/librebyte/htdocs;
    index index.php;
    
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    
    location / {
        # This is cool because no php is touched for static content.
        # include the "?$args" part so non-default permalinks doesn't break when
        # using query string
        try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ \.php$ {
    	fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }
    
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

Ajuste las directivas listen, server_name, root y fastcgi_pass de acuerdo a sus necesidades, con la configuración anterior todas las peticiones PHP las redirigimos a un servidor FastCGI (PHP-FPM. Consulte: ¿Cómo instalar NGINX en NetBSD? y Cómo instalar PHP 7.4 en Ubuntu 20.04 para más información.

Ahora creamos el DIR del proyecto:

mkdir -p /etc/nginx/http.d/librebyte/htdocs

En el DIR htdocs ponemos los ficheros públicos (css, javascripts, html) y fuera de htdocs los ficheros PHP, está configuración es válida si usamos un framework como Symfony en el caso de usar WordPress entonces puede poner todos los ficheros debajo del DIR htdocs.

Enlaces de interés

Proyecto NGINX

YouTube video

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.