Site is under maintenance mode. Please wait few min!
Saltar al contenido

Esenciales de la herramienta de claves de Java: Trabajando con Java Keystores

marzo 4, 2020

 

Nota: En el tiempo transcurrido desde publicación de este tutorial, Espacios digitalocean ha añadido una opción libre CDN con subdominios de punto final personalizables. Esta característica CDN proporciona la mayor parte de la funcionalidad que se trata más adelante, incluyendo el almacenamiento en caché, dominios personalizados, SSL, y moviendo los activos más cerca de sus usuarios.

Por favor, lea la documentación oficial Espacios producto para obtener información sobre cómo activar la CDN y personalizar el punto final CDN. Espacios

Introducción

digitalocean es un servicio de almacenamiento de objetos que es compatible con el API S3. En este tutorial le mostraremos cómo utilizar Nginx a las peticiones de proxy para objetos en tu espacio. Nginx recibirá HTTP (S) las peticiones de los usuarios y pasar a lo largo de los espacios del servicio, que enviará los resultados de vuelta a través de Nginx.

Algunas razones por las que puede querer poner un proxy Nginx delante de los espacios es:

  • añadir un dominio personalizado
  • añadir su propio almacenamiento en caché
  • utilizar su propio certificado SSL
  • utilizar diferentes mecanismos de control de acceso activos caché
  • en un centro de datos que está más cerca de sus usuarios

en este tutorial, vamos a configurar Nginx a las peticiones de respuesta en nuestro propio dominio (con certificados de cifrado SSL opcional de LET) y las reenvía a un espacio con activos pública . a continuación, vamos a añadir el almacenamiento en caché para acelerar las respuestas posteriores de los objetos de acceso frecuente.

Requisitos previos

Para completar este tutorial, usted debe tener lo siguiente:

  • Una Ubuntu 16.04 servidor con Nginx instalado, como se explica en el tutorial Cómo instalar Nginx en Ubuntu 16.04
  • Un nombre de dominio se refirió a su servidor, como por cómo configurar un nombre de host con digitalocean. Vamos a utilizar assets.example.com lo largo de este tutorial
  • Un espacio digitalocean. Usted puede aprender cómo crear un nuevo espacio mediante la lectura de Una Introducción a digitalocean Spaces.You’ll necesidad de conocer la dirección URL de su espacio individual. Puede encontrar que navegando a su espacio en el panel de control digitalocean. La URL es directamente debajo del nombre de espacio en la interfaz de usuario. Esto se puso de relieve en la siguiente imagen: Usted también necesitará un archivo subido a su espacio a las cosas de prueba con. Los espacios citado artículo muestra cómo se pueden subir archivos usando la interfaz gráfica de espacios web. Vamos a utilizar example.png para este tutorial.

Un espacio digitalocean. Usted puede aprender cómo crear un nuevo espacio mediante la lectura de Una Introducción a Espacios digitalocean.

Usted necesita saber la URL de su espacio individual. Puede encontrar que navegando a su espacio en el panel de control digitalocean. La URL es directamente debajo del nombre de espacio en la interfaz de usuario. Esto se puso de relieve en la siguiente imagen:

Usted también necesitará un archivo subido a su espacio a las cosas de prueba con. Los espacios citado artículo muestra cómo se pueden subir archivos usando la interfaz gráfica de espacios web. Vamos a utilizar example.png para este tutorial.

Configuración del proxy predeterminado

Una instalación de Nginx en Ubuntu devolverá un Bienvenido a la página de marcador de posición Nginx para todas las solicitudes. Tenemos que añadir una nueva configuración para contar Nginx a hacer otra cosa con peticiones a nuestro dominio.

Para ello, abra un nuevo archivo de configuración en / etc / nginx / sites-available:

sudo nano /etc
ginx/sites-available/assets.example.com

  • sudo nano /etc
    ginx/sites-available/assets.example.com

Esto abrirá una archivo en blanco en el editor de textos nano. Pegar en la siguiente configuración, asegurándose de reemplazar las partes resaltadas con su propio nombre de dominio y los espacios URL:

