Cấu hình Jenkins với Nginx Reverse Proxy

151

Cấu hình Jenkins với Nginx Reverse ProxyCuongquach.com | Thông thường khi bạn cài đặt Jenkins làm hệ thống CI/CD ban đầu thì Jenkins sẽ chỉ hỗ trợ bạn truy cập qua port dịch vụ lắng nghe trên IP chứ không hỗ trợ bạn truy cập qua tên miền hoặc tên miền sub url giúp bạn thuận tiện trong việc quản lý. Vì vậy để giải quyết bài toán này thường chúng ta sẽ cài đặt thêm 1 dịch vụ như Nginx đứng phía trước làm reverse proxy giúp bạn truy cập dịch vụ Jenkins qua tên miền được.

cau-hinh-jenkins-voi-nginx-reverse-proxy

Có thể bạn quan tâm chủ đề khác
Tổng quan giao diện quản lý Jenkins
Bảo trì tắt mở dịch vụ Jenkins
Backup/restore dữ liệu Jenkins
Quản lý cài đặt Jenkins cơ bản

1. Cấu hình Jenkins

Jenkins mặc định khi cài xong thì đã listen trên port 8080 và listen trên toàn bộ cổng interface private/public/loopback . Vì lý do an toàn bảo mật cho hệ thống Jenkins chúng ta nên cấu hình Jenkins listen trên 127.0.0.1 port 8080 và chỉ dùng Nginx reverse proxy xuống truy cập Jenkins.

Bạn khai báo biến ‘HTTP_HOST‘ và thêm option ‘–httpListenAddress=$HTTP_HOST‘ vào biến ‘JENKINS_ARGS‘ trong file định nghĩa biến môi trường hoạt động của Jenkins.

File biến môi trường Jenkins khác nhau ở mỗi OS Linux:

  • Ubuntu 16.04 + : /etc/sysconfig/jenkins
  • CentOS 7+ : /etc/sysconfig/jenkins

Khởi động lại dịch vụ Jenkins.

Kiểm tra xem Jenkins đã lắng nghe trên 127.0.0.1 chưa nhé.

2. Cài đặt Nginx

Việc cài đặt Nginx khá đơn giản các bạn có thể tham khảo bài viết này:
Hướng dẫn cài đặt Nginx trên CentOS
Hướng dẫn cài đặt Nginx trên Ubuntu

+ CentOS

+ Ubuntu

3. Cấu hình Nginx Reverse Proxy cho Jenkins

Chúng ta sẽ có hai hình thức cấu hình Nginx làm reverse proxy:

  • Reverse proxy theo tên miền hoặc tên miền phụ. Ví dụ : http://jenkins.cuongquachlab.com hoặc http://cuongquachlab.com
  • Reverse proxy theo sub URL của tên miền. Ví dụ : cuongquachlab.com/jenkins/

3.1 Nginx reverse proxy theo tên miền

Chúng ta sẽ khai báo một VirtualHost dành riêng cho dịch vụ Jenkins. Ví dụ vhost của mình có domain là : jenkins.cuongquachlab.com

Giả sử cấu hình Nginx mặc định sẽ bao gồm các file config trong thư mục ‘/etc/nginx/sites-enabled/‘ .

Tạo file config vhost dành cho Jenkins. Cấu hình block ‘location /‘ có thể áp dụng cho cả tên miền HTTPHTTPS , nên cấu hình mẫu Nginx HTTP 80 ở bài này bạn có thể đem sang cho config của Nginx SSL 443.

Ý nghĩa của các giá trị proxy_* bạn đọc thêm tài liệu của Nginx nhé, phần cấu hình Nginx Reverse Proxy mình sẽ không đi chi tiết ở bài này : LINK

Khởi động lại dịch vụ Nginx.

Giờ bạn chỉ cần truy cập thử tên miền của bạn là sẽ thấy dịch vụ Jenkins đã có thể hoạt động qua tên miền rồi. Phần tên miền này bạn có thể trỏ DNS record A đến địa chỉ IP của máy chủ dịch vụ Jenkins của bạn (có thể public hoặc private tuỳ vào hệ thống của bạn) , còn muốn kiểm tra nhanh thì có thể chỉnh file ‘hosts’ trên laptop cho nhanh.

3.2 Nginx reverse proxy theo sub url tên miền

Bạn phải cấu hình cho dịch vụ Jenkins sẽ thay đổi cách thức xử lý request tương ứng với sub url của bạn. Ví dụ bạn muốn truy cập đường link url như sau :

Thay đổi prefix url mà Jenkins sẽ sử dụng để xử lý request.

Khởi động lại dịch vụ Jenkins.

Tiếp đến cấu hình Nginx reverse proxy cho Jenkins sub-url.

Khởi động lại dịch vụ Nginx.

Giờ thì thử truy cập đường dẫn sub url cho dịch vụ Jenkins của bạn nào.

Tổng kết

Vậy là khi bạn muốn cấu hình Nginx làm reverse proxy cho dịch vụ Jenkins CI/CD thì cực kì đơn giản để cấu hình với 2 cách thực hiện như trên. Chúc bạn thành công.

Nguồn: https://cuongquach.com/

1 COMMENT

LEAVE A REPLY