===== HTTP y HTTPS en servicios Atlassian (Tomcat) con Nginx como proxy HTTPS reverso ===== Guía básica sobre como implementar HTTP y HTTPS de forma simultanea en sistemas Atlassian, extensible a cualquier aplicación que utilice Tomcat como servidor web. **Sistemas Atlassian**: [[https://www.atlassian.com/]] Para el ejemplo de configuración se utilizarán dos puertos. - Puerto HTTP: 8080 - Puerto HTTPS: 8081 - Dominio: DOMINIO.COM La configuración de Nginx se encargará de redirigir los puertos. * http://DOMINIO.COM:80 > http://DOMINIO.COM:8080 * https://DOMINIO.COM:443 > http://DOMINIO.COM:8081 Configuración del servidor Tomcat, se debe activar un puerto extra para HTTPS: /opt/atlassian/jira/conf/server.xml **Crear el certificado SSL (autofirmado) para las conexiones HTTPS**. openssl req -x509 -sha512 -nodes -days 9999 -newkey rsa:2048 -keyout /etc/nginx/cert.key -out /etc/nginx/cert.crt Configuración de Nginx como proxy reverso HTTP y HTTPS. ####################### HTTP (80 ---> 8080) server { listen 80; server_name DOMINIO.COM; location / { proxy_pass http://localhost:8080; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 20M; } } ####################### HTTPS (80 ---> 8081) server { listen 443; server_name DOMINIO.COM; # SSL ssl_certificate /etc/nginx/cert.crt; ssl_certificate_key /etc/nginx/cert.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; # REVERSE HTTP + SSL PROXY location / { proxy_pass http://localhost:8081; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 20M; } } Al reiniciar NGinx y el servicio Atlassian que se esté utilizando (Jira, Confluence, Bamboo, etc.), se podrá acceder a la conexión HTTPS por medio de https://DOMINIO.COM y a HTTP con http://DOMINIO.COM. Si para el puerto 80 no se quiere configurar Nginx como proxy reverso, se puede utilizar por ejemplo la herramienta socat de la siguiente manera para crear la redirección. socat TCP-LISTEN:80,fork TCP:127.0.0.1:8081 &> /dev/null &