Si mai heu de publicar la aplicació de ticketing de l’empresa a internet, aqui us deixo un petit how-to de com ho he fet amb el JIRA.
Els objectius, per variar, son principalment tenir alta disponibilitat i securitzar la publicació. Per aquest motiu ho podem fer com a minim amb 2 VLAN’s, frontend i backend, on en el frontend posarem un nginx i en el backend posarem la aplicació de JIRA.
En el frontend posarem un servidor nginx que farà de proxypass cap el backend, en ell delegarem la negociació SSL del httpS. Aquest servidor nginx el posarem a sobre d’una plataforma virtualitzada on hi aplicarem HA, a més, podem afegir tenir un actiu-passiu utilitzant pacemaker o keepalived. Finalment hi posarem un filtrat per accedir a la part de administració de la aplicació.
En el backend hi tindrem el servidor JIRA, on aqui la alta disponibilitat només la hem aplicat a nivell de màquina virtual, ja que la aplicació JIRA no està preparada per tenir-la clusteritzada.
Finalment us deixo els fitxers de configuració, el del virtualhost del nginx:
server { listen x.y.z.w:80; server_name jira.example.com; rewrite ^ https://$server_name$request_uri? permanent; } server { listen x.y.z.w:443 ssl; server_name jira.example.com; ssl on; ssl_certificate /etc/nginx/ssl/crt/concat.pem; ssl_certificate_key /etc/nginx/ssl/key/example.key; location / { client_max_body_size 10M; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $host; proxy_pass http://http-jira/; proxy_redirect off; } include security_jira.conf; }
Per tal de securitzar l’accés a la part de administració del Jira, us adjunto el fitxer security_jira.conf
Finalment en el servidor de java-standalone hem de indicar que el les url’s les ha de montar amb el https, indicant el nom de domini i el port el cual faran les seguents peticions:
scheme="https" proxyName="jira.example.com" proxyPort="443"
Quedarà el fitxer així:
... <Service name="Catalina"> <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true" scheme="https" proxyName="jira.example.com" proxyPort="443" /> ....
A disfrutar!