CentOS 에서 nginx 를 설치하고 SSL 설정후 JIRA 와 연계하기.

nginx 설치

RHEL/CentOS Ubuntu 에 nginx 설치 참고


nginx 설정

우분투처럼 가상 호스트 폴더를 만들고 JIRA 설정 파일 위치 시킨다.

/etc/nginx/sites-enabled/jira.example.com

server { 
    server_name jira.example.com;
    listen 80;
    location / {
        return 301 https://$server_name$request_uri;
    }
}
 
server {
    listen 443;
    server_name  jira.example.com;
    charset utf-8;


    access_log  /var/log/nginx/jira-example.com-ssl.access.log  main;
    error_log  /var/log/nginx/jira-example.com-ssl.error.log  notice;
    client_max_body_size 50M;

    location / {
        proxy_pass http://127.0.0.1:9080;
        proxy_set_header Host $host;
        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;
    }
    location ~ /\.ht {
        deny all;
    }
    #location = /favicon.ico { access_log off; log_not_found off; }
    #location = /robots.txt  { access_log off; log_not_found off; }
    ssl on;
    ssl_certificate     /etc/pki/tls/certs/example.com.crt;
    ssl_certificate_key /etc/pki/tls/private/example.com.key;
}
BASH


nginx 재시작

service nginx restart
CODE


JIRA 설정

JIRA 는 메인 사이트를 https 로 설정했을 경우 http 로 연결하면 다음과 같은 예외를 발생시키고 서비스가 제대로 되지 않는다.

com.atlassian.gadgets.dashboard.internal.diagnostics.UrlSchemeMismatchException: Detected URL scheme, 'http', does not match expected
 scheme 'https'
        at com.atlassian.gadgets.dashboard.internal.diagnostics.Diagnostics.checkExpectedScheme(Diagnostics.java:64)
        at com.atlassian.gadgets.dashboard.internal.diagnostics.Diagnostics.check(Diagnostics.java:36)
        at com.atlassian.gadgets.dashboard.internal.diagnostics.DiagnosticsServlet.executeDiagnostics(DiagnosticsServlet.java:97)
        at com.atlassian.gadgets.dashboard.internal.diagnostics.DiagnosticsServlet.doPost(DiagnosticsServlet.java:65)
CODE

이는 nginx 의 요청에 대해 JIRA 가 응답할 때 http로 연결되어 있어서 발생하므로 지라를 구동하는 톰캣에 다음 설정을 추가해 주어야 한다.


  1. conf/server.xml 편집
  2. 다음과 같이 http 커넥터 항목에  proxyName, proxyPort, scheme, secure 항목을 추가한다.

    <Connector port="9080"
       maxThreads="150"
       minSpareThreads="25"
       connectionTimeout="20000"
       enableLookups="false"
       maxHttpHeaderSize="8192"
       protocol="HTTP/1.1"
       useBodyEncodingForURI="true"
       redirectPort="9443"
       acceptCount="100"
       disableUploadTimeout="true"
     
    <!-- 추가 -->
       proxyName="jira.lesstif.com" 
       proxyPort="443"
       scheme="https" secure="true"
       />
    XML
  3. 지라를 재구동한다.



Ref