server {
listen 80;
listen [::]:80;
server_name assets.example.com;

location / {
proxy_pass https://example.nyc3.digitaloceanspaces.com/;
proxy_hide_header Strict-Transport-Security;
}
}

Guarde el archivo y salga del editor cuando haya terminado. Se trata de un bloque de servidor estándar Nginx. En primer lugar le decimos que para escuchar al puerto 80 en IPv4 e IPv6, y especifique el server que Nginx debe responder.

A continuación, creamos un bloque de ubicación. Cualquier directivas de configuración dentro de este bloque (entre los apoyos {y}) sólo se aplicarán a URLs específicos. En este caso, se especifica /, la URL de la raíz, por lo que todas las ubicaciones se corresponden con este bloque.

El PROXY_PASS directiva indica a Nginx para pasar a lo largo de las solicitudes al servidor especificado. La línea proxy_hide_header despoja a la estricta-Transporte-Seguridad de cabecera antes de pasar a la parte posterior respuesta al cliente. Espacios utiliza esta cabecera para obligar a todas las conexiones a través de HTTPS. La superación de esta cabecera a través de sus usuarios podría tener consecuencias no deseadas si su sitio es accesible en ambas conexiones HTTP y HTTPS.

Ahora que nuestra configuración está establecido, es necesario para que pueda. Esto se hace mediante la creación de un enlace con el archivo de configuración en el directorio / etc / nginx / sites-enabled / directorio:

sudo ln -s /etc
ginx/sites-available/assets.example.com /etc
ginx/sites-enabled/

  • sudo ln -s /etc
    ginx/sites-available/assets.example.com / etc / nginx / sites-enabled /

para comprobar nuestra sintaxis de configuración, ejecute nginx -t como root:

sudo nginx -t

  • sudo nginx -t

Outputnginx: the configuration file /etc
ginx
ginx.conf syntax is ok
nginx: configuration file /etc
ginx
ginx.conf test is successful

por último, recarga Nginx para recoger la nueva configuración: systemctl

sudo systemctl reload nginx

  • sudo recarga nginx

Con nuestro fichero de configuración establecido, vamos a probar el proxy.

Prueba

Proxy

Nos puede probar la conexión proxy utilizando rizo en la línea de comandos. encresparse -Voy a devolver sólo las cabeceras HTTP de una respuesta. Esto es suficiente para determinar que las cosas están funcionando bien.

En primer lugar, buscar a un objeto directamente desde el espacio utilizando la URL digitaloceanspaces.com. Vamos a utilizar nuestro archivo example.png:

curl -I https://example.nyc3.digitaloceanspaces.com/example.png

  • rizo -I https://example.nyc3.digitaloceanspaces.com/example.png

OutputHTTP/1.1 200 OK
Content-Length: 81173
Accept-Ranges: bytes
Last-Modified: Tue, 28 Nov 2017 21:19:37 GMT
ETag: "7b2d05a5bd1bfeebcac62990daeafd14"
x-amz-request-id: tx000000000000000002398-005a1edfcd-afba2-nyc3a
Content-Type: image/png
Date: Wed, 29 Nov 2017 16:26:53 GMT
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload

Podemos ver por el 200 OK en la primera línea de la salida que se trataba de una solicitud exitosa. El servidor devolvió el tamaño del archivo (Content-Length), el tipo de archivo (Content-Type) y alguna otra información relacionada fecha- y caché.

Ahora buscar el mismo archivo a través del proxy:

curl -I http://assets.example.com/example.png

  • rizo -I http://assets.example.com/example.png

OutputHTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 29 Nov 2017 16:27:24 GMT
Content-Type: image/png
Content-Length: 81173
Connection: keep-alive
Accept-Ranges: bytes
Last-Modified: Tue, 28 Nov 2017 21:19:37 GMT
ETag: "7b2d05a5bd1bfeebcac62990daeafd14"
x-amz-request-id: tx00000000000000000a045-005a1edfec-a89a3-nyc3a

