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
- Servidor de archivos estáticos, índices y autoindexado.
- Proxy inverso con opciones de caché.
- Balanceo de carga.
- Tolerancia a fallos.
- Soporte de HTTP y HTTP2 sobre SSL.
- Soporte para FastCGI con opciones de caché.
- Servidores virtuales basados en nombre y/o en dirección IP.
- Soporte para autenticación.
- Compatible con IPv6
- Compresión gzip.
Puede ver todas las características de NGINX en:
Le puede insteresar:
- NGINX como proxy reverso
- ¿Cómo instalar NGINX en NetBSD?
- Cómo instalar Apache en Ubuntu 20.04
- ¿Cómo instalar el servidor web Apache en Android?
- Instalar y configurar Apache HTTP server
- Instalar certificado de seguridad Let’s Encrypt
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.