Cấu hình Jira server với Nginx và Cloudflare

Trong bài hướng dẫn này, tôi sẽ trình bày cách cấu hình Jira server với NginxCloudflare.

Lưu ý: Cách làm tương tự cho Confluence.

Thiết lập application path

Đặt đường dẫn ứng dụng Jira của bạn (phần sau hostname và port). Để làm điều này trong Tomcat (được đóng gói cùng Jira), hãy chỉnh sửa tệp <Jira-Install>/conf/server.xml.

nano /opt/atlassian/jira/conf/server.xml

Tìm đến phần định nghĩa “Context”:

<Context docBase="${catalina.home}/atlassian-jira" path="" reloadable="false" useHttpOnly

Nếu bạn đặt Base URL là jira.your-domain.com, hãy thay đổi path thành như dưới đây:

<Context docBase="${catalina.home}/atlassian-jira" path="/" reloadable="false" useHttpOnly="true">

Khởi động lại Jira và xác minh xem nó có thể được truy cập trên Base URL hay không. Bạn có thể nhận được một số lỗi về việc dashboard được cấu hình không chính xác, chúng ta sẽ khắc phục điều này trong phần tiếp theo.

Cấu hình Connector

Cấu hình các HTTP connector để chúng ta có một cái phục vụ như một proxy connector và một cái khác để khắc phục sự cố. Điều này được thực hiện trong cùng một tệp <Jira-Install>/conf/server.xml, hãy tìm đến đoạn mã này:

<Connector port="8080"
  relaxedPathChars="[]|" 
  relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;" 
  maxThreads="150" 
  minSpareThreads="25" 
  connectionTimeout="20000" 
  enableLookups="false" 
  maxHttpHeaderSize="8192" 
  protocol="HTTP/1.1" 
  useBodyEncodingForURI="true" 
  redirectPort="8443" 
  acceptCount="100" 
  disableUploadTimeout="true"/>

Và thêm các phần tử proxyName và proxyPort (thay thế chúng bằng các thuộc tính phù hợp), và một connector khác bên dưới – cái này được sử dụng để khắc phục sự cố bằng cách bỏ qua proxy:

<!-- Nginx Proxy Connector without https scheme -->
<Connector port="8080"
  relaxedPathChars="[]|" 
  relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"  
  maxThreads="150" 
  minSpareThreads="25" 
  connectionTimeout="20000" 
  enableLookups="false" 
  maxHttpHeaderSize="8192" 
  protocol="HTTP/1.1" 
  useBodyEncodingForURI="true" 
  redirectPort="8443" 
  acceptCount="100" 
  disableUploadTimeout="true"
  proxyName="www.atlassian.com" 
  proxyPort="80"/> 
 
<!-- OPTIONAL,Nginx Proxy Connector with https scheme-->
<Connector port="8081"
  relaxedPathChars="[]|" 
  relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"  
  maxThreads="150" 
  minSpareThreads="25" 
  connectionTimeout="20000" 
  enableLookups="false" 
  maxHttpHeaderSize="8192" 
  protocol="HTTP/1.1" 
  useBodyEncodingForURI="true" 
  redirectPort="8443" 
  acceptCount="100" 
  disableUploadTimeout="true"
  proxyName="www.atlassian.com" 
  proxyPort="443" 
  scheme="https" 
  secure="true"/> 
 
<!-- Standard HTTP Connector without any proxy config -->
<Connector port="8082"
  relaxedPathChars="[]|" 
  relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"  
  maxThreads="150" 
  minSpareThreads="25" 
  connectionTimeout="20000" 
  enableLookups="false" 
  maxHttpHeaderSize="8192" 
  protocol="HTTP/1.1" 
  useBodyEncodingForURI="true" 
  redirectPort="8443" 
  acceptCount="100" 
  disableUploadTimeout="true"/>

Cấu hình Nginx reverse Proxy

Cài đặt Nginx.

apt install nginx

Máy chủ web sẽ hoạt động ngay sau khi quá trình cài đặt kết thúc. Chúng ta có thể kiểm tra với hệ thống init systemd để đảm bảo dịch vụ đang chạy bằng cách gõ:

systemctl status nginx

Xóa cấu hình Nginx mặc định.

rm -rf /etc/nginx/sites-available/default
rm -rf /etc/nginx/sites-enabled/default

Tạo một tệp cấu hình mới cho Jira.

nano /etc/nginx/sites-available/jira.conf

Thêm các cấu hình sau.

server {
     listen [::]:80;
     listen 80;

     server_name jira-sub_domain.com;

     location / {
         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;
         proxy_pass http://localhost:8080;
         client_max_body_size 10M;
     }
}

Nhấn Ctrl+X sau đó là YEnter để lưu tệp và thoát.

Để kích hoạt cấu hình trang web mới tạo này, hãy tạo symlink cho tệp bạn vừa tạo vào thư mục sites-enabled.

ln -s /etc/nginx/sites-available/jira.conf /etc/nginx/sites-enabled/jira.conf

