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 Cloud365</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 Cloud365
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/
Giao diện Nginx Server
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ụ.
Giao diện Nginx Proxy Manager
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
Nhập lại các thông tin Full Name, Nickname và Email. Chọn Save để lưu thông tin.
Tiếp tục cập nhật mật khẩu
Cập nhật mật khẩu mới. Chọn Save để lưu thông tin.
Màn quản trị tài khoản
Giao diện quản trị tài khoản
Truy cập màn tạo mới Proxy Host
Kết quả
Tiếp theo, chọn “Add Proxy Host”, thêm mới thông tin máy chủ Apache Web Server.
Nhập Domain Name, thông tin máy chủ Apache Web Server nằm trong dải mạng Internal. Chọn Save để lưu thông tin.Kết quả
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.