Ứng dụng Nginx Proxy Manager làm giao diện quản trị Nginx Proxy

30/12/2020

Nginx Proxy manager là công cụ hỗ trợ quản trị Nginx thông qua giao diện đồ họa. Nginx proxy manager cho phép các bạn cấu hình nhanh Nginx Server qua giao diện thân thiện bắt mắt.

Tổng quan

Nginx (phát âm engine-ex) là bộ mã nguồn mở nối tiếng, được sử dụng như Web Server (HTTP Server) hoặc reverse proxy, hay làm proxy server cho các dịch vụ IMAP/POP3, ngoài ra nginx còn được sử dụng làm HTTP Cache server, Load balancer. Nginx được thiết kế với hiệu năng xử lý cao, ổn định, nhiều tính năng, cấu hình đơn giản, sử dụng ít tài nguyên hệ thống. Nginx xuất bản năm 2011 và được phát triển bởi Igor Sysoev.

Nginx Proxy manager là công cụ hỗ trợ quản trị Nginx thông qua giao diện đồ họa. Nginx proxy manager cho phép các bạn cấu hình nhanh Nginx Server qua giao diện thân thiện bắt mắt.

Chuẩn bị

Phân hoạch địa chỉ

Mô hình triển khai

Triển khai

Phần 1: Thực hiện trên node Apache Web Server

Tắt SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config init 6

Bước 1: Cài đặt Apache Web Server

yum install httpd -y echo '<h1>Chào mừng tới Blog Onet</h1>' > /var/www/html/index.html 

Bước 2: Khởi động dịch vụ

systemctl start httpd systemctl enable httpd

Bước 3: Kiểm tra

curl -I 33.5.6.15 curl 33.5.6.15 

Kết quả

[root@apache-webserver ~]# curl -I 33.5.6.15HTTP/1.1 200 OKDate: Wed, 14 Aug 2019 16:51:26 GMTServer: Apache/2.4.6 (CentOS)Last-Modified: Tue, 13 Aug 2019 17:11:35 GMTETag: "2a-59002bb97fe20"Accept-Ranges: bytesContent-Length: 42Content-Type: text/html; charset=UTF-8  [root@apache-webserver ~]# curl 33.5.6.15 Chào mừng tới Blog Onet

Bước 4: Cấu hình Firewalld

firewall-cmd --zone=public --add-service=http firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload

Kiểm tra

firewall-cmd --list-all

Kểt quả

[root@apache-webserver ~]# firewall-cmd --list-all  public    target: default    icmp-block-inversion: no    interfaces:    sources:    services: ssh dhcpv6-client http    ports:    protocols:    masquerade: no    forward-ports:    source-ports:    icmp-blocks:    rich rules:

Phần 2: Thực hiện trên node Nginx Proxy Manager

Lưu ý: - Mình sẽ triển khai Nginx Proxy Manager qua phiên bản đã được đóng gói thành Container. Đồng thời sẽ sử dụng Docker và Docker Compose để khởi tạo dịch vụ

Bước 1: Cài đặt Docker

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker

Kiểm tra dịch vụ Docker

sudo systemctl status docker sudo docker run hello-world

Kết quả

[root@nginx-proxy ~]# sudo systemctl status docker ● docker.service - Docker Application Container Engine    Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)    Active: active (running) since Tue 2019-08-13 22:44:26 +07; 3min 11s ago      Docs: https://docs.docker.com Main PID: 5272 (dockerd)    CGroup: /system.slice/docker.service            └─5272 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  Hint: Some lines were ellipsized, use -l to show in full.  [root@nginx-proxy ~]# sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f Status: Downloaded newer image for hello-world:latest   Hello from Docker! This message shows that your installation appears to be working correctly.   To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.     (amd64) 3. The Docker daemon created a new container from that image which runs the     executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it     to your terminal.   To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash   Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/   For more examples and ideas, visit: https://docs.docker.com/get-started/ 

Bước 2: Cài đặt Docker Compose

curl -O https://raw.githubusercontent.com/sitespeedio/sitespeed.io/master/docker/docker-compose.yml  sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version

Kết quả

