NGINX es un servidor web con excelente rendimiento y bajo consumo de memoria. NGINX también puede usarse como proxy reverso (FastCGI, Apache, uWSGI), como proxy para protocolos de correo (IMAP, POP3) y como balanceador de carga.
En este artículo instalaremos NGINX como proxy FastCGI, es decir las peticiones PHP que le hagamos a nuestro servidor web serán redirigidas a un servidor PHP-FPM.
Le puede interesar:
- pkgin, un administrador de paquetes para NetBSD
- NGINX como proxy reverso
- Instalar certificado de seguridad Let’s Encrypt
- Como instalar PHP en NetBSD
Instalar
# pkgin in nginx
calculating dependencies...done.
2 packages to install:
nginx-1.19.6 pcre-8.44
0 to refresh, 0 to upgrade, 2 to install
0B to download, 4698K to install
proceed ? [Y/n]
Administrar el proceso nginx
En esta parte aprenderemos cómo iniciar, detener o reiniciar el servicio nginx, para esto usaremos el «Administrador de sistema» de BSD que está compuesto por los servicios: init, rc y service
Agregar script de inicialización
El paquete nginx nos proporciona un script de ejemplo /usr/pkg/share/examples/rc.d/nginx así que bastaría con copiar dicho script para /etc/rc.d
# cp -v /usr/pkg/share/examples/rc.d/nginx /etc/rc.d/
/usr/pkg/share/examples/rc.d/nginx -> /etc/rc.d/nginx
Inicio automático
Añadimos la siguiente línea al fichero /etc/rc.conf la cuál indica que el servicio nginx se inicia automáticamente después de un reinicio del sistema operativo.
nginx=YES
Comprobar estado
# service nginx status
nginx is not running.
Iniciar
# service nginx start
Starting nginx.
puede comprobar el estado nuevamente
# service nginx status
nginx is running as pid 13875.
Reiniciar
Para aplicar cualquier modificación realizada al fichero de configuración debe reiniciar el servicio con el siguiente comando:
# service nginx restart
Stopping nginx.
Starting nginx.
Refrescar configuraciones
Es preferible usar el siguiente comando para refrescar las configuraciónes ya que el servicio recargará las configuraciones sin perder las conexiones.
# service nginx reload
Reloading nginx config files.
Detener el servicio
# service nginx stop
Stopping nginx.
Chequeando los ficheros de configuración
A continuación mostramos donde se encuentra los ficheros de configuración para el servidor web.
/usr/pkg/etc/nginx/
|-- fastcgi.conf
|-- fastcgi_params
|-- koi-utf
|-- koi-win
|-- mime.types
|-- nginx.conf
`-- win-utf
Creando Virtual Hosts
Desde mi punto de vista Debian organiza mejor las configuraciones de NGINX, Vea NGINX como proxy reverso, así que vamos a seguir su filosofía y crear los directorios sites-enabled y sites-available de esta manera podemos habilitar y deshabilitar Virtual Host de una manera más fácil, también creamos el directorio conf.d para configuraciones globales y el directorio snippets para configuraciones específicas.
# mkdir /usr/pkg/etc/nginx/sites-enabled
# mkdir /usr/pkg/etc/nginx/sites-available
# mkdir /usr/pkg/etc/nginx/conf.d
# mkdir /usr/pkg/etc/nginx/snippets
Ahora modificamos el fichero de configuración principal nginx.conf y agregamos las siguientes líneas al final de la sección http
##
# Virtual Host Configs
##
include /usr/pkg/etc/nginx/conf.d/*.conf;
include /usr/pkg/etc/nginx/sites-enabled/*;
Ahora tenemos la siguiente estructura de directorios:
/usr/pkg/etc/nginx/
|-- conf.d
|-- fastcgi.conf
|-- fastcgi_params
|-- koi-utf
|-- koi-win
|-- mime.types
|-- nginx.conf
|-- sites-available
|-- sites-enabled
|-- snippets
`-- win-utf
Ahora vamos a integrar NGINX con PHP-FPM consulte Como instalar PHP en NetBSD para más información.
Creamos una plantilla php-fpm-upstream.conf dentro de conf.d
# touch /usr/pkg/etc/nginx/conf.d/php-fpm-upstream.conf
y agregamos las siguiente líneas:
upstream php-fpm {
server 127.0.0.1:9000;
}
Ajuste la directiva server de acuerdo la configuración del pool de PHP-FPM a la cuál desea conectarse.
Creamos una plantilla php-fpm.conf dentro de snippets
# touch /usr/pkg/etc/nginx/snippets/php-fpm.conf
y agregamos las siguiente líneas:
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /usr/pkg/etc/nginx/fastcgi_params;
Creamos una plantilla proxy-php-fpm dentro de sites-available
# touch /usr/pkg/etc/nginx/sites-available/proxy-php-fpm
y agregamos:
server {
listen 80;
server_name midominio.com;
# Set the document root
root /var/www/midominio;
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$ {
include /usr/pkg/etc/nginx/snippets/php-fpm.conf;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
Configuramos nuestro primer sitio de acuerdo a la configuración anterior.
# cp -v /usr/pkg/etc/nginx/sites-available/proxy-php-fpm /usr/pkg/etc/nginx/sites-available/misitio
/usr/pkg/etc/nginx/sites-available/proxy-php-fpm -> /usr/pkg/etc/nginx/sites-available/misitio
Edite el fichero misitio y ajuste la directiva server_name luego active el sitio con:
# ln -s /usr/pkg/etc/nginx/sites-available/misitio /usr/pkg/etc/nginx/sites-enabled/misitio
Compruebe la configuración del NGINX:
# nginx -t
nginx: the configuration file /usr/pkg/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/pkg/etc/nginx/nginx.conf test is successful
Refresque las configuraciones:
# service nginx reload
Reloading nginx config files.
Rotación de logs
La rotación de logs es un mecanismo que permite vaciar los log cada cierto tiempo, manteniendo copias de los mismos. NetBSD usa newsyslog para realizar esta tarea, entonces agregamos las siguientes líneas a /etc/newsyslog.conf.
# echo '/var/log/nginx/access.log nginx:nginx 640 7 * 24 Z /var/run/nginx.pid SIGUSR1' >> /etc/newsyslog.conf
# echo '/var/log/nginx/error.log nginx:nginx 640 7 * 24 Z /var/run/nginx.pid SIGUSR1' >> /etc/newsyslog.conf