-
Notifications
You must be signed in to change notification settings - Fork 13
/
Nginx.txt
executable file
·408 lines (313 loc) · 14.4 KB
/
Nginx.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
##### Guía de Nginx by dM #####
Nginx (pronunciado en inglés "engine X") es un servidor web/proxy inverso ligero
de alto rendimiento y un proxy para protocolos de correo electrónico
(IMAP/POP3).
======================
Ventajas de usar Nginx
======================
Se trata de un software multiplataforma, por lo tanto podremos instalarlo en la
mayoría de nuestros servidores.
Consume menos recursos que la mayoría de servicios que hacen su misma función.
Nos proporciona un alto rendimiento soportando mayor carga y respondiendo mejor
que sus competidores.
Puede ser usado como proxy inverso cacheando el contenido de nuestros sitios web.
Podemos integrarlo junto con Apache, de forma que Nginx procese contenido
estático y Apache contenido dinámico.
Puede usarse como balanceador de carga entre varios servidores, permitiéndonos
así una mayor facilidad a la hora de escalar nuestros servidores.
Es compatible con una gran variedad de CMS y aplicaciones actuales como pueden
ser: Wordpress, Drupal, Prestashop, y muchas más.
El proyecto Nginx tiene detrás a la empresa Nginx Inc. y también cuenta con el
apoyo de una gran comunidad contribuyendo a mejorar y resolver dudas. También
podemos recurrir a soporte profesional.
============================
Inconvenientes de usar Nginx
============================
No se integra con PHP de forma nativa. Es necesario usar FastCGI para poder
integrarlo.
===========
Instalación
===========
No debe estar instalado Apache porque puede dar problemas, como por ejemplo
que ambos servidores usan algunos puertos por defecto, lo que conlleva a
colisiones.
# apt-get install nginx
Si visitamos 127.0.0.1 ó la ip de la máquina asignada por red veremos
la plantilla por defecto de Nginx, que significa que está corriendo
el servicio. Esta plantilla esta en /var/www/index.html
$ sudo systemctl stop nginx // To stop your web server
$ sudo systemctl start nginx // To start the web server when it is stopped, type.
# service nginx start // En versiones anteriores de nginx.
$ sudo systemctl restart nginx // To stop and then start the service again
# service nginx reload // En versiones anteriores de nginx.
$ sudo systemctl reload nginx // If you are simply making configuration changes, Nginx can often reload without dropping connections.
##### Archivos de configuración de Nginx #####
Los archivos de configuración de Nginx se encuentran en /etc/nginx/
.
├── conf.d
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── naxsi_core.rules
├── naxsi.rules
├── naxsi-ui.conf.1.4.1
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│ ├── default
├── sites-enabled
│ ├── default -> ../sites-available/default
├── uwsgi_params
└── win-utf
// Donde el archivo de configuración principal es nginx.conf y los directorios principales
// de configuración son sites-available y sites-enabled.
// El archivo de configuración principal es donde configuraríamos las opciones
// del servidor web Nginx que afectan a todos los hosts
// virtuales que tengamos configurados (todas las página web alojadas).
// En el directorio sites-available crearíamos los archivos de configuración
// específicos de cada host virtual.
En el directorio sites-enabled crearíamos enlaces simbólicos a los archivos de configuración que hayamos creado
en sites-available, para que Nginx tenga en cuenta esa configuración (activarla).
Se puede observar que por defecto tenemos creado el archivo de configuración "default" que está habilitado y por eso tiene un enlace
simbólico en "sites-enabled".
Para ver la configuración de nginx del sitio disponible:
--> /etc/nginx/sites-enabled/nombre_del_sitio
Si se quiere comprobar la sintaxis de los archivos de configuración luego de realizar algun cambio,
o si es la primera vez que se configura, usaremos el siguiente comando:
# nginx -t
Si todo está bien, la salida sería algo como esto:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Si hay algun error, en este ejemplo, unas "sssssss" al principio del fichero, entonces el error sería:
nginx: [emerg] unknown directive "ssssssssssssss" in /etc/nginx/sites-enabled/www.name-site.com:3
nginx: configuration file /etc/nginx/nginx.conf test failed
##### Ver los logs #####
Para ver los logs del sitio disponible:
--> /var/log/nginx/nombre_del_sitio.xxx.log
Para ver en tiempo real el log de accesos del server del sitio:
/var/log/nginx# tailf nombre_del_sitio.ve.access.log
Para ver en tiempo real el log de errores del server del sitio:
/var/log/nginx# tailf nombre_del_sitio.ve.error.log
##### A debugging log #####
To enable a debugging log, nginx needs to be configured to support debugging during the build:
./configure --with-debug .../tailf
Then the debug level should be set with the error_log directive:
#error_log /path/to/log error; // Normal error log.
error_log /path/to/log debug;
$ sudo systemctl restart nginx // Reiniciamos para que se aplique el cambio.
Ahora si vemos el error log con $ tailf nombre_del_sitio.ve.error.log
veremos una especie de monitor que nos mostrará otra o mas información
que el error.log normal.
##### Borrar nginx #####
# apt-get purge nginx nginx-common
# apt-get autoremove
#######################
##### Nginx + PHP #####
#######################
// Ejemplo de configuración del fichero /etc/nginx/sites-available/default
// para servir proyectos de php:
server {
listen 80;
#root /usr/share/nginx/html;
### Aqui va la ruta donde tenemos el directorio del proyecto
root /var/www/html;
## Orden de prioridad de los archivos index
index index.php index.html index.htm;
server_name example.com;
location / {
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
####################################################################################
##### Archivo de configuración por defecto de /etc/nginx/site-available/defaul #####
####################################################################################
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##
# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# proxy_pass http://localhost:8080;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection 'upgrade';
# proxy_set_header Host $host;
# proxy_cache_bypass $http_upgrade;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}
Proxy
=====
Un Proxy es un servidor intermedio que actúa como un puente entre un cliente
(como un navegador web) y otro servidor (como un servidor web). Su función
principal es enviar y recibir solicitudes en nombre del cliente, lo que puede
ofrecer varias ventajas según cómo esté configurado.
Funciones y Usos de un Proxy:
Anonimato y Privacidad: Los proxies pueden ocultar la dirección IP del cliente,
haciendo que las solicitudes parezcan provenir del proxy en lugar del cliente.
Esto ayuda a proteger la identidad y la ubicación del usuario.
Filtrado de Contenidos: Un proxy puede bloquear el acceso a ciertos sitios web o
contenido no deseado. Esto es común en entornos corporativos o escolares, donde
se quieren imponer políticas de uso de Internet.
Mejora del Rendimiento (Caching): Los proxies pueden almacenar en caché
(cachear) respuestas de servidores web. Esto significa que si varios usuarios
solicitan el mismo contenido, el proxy puede servir la copia cacheada sin tener
que solicitarla nuevamente al servidor de origen, mejorando la velocidad de
acceso y reduciendo el ancho de banda.
Acceso a Recursos Restringidos: Algunas veces, los usuarios emplean proxies para
acceder a contenido que está bloqueado en su región geográfica. El proxy, al
estar en una ubicación diferente, puede tener acceso al contenido y luego
enviárselo al usuario.
Seguridad: Los proxies pueden actuar como un cortafuegos, analizando y filtrando
el tráfico que pasa a través de ellos para detectar amenazas potenciales.
Control de Uso de Internet: En redes corporativas, los proxies pueden usarse
para monitorear y registrar las actividades en Internet de los usuarios,
ayudando a las organizaciones a asegurarse de que se cumplan sus políticas de
uso.
Tipos de Proxies:
Proxy HTTP: Maneja solicitudes y respuestas HTTP, adecuado para navegar por la
web.
Proxy HTTPS: Similar al proxy HTTP, pero maneja tráfico HTTPS, lo que permite el
acceso seguro a sitios web.
Proxy Transparente: No requiere ninguna configuración en el cliente. El cliente
ni siquiera sabe que su tráfico está pasando por un proxy.
Proxy Inverso: En lugar de actuar como intermediario para los clientes, un proxy
inverso actúa en nombre de uno o más servidores. Es comúnmente utilizado para
distribuir cargas de tráfico, asegurar servidores, y actuar como punto de
entrada para servicios web.
En resumen, un proxy es una herramienta versátil que puede mejorar la seguridad,
privacidad, rendimiento y control en una red informática.
Fuente
======
ChatGPT
Importancia de un Proxy inverso
===============================
Utilizar un proxy inverso como Nginx en la puesta en producción de una
aplicación web que maneja datos sensibles es crucial para mejorar la seguridad,
rendimiento y escalabilidad de la aplicación. Un proxy no solo protege los
servidores backend de ataques y sobrecargas, sino que también optimiza la
entrega de contenido y facilita la administración de la infraestructura.
Implementar un proxy inverso correctamente configurado es una de las mejores
prácticas esenciales para asegurar la integridad y disponibilidad de datos en
una aplicación web.
Tomando en cuenta que el kavac es un aplicación que guarda datos confidenciales
de la institución o empresa es necesario que en el despliegue se tome en cuenta
un proxy inverso.
Nginx como servidor
===================
Nginx se utiliza como proxy inverso en la aplicación KAVAC para manejar diversas
responsabilidades críticas que optimizan la seguridad, el rendimiento y la
escalabilidad de la aplicación.
• Balanceo de Carga: Nginx distribuye las solicitudes entrantes entre varios
servidores backend de KAVAC, asegurando que ninguna máquina se sobrecargue y que
los recursos se utilicen de manera eficiente.
• Escalabilidad Horizontal: Permite añadir o quitar servidores backend
fácilmente sin interrumpir el servicio, lo que facilita la escalabilidad de la
aplicación.
• Terminación SSL/TLS: Nginx maneja la terminación de SSL/TLS, asegurando que
todo el tráfico entre los usuarios y el servidor esté encriptado y protegido
contra ataques de intermediarios.
• Oculta la Infraestructura: Al actuar como intermediario, Nginx oculta la
infraestructura del backend, haciendo más difícil para los atacantes dirigirse
a los servidores de la aplicación.
• Caché de Contenido Estático: Nginx puede almacenar en caché contenido estático
como imágenes, scripts y hojas de estilo, reduciendo la carga en los servidores
backend y mejorando los tiempos de respuesta para los usuarios.
• Compresión de Datos: Nginx puede comprimir respuestas antes de enviarlas al
cliente, lo que reduce el uso del ancho de banda y acelera la entrega de
contenido.
• Persistencia de Sesión: Asegura que las solicitudes de un mismo usuario se
dirijan al mismo servidor backend, lo cual es esencial para mantener la
consistencia en las sesiones de usuario.
• Manejo de Conexiones WebSocket: Facilita la gestión de conexiones WebSocket
para aplicaciones en tiempo real, manteniendo las conexiones abiertas y
permitiendo la comunicación bidireccional.
• Logs Centralizados: Nginx registra todas las solicitudes y respuestas,
proporcionando un único punto para monitorear el tráfico y diagnosticar problemas.
======
Fuente
======
Curso en Línea técnico de despliegue del sistema ERP KAVAC