La respuesta es prácticamente el mismo. El cambio más importante es un encabezado de servidor que identifica Nginx. Si la salida es similar, su proxy está funcionando correctamente!

En el siguiente paso, vamos a configurar el almacenamiento en caché para reducir el uso de ancho de banda entre el proxy y espacios, y para acelerar los tiempos de respuesta.

Configuración respuestas de caché El almacenamiento en caché hasta

A, Nginx necesita un lugar para almacenar las claves, los metadatos y el contenido de respuesta real. Vamos a configurar un directorio de caché en el directorio tmp / del sistema. Para ello, vamos a añadir un fragmento de configuración en un archivo nuevo en /etc
ginx/conf.d/. Abrir ese archivo ahora:

sudo nano /etc
ginx/conf.d/example-cache.conf

  • sudo nano /etc
    ginx/conf.d/example-cache.conf

pegar en la siguiente línea, a continuación, guardar y cerrar el archivo:

proxy_cache_path mp/example-cache/ levels=1:2 keys_zone=example-cache:16m max_size=10g inactive=60m use_temp_path=off;

Esta línea define algunas características de la memoria caché. Vamos a correr a través de las opciones:

  • / tmp / example-cache / es la ruta de acceso a la caché. niveles
  • = 1: 2 establece una jerarquía de dos niveles de directorios para almacenar contenido almacenado en caché. Poniendo demasiados archivos en un solo directorio puede causar problemas de velocidad y fiabilidad, por lo que Nginx se dividirá entre los archivos de varios directorios basados ​​en esta opción.
  • keys_zone = ejemplo- caché: 16m. Nombres de nuestra caché y establece 16 megabytes de memoria para almacenar las claves en esto debería ser suficiente memoria para almacenar datos de más de 100.000 llaves.
  • max_size = 10g limita el tamaño de la memoria caché de 10 gigabytes. Puede ajustar este para satisfacer sus necesidades de almacenamiento y uso.
  • medios inactivos = 60m Nginx se borrarán los archivos almacenados en caché después de 60 minutos si no se ha accedido en ese momento (incluso si el archivo sigue siendo válida y vigente). Si usted tiene una gran cantidad de objetos de los que se accede con poca frecuencia, es posible que desee tratar de incrementar este.
  • use_temp_path = off instruye Nginx para escribir archivos temporales en el directorio de caché, evitando potencialmente la necesidad de copiar archivos entre sistemas de ficheros, lo que podría afectar al rendimiento.

Ahora que hemos definido una memoria caché, tenemos que activarlo en nuestro bloque servidor, y configurar algunas opciones adicionales. Abrir un fichero de configuración de su sitio de nuevo:

sudo nano /etc
ginx/sites-available/assets.example.com

  • sudo nano /etc
    ginx/sites-available/assets.example.com

Añadir lo siguiente al final de su ubicación / bloque (después de la directiva proxy_hide_header, pero antes el cierre} soporte):

. . .
proxy_cache example-cache;
proxy_cache_valid 200 60m;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_revalidate on;
proxy_cache_lock on;

proxy_ignore_headers Set-Cookie;
add_header X-Cache-Status $upstream_cache_status;
. . .

