Diferencia entre revisiones de «Instalación, configuración e uso de nginx»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
(No se muestran 49 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 +
 +
[[File:Nginx_logo.png|right|200px]]
 +
 +
[[File:Namecheap_logo.png|right|200px]]
 +
 +
<br/>
 +
 +
[[File:Debian-OpenLogo.png|right|80px]]
 +
 +
[[File:Contabo_Logo.jpg|right|200px]]
 +
 +
= Prerrequisitos =
 +
A práctica pode levarse a cabo a través de máquinas virtuais en entorno local.
 +
 +
No aquí detallado, fíxose a través da contratación dun VPS (''Virtual Private Server'') en [https://contabo.com/en/storage-vps/ Contabo] e do dominio aclasedopeque.com en [https://www.namecheap.com/ namecheap.com]. Os cuestos de ambos non chegaron os 10€.
 +
 +
O sistema operativo utilizado foi Debian 11.
 +
 +
Podes atopar [https://contabo.com/blog/how-does-vps-work/ na web de contabo máis información sobre qué e un VPS].
 +
 +
Para todo o que imos facer a continuación, partiremos de que estamos traballando cun usuario root. Isto é en xeral unha mala práctica; en contornas de produción e mellor traballar cun usuario sen privilexios e elevar os mesmos mediante sudo so cando é preciso.
 +
 +
Tes máis información sobre [https://contabo.com/blog/a-practical-guide-to-superuser-accounts-sudo-root/ o usuario root na web de contabo]
 +
 +
= Hosting =
 +
En contabo, no momento de escritura deste artigo, hay opcións moi económicas por 4€ ou 5€ o mes. No noso caso optamos pola opción máis económica (sendo posible obter un prezo todavía mellor se o pagamento se fai anual en lugar de mensual):
 +
 +
<gallery>
 +
File:Opcion_hosting_contabo_VPS.PNG | Con almacenamento rápido NVMe |alt=Con almacenamento rápido NVMe
 +
File:Opcion_hosting_contabo_VPS_barato.PNG  | Máis económico e con máis almacenamento (pero menor rendemento) |alt= Máis económico e con máis almacenamento (pero menor rendemento)
 +
File:Contabo_imagenes_apps_y_paneles.PNG| Imáxenes de apps e paneles disponibles|alt= Imáxenes de apps e paneles disponibles
 +
File:Contabo_imagenes_OS.PNG | Imáxenes de sistemas operativos disponibles |alt= Imáxenes de sistemas operativos disponibles
 +
File:Opcion_hosting_contabo_order_summary.PNG | Opción escollida |alt= Opción escollida
 +
File:Redireccions_a_outros_dominios.PNG | [https://www.namecheap.com/support/knowledgebase/article.aspx/385/2237/how-to-redirect-a-url-for-a-domain/ Redireccións] a outros dominios|alt=Redireccións a outros dominios
 +
</gallery>
 +
 +
Algunhas reflexións interesantes para avaliar as diferentes opcións no refennte os discos duros se pensasemos nun proxecto real en producción:
 +
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
 +
* [https://contabo.com/blog/nvme-vs-ssd-vs-hdd/ NVMe vs SSD vs HDD Servers]
 +
* [https://contabo.com/blog/introducing-high-performance-vps-with-nvme-drives/ Introducing high performance VPS with NVMe drives]
 +
</div>
 +
 +
Tamén pode ser interesante coñecer os paneles de administración que poden facilitar algunhas tarefas:
 +
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
 +
* [https://contabo.com/blog/how-to-save-time-with-control-panels/ How to save time with Control Panels]
 +
* [https://contabo.com/blog/cpanel-vs-plesk-vs-webmin/ cpanel vs plesk vs webmin]
 +
</div>
 +
 +
Pasadas unhas horas, chegará un correo electrónico cos datos de acceso:
 +
 +
<gallery>
 +
File:Contabo_customer_control_panel.PNG | Panel de control de contabo |alt= Panel de control de contabo
 +
File:Contabo_my_VPS.PNG | Información do meu VPS |alt=  Información do meu VPS
 +
File:Contabo_my_VPS_ipv6.PNG | IPv6 e [https://contabo.com/blog/adding-ipv6-connectivity-to-your-server/ titorial para configuración]
 +
</gallery>
 +
 +
Hai algunhas indicacións iniciais de como empezar a traballar:
 +
* [https://contabo.com/blog/first-steps-with-contabo/ First steps with Contabo]
 +
 +
= Dominio e configuración DNS =
 +
A contratación do dominio fíxose con co proveedor [https://www.namecheap.com/ namecheap].
 +
 +
<gallery>
 +
File: namecheap_a_clase_do_peque_com.PNG | Búsqueda do dominio aclasedopeque para a súa contratación
 +
File: namecheap_configuracion_inicial_DNS.PNG | Configuración inicial DNS
 +
File: namecheap_configuracion_registros_A_DNS.PNG| Configuración dos primeiros rexistros A
 +
File: namecheap_configuracion_con_mas_registros_A_DNS.PNG | Configuración de máis rexistros A
 +
 +
</gallery>
 +
 +
Algúns enlaces de referencia para a configuración DNS:
 +
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
 +
* [https://youtu.be/YbJr7YPmDsQ What are the domain DNS options?]
 +
* [https://www.namecheap.com/support/knowledgebase/article.aspx/10275/2255/video-how-to-set-up-an-a-record-in-cpanel/ How to set up an A record in cpanel]
 +
* [https://www.namecheap.com/support/knowledgebase/article.aspx/10237/2255/video-how-to-connect-a-domain-name-to-your-shared-hosting/ How to connect a domain name to your shared hosting]
 +
* [https://www.namecheap.com/support/knowledgebase/article.aspx/579/2237/which-record-type-option-should-i-choose-for-the-information-im-about-to-enter/ Which record type option should I choose for the information I am about to enter]
 +
</div>
 +
 +
= Conexión á máquina por SSH ou VNC =
 +
== SSH ==
 +
Pódese levar a cabo con calquer cliente SSH, coma Putty ou o cliente multiplataforma Termius:
 +
 +
<gallery>
 +
File:Configuracion_ssh_putty.PNG| Conexión SSH con cliente Putty
 +
File:Configuracion_ssh_termius.PNG| Conexión SSH con cliente Termius
 +
File:acceso_mediante_ssh_a_maquina_debian_11_contabo.PNG | Acceso con éxito ó terminal
 +
</gallery>
 +
 +
En ambos casos será preciso:
 +
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
 +
# Introducir IP da máquina
 +
# Introducir usuario e contrasinal
 +
# Aceptar que se confía na conexión
 +
</div>
 +
 +
Pódese consultar [https://contabo.com/blog/establishing-connection-server-ssh/ o titorial do proveedor] para máis información.
 +
 +
'''INTERESANTE'''. Tamén e boa a recomendación que se da respecto o uso de chaves SSH no canto de constrasinais.
 +
From a security standpoint, we recommend all customers to use SSH Keys instead of traditional passwords while connecting via SSH. SSH Keys are like a “keycard” to access your server without a password. Read our [https://contabo.com/blog/how-to-use-ssh-keys-with-your-vps/ in-depth SSH Keys tutorial] to learn how to generate the keys, upload them on your server and set up all necessary parameters.
 +
 +
== VNC ==
 +
No correo de benvida podemos atopar a información cos parámetros requiridos para coa conexión VNC. Pódese realizar con diferentes clientes, e neste caso utilizaremos [https://uvnc.com/ UltraVNC].
 +
 +
<gallery>
 +
File:Conexion_con_cliente_UltraVNC.PNG | Parametros para a conexión con UltraVNC
 +
File:opcions_VNC_Control_Panel_Contabo.PNG | Opcións de VNC no Control Panel de Contabo
 +
</gallery>
 +
 +
 +
Pódese consultar [https://contabo.com/blog/vnc-connect-vps/ o titorial do proveedor] para máis información.
 +
 +
Coma se indica alí, e preferible a conexión por SSH por cuestións de seguridade.
 +
While VNC technology is very convenient and easy to use, it’s not ideal from a security standpoint.
 +
Please keep in mind that VNC access is not as safe as a connection via SSH or Windows Remote Desktop. Under normal circumstances, you should always connect to your server using methods that are more secure.
 +
We recommend using VNC only in case your server is not accessible via SSH or Remote Desktop.
 +
 +
= Instalación de Nginx =
 +
Para levar a cabo a instalación actualizamos o repositorio e instalamos o paquete nginx:
 +
apt update
 +
apt install nginx -y
 +
 +
Comprobamos que queda levantado:
 +
systemctl status nginx
 +
 +
= Comprender o funcionamento =
 +
Podemos instalar o comando tree que amosa os ficheiros xerárquicamente estruturados por cartafois:
 +
apt install tree
 +
 +
Accedemos a carpeta onde queda instalado nginx:
 +
cd /etc/nginx
 +
 +
Podemos executar tree para ver a estrutura de carpetas e ficheiros do programa:
 +
tree .
 +
 +
 +
conf.d configuraciones propias de nuestro servidor
 +
modules-enabled modulos que queramos activar
 +
proxy_params parámetros del proxy
 +
nginx.com No tocar. Configuración global.
 +
cd sites-available/
 +
cat default
 +
cd ../sites_enabled contiene enlaces simbolicos (un acceso directo que apunta al fichero real)
 +
nano default
 +
encriptacion punto a punto con nginx
 +
nano ngingx.conf
 +
 +
 +
= Configuración do firewall =
 +
Para instalar ufw:
 +
apt install ufw
 +
Para comprobar o seu estado:
 +
ufw status
 +
 +
[[File:Ufw_status.PNG|frame| Na captura vense as regras e algunhas outras (por exemplo 3306 é o porto por defecto de MySQL]]
 +
 +
Para levantalo:
 +
ufw enable
 +
 +
Para fixar reglas que permitan tráfico http e https:
 +
ufw allow 22
 +
ufw allow 80
 +
ufw allow 443
 +
ufw allow ssh
 +
ufw allow http
 +
ufw allow https
 +
 +
Para comprobar estado e recargar o firewal coas novas regras:
 +
ufw status
 +
ufw reload
 +
 +
= Comprobación de logs =
 +
nano nginx.conf
 +
 +
Podemos observar onde se ubican as rutas de access_log e error_log, e consultar os mesmos:
 +
cd /var/log/nginx/
 +
pico access.log
 +
pico error.log
 +
 +
= Configuración dun server block =
 +
Un server block en nginx e o equivalente os denominados virtual host en Apache.
 +
 +
Vemos la web por defecto:
 +
cd /var/www/html
 +
pico index.nginx-debian.html
 +
 +
Cualquier cambio que hagamos y guardemos en este fichero se verá reflejado cuando accedamos a través del navegador.
 +
 +
Accedemos a sites-available:
 +
cd /etc/nginx/sites-avaible
 +
 +
Podemos ver a configuración da web por defecto:
 +
pico default
 +
 +
'''MOI IMPORTANTE'''. Unha vez feitos cambios e preciso recargalos co comando:
 +
systemctl restart nginx
 +
 +
= Engadir un server block =
 +
cd /etc/nginx/sites-avaible
 +
 +
pico aclasedopeque.com                                                       
 +
server {
 +
  server_name aclasedopeque.com www.aclasedopeque.com;
 +
 +
  root /var/www/aclasedopeque.com/htdocs;
 +
}
 +
 +
cd /etc/nginx/sites-avaible
 +
ln -s /etc/nginx/sites-available/aclasedopeque.com /etc/nginx/sites-enabled/aclasedopeque.com
 +
systemctl restart nginx
 +
 +
Si accedemos a través del navegador, por ahora error 404 porque no existe la ruta /var/www/aclasedeopeque.com/htdocs.
 +
<pre>
 +
cd /var/www/
 +
mkdir aclasedopeque.com
 +
cd aclasedopeque.com
 +
mkdir htdocs
 +
cd htdocs
 +
pico index.html
 +
<h1>Esto es una prueba! </h1>
 +
</pre>
 +
 +
Accedemos co navegador a aclasedopeque.com ou www.aclasedopeque.com e amosa o texto:
 +
 +
= Troubleshooting =
 +
== Ferramentas de rede ==
 +
ping, traceroute,nslookup, host, dig
 +
 +
== systemctl ==
 +
Podes comprobar o estado do servizo con:
 +
systemctl status nginx
 +
 +
E sempre e preciso reinicialo tras facer cambios con:
 +
systemctl restart nginx
 +
 +
== nginx -t ==
 +
Para axuda na procura de erros de sintaxe nos ficheiros de configuración existe este comando:
 +
nginx -t
 +
 +
== revisar ficheiros de configuración ==
 +
Acceder a ruta:
 +
cd /etc/nginx/conf.d
 +
 +
Aquí poderíanse engadir novos ficheiros de configuración.
 +
 +
== erros frecuentes ==
 +
* duplicate default server error. Ver [https://stackoverflow.com/questions/30973774/nginx-duplicate-default-server-error/30974115#30974115 este fío]
 +
 +
= Ampliación =
 +
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
 +
* [[Configurando un proyecto Java con Spring Boot en nginx]]
 +
* [[Configurando un proyecto PHP con Wordpress en nginx]]
 +
* [[Configurando un proyecto Javascript con Angular en nginx]]
 +
</div>
  
 
= Referencias =
 
= Referencias =
* https://fp.josedomingo.org/serviciosgs/u03/nginx.html
+
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
 +
* [https://training-course-material.com/training/Category:Nginx NobleProg NGinx]
 +
* [https://manuais.iessanclemente.net/index.php/Alta_dispo%C3%B1ibilidade_en_servidores_Web#Nginx Alta disponibilidade en servidores web]
 +
* [https://openwebinars.net/academia/aprende/nginx-servidor-web-linux-debian/ Crea tu servidor web con Nginx sobre Linux]
 +
* [https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/ Server Block Examples]
 +
* [https://nginx.org/en/docs/http/configuring_https_servers.html Configuring HTTPS servers]
 +
</div>

Revisión actual del 12:07 21 abr 2023

Nginx logo.png
Namecheap logo.png


Debian-OpenLogo.png
Contabo Logo.jpg

Prerrequisitos

A práctica pode levarse a cabo a través de máquinas virtuais en entorno local.

No aquí detallado, fíxose a través da contratación dun VPS (Virtual Private Server) en Contabo e do dominio aclasedopeque.com en namecheap.com. Os cuestos de ambos non chegaron os 10€.

O sistema operativo utilizado foi Debian 11.

Podes atopar na web de contabo máis información sobre qué e un VPS.

Para todo o que imos facer a continuación, partiremos de que estamos traballando cun usuario root. Isto é en xeral unha mala práctica; en contornas de produción e mellor traballar cun usuario sen privilexios e elevar os mesmos mediante sudo so cando é preciso.

Tes máis información sobre o usuario root na web de contabo

Hosting

En contabo, no momento de escritura deste artigo, hay opcións moi económicas por 4€ ou 5€ o mes. No noso caso optamos pola opción máis económica (sendo posible obter un prezo todavía mellor se o pagamento se fai anual en lugar de mensual):

Algunhas reflexións interesantes para avaliar as diferentes opcións no refennte os discos duros se pensasemos nun proxecto real en producción:

Tamén pode ser interesante coñecer os paneles de administración que poden facilitar algunhas tarefas:

Pasadas unhas horas, chegará un correo electrónico cos datos de acceso:

Hai algunhas indicacións iniciais de como empezar a traballar:

Dominio e configuración DNS

A contratación do dominio fíxose con co proveedor namecheap.

Algúns enlaces de referencia para a configuración DNS:

Conexión á máquina por SSH ou VNC

SSH

Pódese levar a cabo con calquer cliente SSH, coma Putty ou o cliente multiplataforma Termius:

En ambos casos será preciso:

  1. Introducir IP da máquina
  2. Introducir usuario e contrasinal
  3. Aceptar que se confía na conexión

Pódese consultar o titorial do proveedor para máis información.

INTERESANTE. Tamén e boa a recomendación que se da respecto o uso de chaves SSH no canto de constrasinais.
From a security standpoint, we recommend all customers to use SSH Keys instead of traditional passwords while connecting via SSH. SSH Keys are like a “keycard” to access your server without a password. Read our in-depth SSH Keys tutorial to learn how to generate the keys, upload them on your server and set up all necessary parameters.

VNC

No correo de benvida podemos atopar a información cos parámetros requiridos para coa conexión VNC. Pódese realizar con diferentes clientes, e neste caso utilizaremos UltraVNC.


Pódese consultar o titorial do proveedor para máis información.

Coma se indica alí, e preferible a conexión por SSH por cuestións de seguridade.

While VNC technology is very convenient and easy to use, it’s not ideal from a security standpoint.
Please keep in mind that VNC access is not as safe as a connection via SSH or Windows Remote Desktop. Under normal circumstances, you should always connect to your server using methods that are more secure.
We recommend using VNC only in case your server is not accessible via SSH or Remote Desktop.

Instalación de Nginx

Para levar a cabo a instalación actualizamos o repositorio e instalamos o paquete nginx:

apt update
apt install nginx -y

Comprobamos que queda levantado:

systemctl status nginx

Comprender o funcionamento

Podemos instalar o comando tree que amosa os ficheiros xerárquicamente estruturados por cartafois:

apt install tree

Accedemos a carpeta onde queda instalado nginx:

cd /etc/nginx

Podemos executar tree para ver a estrutura de carpetas e ficheiros do programa:

tree .


conf.d configuraciones propias de nuestro servidor modules-enabled modulos que queramos activar proxy_params parámetros del proxy nginx.com No tocar. Configuración global. cd sites-available/ cat default cd ../sites_enabled contiene enlaces simbolicos (un acceso directo que apunta al fichero real) nano default encriptacion punto a punto con nginx nano ngingx.conf


Configuración do firewall

Para instalar ufw:

apt install ufw

Para comprobar o seu estado:

ufw status
Na captura vense as regras e algunhas outras (por exemplo 3306 é o porto por defecto de MySQL

Para levantalo:

ufw enable

Para fixar reglas que permitan tráfico http e https:

ufw allow 22
ufw allow 80
ufw allow 443
ufw allow ssh
ufw allow http
ufw allow https

Para comprobar estado e recargar o firewal coas novas regras:

ufw status
ufw reload

Comprobación de logs

nano nginx.conf

Podemos observar onde se ubican as rutas de access_log e error_log, e consultar os mesmos:

cd /var/log/nginx/
pico access.log
pico error.log

Configuración dun server block

Un server block en nginx e o equivalente os denominados virtual host en Apache.

Vemos la web por defecto:

cd /var/www/html
pico index.nginx-debian.html

Cualquier cambio que hagamos y guardemos en este fichero se verá reflejado cuando accedamos a través del navegador.

Accedemos a sites-available:

cd /etc/nginx/sites-avaible

Podemos ver a configuración da web por defecto:

pico default

MOI IMPORTANTE. Unha vez feitos cambios e preciso recargalos co comando:

systemctl restart nginx

Engadir un server block

cd /etc/nginx/sites-avaible
pico aclasedopeque.com                                                        
server {
 server_name aclasedopeque.com www.aclasedopeque.com;

 root /var/www/aclasedopeque.com/htdocs;
}
cd /etc/nginx/sites-avaible
ln -s /etc/nginx/sites-available/aclasedopeque.com /etc/nginx/sites-enabled/aclasedopeque.com
systemctl restart nginx

Si accedemos a través del navegador, por ahora error 404 porque no existe la ruta /var/www/aclasedeopeque.com/htdocs.

 cd /var/www/
 mkdir aclasedopeque.com
 cd aclasedopeque.com
 mkdir htdocs
 cd htdocs
 pico index.html
 <h1>Esto es una prueba! </h1>

Accedemos co navegador a aclasedopeque.com ou www.aclasedopeque.com e amosa o texto:

Troubleshooting

Ferramentas de rede

ping, traceroute,nslookup, host, dig

systemctl

Podes comprobar o estado do servizo con:

systemctl status nginx

E sempre e preciso reinicialo tras facer cambios con:

systemctl restart nginx

nginx -t

Para axuda na procura de erros de sintaxe nos ficheiros de configuración existe este comando:

nginx -t

revisar ficheiros de configuración

Acceder a ruta:

cd /etc/nginx/conf.d

Aquí poderíanse engadir novos ficheiros de configuración.

erros frecuentes

  • duplicate default server error. Ver este fío

Ampliación

Referencias