[root@nginx-proxy ~]# docker-compose --version docker-compose version 1.24.1, build 4667896b

Bước 3: Cài đặt Nginx Proxy Manager

Bước 3.1: Cài đặt Git

yum install git -y

Bước 3.2: Clone repo Nginx Proxy Manager

git clone https://github.com/jc21/nginx-proxy-manager.git

Kết quả

[root@nginx-proxy ~]# git clone https://github.com/jc21/nginx-proxy-manager.git Cloning into 'nginx-proxy-manager'… remote: Enumerating objects: 14, done. remote: Counting objects: 100% (14/14), done. remote: Compressing objects: 100% (14/14), done. remote: Total 3446 (delta 1), reused 4 (delta 0), pack-reused 3432 Receiving objects: 100% (3446/3446), 1.39 MiB | 956.00 KiB/s, done. Resolving deltas: 100% (2161/2161), done.

Bước 3.3: Khởi động Nginx Proxy Manager bằng docker compose

cd nginx-proxy-manager/doc/example/ docker-compose up -d

Kết quả

[root@nginx-proxy example]# docker-compose up -d  Creating example_db_1 ... done Creating example_app_1 ... done 

Bước 3.4: Kiểm tra

docker ps 

Kết quả

[root@nginx-proxy example]# docker ps  CONTAINER ID        IMAGE                             COMMAND                  CREATED              STATUS                          PORTS                                                      NAMES  f5c6ab12d2be        jc21/nginx-proxy-manager:latest   "/init"                  About a minute ago   Up About a minute (unhealthy)   0.0.0.0:80-81->80-81/tcp, 0.0.0.0:443->443/tcp, 9876/tcp   example_app_1  6ae6119c1d5d        mariadb:latest                    "docker-entrypoint.s…"   About a minute ago   Up About a minute               3306/tcp                                                   example_db_1

Kiểm tra giao diện Web

Để kiểm tra, mình sẽ truy cập vào Port 80 và 81. Trong đó Port 80 là Port của Nginx Proxy Server, Port 81 là Port của Nginx Proxy Manager

Kiểm tra Port 80, truy cập http://10.10.11.64/

Kiểm tra Port 81, mình sẽ truy cập http://10.10.11.64:81/. Tiếp theo mình sẽ truy cập trang quản trị của Nginx Proxy Manager và cấu hình dịch vụ.

Truy cập với mật khẩu mặc định

Email:    admin@example.com Password: changeme 

Sau khi đăng nhập thành công, chúng ta thực hiện thao tác cập nhật thông tin

Tiếp tục cập nhật mật khẩu

Màn quản trị tài khoản

Truy cập màn tạo mới Proxy Host

Tiếp theo, chọn “Add Proxy Host”, thêm mới thông tin máy chủ Apache Web Server.

Phần 3: Thực hiện trên node Ubuntu 18.04

Cấu hình file /etc/host (Sử dụng quyền root)

echo '10.10.11.64 proxy.lab.com' > /etc/hosts

Kểt quả

Truy cập Web với đường dẫn proxy.lab.com

Tổng kết

Tới đây, mình đã hướng dẫn các bạn triển khai Nginx Proxy Manager để quản trị, cấu hình Proxy cho dịch vụ Nginx thông qua giao diện thân thiện, dễ sử dụng. Cám ơn các bạn đã quan tâm. Ngoài ra bạn có thể tham khảo bài viết tổng quan về Nginx Proxy Manager bên dưới.

Thân ái và hẹn gặp lại.

Tham khảo

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Hướng dẫn cài đặt PostgreSQL trên Ubuntu 20.04

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ và đối tượng dựa trên POSTGRES. PostgreSQL...
30/12/2020

[Zabbix] Giám sát server CentOS 7 bằng zabbix-agent

Trong hệ thống thực tế việc giám sát hệ thống hay monitor là rất cần thiết. Để hỗ trợ việc...
30/12/2020

[CI/CD] Phần 2: Hướng dẫn cài đặt Jenkins trên CentOS 7

Jenkins là phần mềm tự động hóa, mã nguồn mở và viết bằng Java. Với Jenkins, các nhà phát triển...
30/12/2020