Kiểm tra cấu hình của bạn và khởi động lại Nginx để các thay đổi có hiệu lực.

nginx -t
service nginx restart

Tạo Chứng chỉ TLS Origin CA

Cloudflare Origin CA cho phép bạn tạo một chứng chỉ TLS miễn phí được ký bởi Cloudflare để cài đặt trên máy chủ Nginx của bạn. Bằng cách sử dụng chứng chỉ TLS do Cloudflare tạo, bạn có thể bảo mật kết nối giữa các máy chủ của Cloudflare và máy chủ Nginx của bạn.

Để tạo chứng chỉ với Origin CA, hãy đăng nhập vào tài khoản Cloudflare của bạn trên trình duyệt web. Chọn tên miền bạn muốn bảo mật, từ menu bên trái, điều hướng đến SSL/TLS > Origin Server, và nhấp vào nút Create Certificate:

Để nguyên tùy chọn mặc định Generate private key and CSR with Cloudflare. Chọn thời hạn hợp lệ cho chứng chỉ (mặc định là 15 năm), sau đó nhấp vào Create.

Bạn sẽ thấy một hộp thoại với Origin CertificatePrivate key. Bạn cần chuyển chúng từ Cloudflare đến máy chủ của mình. Vì lý do bảo mật, thông tin Private Key sẽ không được hiển thị lại, vì vậy hãy sao chép khóa vào máy chủ của bạn trước khi nhấp vào Ok.

Bạn có thể sử dụng thư mục /etc/ssl trên máy chủ để chứa tệp chứng chỉ gốc và tệp khóa riêng tư.

Đầu tiên, sao chép nội dung của Origin Certificate được hiển thị trong hộp thoại trên trình duyệt của bạn. Sau đó, trên máy chủ của bạn, mở /etc/ssl/cert.pem trong trình soạn thảo văn bản ưa thích của bạn:

nano /etc/ssl/cert.pem

Dán nội dung chứng chỉ vào tệp. Sau đó lưu và thoát khỏi trình soạn thảo. Nếu bạn đang sử dụng nano, nhấn Ctrl+X, sau đó khi được nhắc, nhấn Y và sau đó Enter.

Sau đó quay lại trình duyệt của bạn và sao chép nội dung của Private key. Mở tệp /etc/ssl/key.pem để chỉnh sửa:

nano /etc/ssl/key.pem

Dán khóa riêng tư vào tệp, lưu tệp và thoát khỏi trình soạn thảo.

Lưu ý: Đôi khi, khi bạn sao chép chứng chỉ và khóa từ bảng điều khiển Cloudflare và dán vào các tệp liên quan trên máy chủ, các dòng trống sẽ được chèn vào. Nginx sẽ coi các chứng chỉ và khóa như vậy là không hợp lệ, vì vậy hãy đảm bảo rằng không có dòng trống nào trong các tệp của bạn.

Cảnh báo: Chứng chỉ Origin CA của Cloudflare chỉ được Cloudflare tin cậy và do đó chỉ nên được sử dụng bởi các máy chủ gốc đang được kết nối liên tục với Cloudflare. Nếu tại bất kỳ thời điểm nào bạn tạm dừng hoặc tắt Cloudflare, chứng chỉ Origin CA của bạn sẽ báo lỗi chứng chỉ không đáng tin cậy.

Bây giờ bạn đã sao chép các tệp khóa và chứng chỉ vào máy chủ của mình, bạn cần cập nhật cấu hình Nginx để sử dụng chúng.

Chuyển hướng HTTP sang HTTPS

Mở tệp cấu hình Nginx của trang web của bạn và thay thế mọi thứ bằng nội dung sau. Thay thế đường dẫn tệp bằng đường dẫn bạn nhận được khi lấy chứng chỉ SSL. Chỉ thị ssl_certificate phải trỏ đến tệp cert.pem của bạn, và chỉ thị ssl_certificate_key phải trỏ đến tệp key.pem của bạn.

server {
     listen [::]:80;
     listen 80;

     server_name jira-sub_domain.com;

     return 301 https://jira-sub_domain.com$request_uri;
}

server {
     listen [::]:443 ssl;
     listen 443 ssl;

     server_name jira-sub_domain.com;

     ssl_certificate /etc/ssl/cert.pem;
     ssl_certificate_key /etc/ssl/key.pem;

     location / {
         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;
         proxy_pass http://localhost:8080;
         client_max_body_size 10M;
     }
}

Nhấn CTRL+X sau đó là Y để lưu các thay đổi.

Kiểm tra cấu hình của bạn và khởi động lại Nginx để các thay đổi có hiệu lực.

nginx -t
service nginx restart

Tham khảo

[1] https://www.cloudbooklet.com/install-jira-on-ubuntu-with-nginx-rds-and-letsencrypt-ssl-aws/

[2] https://www.digitalocean.com/community/tutorials/how-to-host-a-website-using-cloudflare-and-nginx-on-ubuntu-20-04

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top