Guardar y cerrar el archivo. Vamos a través de estas opciones de configuración, uno por uno:

  • proxy_cache dice Nginx cuales caché para su uso. En este caso se especifica ejemplo-caché, lo que acabamos de fijar en el archivo de ejemplo-cache.conf.
  • proxy_cache_valid instruye Nginx para considerar cualquier respuesta 200 válida durante 60 minutos. Esto significa que después del proxy obtiene con éxito un archivo de espacios, para los próximos 60 minutos Nginx utilizarán la copia en caché sin tener que pedir a los espacios para una actualización. Tenga en cuenta que si los objetos tienen un conjunto encabezado Cache-Control, el valor de la cabecera anulará esta configuración.
  • proxy_cache_use_stale permite Nginx para devolver un rancio (expirado) la respuesta si el servidor de espacios cada vez más el tiempo de espera, devuelve un error, o si la respuesta en caché está en proceso de actualización.
  • proxy_cache_revalidate permite el proxy revalidar en caché de archivos mediante peticiones GET condicionales. Esto significa que cuando un archivo almacenado en caché expira, y Nginx tiene que comprobar los espacios para los cambios, Nginx utilizará el If-Modified-Since o If-None-Match cabeceras para buscar solamente los objetos si ésta ha cambiado de hecho. Si no se ha actualizado, Espacios devolverá una respuesta 304 no modificado y Nginx simplemente marcarán la respuesta en caché existente como válida una vez más.
  • proxy_cache_lock pone un alto en las solicitudes posteriores a un objeto cuando el proxy ya es ir a buscar desde el servidor back-end. Cuando la primera solicitud está completa, las otras solicitudes a continuación, se servirá de la caché.
  • proxy_ignore_headers Set-Cookie hace caso omiso de las cookies, que pueden interferir con el almacenamiento en caché.
  • add_header X-Cache-Antigüedad … añade un encabezado con información sobre si o no la petición se suministró desde la memoria caché (HIT) o no (extraño). Si la solicitud se encontraba en la memoria caché, pero fue vencido, verá (revalidado) en su lugar.

Ahora estamos listos para verificar que nuestra configuración no tiene errores, y si eso es un éxito, recargar Nginx:

sudo nginx -t
sudo systemctl reload nginx

  • sudo nginx -t
  • sudo systemctl recarga nginx

con el caché establecido, podemos probar de nuevo para asegurarse de que el caché está funcionando como se esperaba.

Prueba de la caché

Para asegurarse de que la memoria caché está trabajando, podemos utilizar rizo de nuevo, y el aspecto de la cabecera X-Cache-Estado:

curl -I http://assets.example.com/example.png

  • rizo -I http://assets.example.com/example .png

OutputHTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 29 Nov 2017 18:40:28 GMT
Content-Type: image/png
Content-Length: 81173
Connection: keep-alive
Last-Modified: Tue, 28 Nov 2017 21:19:37 GMT
ETag: "7b2d05a5bd1bfeebcac62990daeafd14"
x-amz-request-id: tx000000000000000013841-005a1eff1b-a89e4-nyc3a
X-Cache-Status: MISS
Accept-Ranges: bytes

La primera solicitud debe ser una señorita. Intentarlo una segunda vez:

curl -I http://assets.example.com/example.png

  • rizo -I http://assets.example.com/example.png

OutputHTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 29 Nov 2017 18:40:53 GMT
Content-Type: image/png
Content-Length: 81173
Connection: keep-alive
Last-Modified: Tue, 28 Nov 2017 21:19:37 GMT
ETag: "7b2d05a5bd1bfeebcac62990daeafd14"
x-amz-request-id: tx000000000000000013841-005a1eff1b-a89e4-nyc3a
X-Cache-Status: HIT
Accept-Ranges: bytes

un éxito! Ahora estamos uso de proxy y almacenamiento en caché de objetos de los espacios. En el siguiente paso, vamos a configurar los certificados SSL para proteger la comunicación en nuestro proxy.

Configuración de TLS / SSL

Aunque este paso es opcional, se recomienda que su sitio web y los activos se ponen a disposición a través de una conexión segura HTTPS. Usted puede aprender cómo descargar e instalar certificados libres de entidad emisora ​​de certificados de cifrado del Let mediante la lectura de nuestro tutorial Cómo Cifrar de Para configurar Let con Nginx Server bloques en Ubuntu 16.04.

Conclusión

En este tutorial creado una configuración de Nginx a las solicitudes de proxy para objetos al servicio de los espacios. A continuación, añade el almacenamiento en caché para mejorar el rendimiento, y un certificado TLS / SSL para mejorar la privacidad y la seguridad.

Los valores que se muestran aquí son un buen punto de partida, pero es posible que desee para optimizar algunos de los parámetros de caché en base a sus propios patrones de tráfico y las necesidades únicas. La documentación Nginx, en concreto el ngx http proxy_module puede proporcionar información más detallada sobre las opciones de configuración disponibles.

Deja un comentario

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