Cách cài đặt Nginx Proxy Manager

Tác giả Network Engineer, T.M.Hai 22, 2021, 07:39:01 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách cài đặt Nginx Proxy Manager


Nginx là một máy chủ web phổ biến và proxy ngược được sử dụng để định tuyến lưu lượng truy cập và chuyển hướng nó đến một máy chủ khác. Việc thiết lập Nginx làm proxy ngược có thể tốn nhiều thời gian và dễ xảy ra lỗi cũng như cấu hình sai.

Hướng dẫn này sẽ chỉ cho bạn cách thiết lập và sử dụng trình quản lý proxy Nginx để quản lý và cấu hình dễ dàng hơn. Trước khi đi sâu vào hướng dẫn, có một số điều kiện tiên quyết. Bạn sẽ cần các điều kiện sau đây:

  • Một máy chủ Linux
  • Docker và Docker compose được cài đặt trên máy chủ
  • Root hoặc người dùng có quyền sudo

Nếu bạn có tất cả những điều này, hãy để chúng ta bắt đầu nào.

1. Nginx Proxy Manager là gì?

Trình quản lý proxy Nginx (NPM) là một hệ thống quản lý proxy ngược chạy trên Docker. NPM dựa trên máy chủ Nginx và cung cấp cho người dùng giao diện web đẹp, hiệu quả và đẹp mắt để quản lý dễ dàng hơn.

Công cụ này dễ thiết lập và không yêu cầu người dùng biết cách làm việc với máy chủ Nginx hoặc chứng chỉ SSL.

NPM là một công cụ mã nguồn mở được duy trì bởi các nhà phát triển từ khắp nơi trên thế giới. Nó rất thích hợp cho môi trường máy chủ nhỏ và môi trường phòng thí nghiệm riêng.

Hướng dẫn này sẽ tập trung vào việc chỉ cho bạn cách triển khai trình quản lý proxy Nginx:

2. Cài đặt Docker

Trình quản lý Nginx Proxy chạy như một Docker Container, do đó, nó yêu cầu cài đặt Docker và docker-compose trên máy chủ.

Vì đơn giản, mình sẽ chỉ minh họa cách cài đặt Docker trên Ubuntu. Vui lòng tham khảo thêm tài liệu Docker để biết cách thiết lập nó trên các hệ thống khác.

Để cài đặt Docker trên Ubuntu, hãy bắt đầu bằng cách xóa các cài đặt Docker cũ. Bỏ qua điều này nếu không có cài đặt Docker trước đó.

Mã nguồn [Chọn]
$ sudo apt-get remove docker docker-engine docker.io containerd runc
Tiếp theo, cài đặt kho lưu trữ và tất cả các phụ thuộc bằng cách sử dụng các lệnh:

Mã nguồn [Chọn]
$ sudo apt-get update
Mã nguồn [Chọn]
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
Thêm khóa GPG của kho lưu trữ Docker:

Mã nguồn [Chọn]
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Tiếp theo, thêm kho lưu trữ ổn định bằng cách sử dụng lệnh echo như sau:

Mã nguồn [Chọn]
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Cuối cùng, cập nhật kho lưu trữ và cài đặt docker bằng các lệnh sau:

Mã nguồn [Chọn]
$ sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose -y
Bây giờ chạy docker và bật nó khởi động cùng hệ điều hành:

Mã nguồn [Chọn]
$ sudo systemctl enable docker.service
Mã nguồn [Chọn]
$ sudo systemctl start docker.service
Mã nguồn [Chọn]
$ sudo systemctl enable containerd.service
3. Cài đặt SQLite

Bước tiếp theo là cài đặt cơ sở dữ liệu SQLite mà chúng ta sẽ sử dụng để chạy NPM. Điều tốt cần lưu ý là bạn cũng có thể sử dụng cơ sở dữ liệu MySQL.

4. Triển khai NPM trên Docker

Để triển khai Trình quản lý Proxy Nginx, chúng ta cần tạo tập tin docker-compose để chạy Docker và khởi tạo Container.

Để tìm hiểu thêm về tập tin docker-compose và cách thức hoạt động, hãy xem xét các tài nguyên được liên kết tại trung chủ.

Mình thực sự khuyên bạn nên tạo tập tin docker-compose trong một thư mục mà bạn có đầy đủ quyền.

Mã nguồn [Chọn]
$ nano docker-compose.yaml
Tiếp theo, thêm các dòng sau vào tập tin soạn thư, lưu và đóng.

Mã nguồn [Chọn]
version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    ports:
      # HTTP port
      - '80:80'
      # HTTPS Port:
      - '443:443'
      # Admin UI
      - '81:81'
    environment:
      DB_SQLITE_FILE: "/data/npm.sqlite"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt


Cuối cùng, chạy lệnh docker-compose như sau:

Mã nguồn [Chọn]
$ docker-compose up -d
Điều này sẽ triển khai trọn bộ từ hình ảnh NPM được chỉ định trong tập tin docker-soạn. Đầu ra sẽ như sau:


5. Truy cập giao diện người dùng NPM

Sau khi được tạo và chạy, bạn có thể đăng nhập vào giao diện bằng địa chỉ IP và cổng được chỉ định trong tập docker-compose. Trong trường hợp này, cổng 81.

Mã nguồn [Chọn]
http://IP:81
Thật là tuyệt vời nếu bạn thấy được giao diện người dùng đăng nhập NPM. Nhập tên người dùng và mật khẩu là:
[email protected] và changeme


Trong lần đăng nhập đầu tiên, bạn sẽ phải cập nhật thông tin chi tiết về người quản trị.


Sau khi cập nhật tất cả thông tin chi tiết về người dùng, bạn sẽ đến trang tổng quan chính từ đó bạn có thể cấu hình máy chủ proxy của mình:


6. Làm việc với NPM

Sau khi cài đặt và đảm bảo rằng trình quản lý proxy đang chạy, chúng ta có thể thêm máy chủ proxy để hiển thị dịch vụ đang chạy trên máy chủ.

Điều hướng đến Hosts >> Proxy Hosts và nhấp vào Add Proxy Host.

Chọn lược đồ chẳng hạn như HTTP hoặc HTTPS. Nếu dịch vụ bạn muốn hiển thị không hỗ trợ lưu lượng HTTPS, hãy sử dụng HTTP.

Tiếp theo, thêm tên miền, Tên máy chủ chuyển tiếp và IP. Bạn cũng có thể chọn Block common exploits để tăng cường bảo mật.


Khi bạn đã tiếp xúc với dịch vụ, hãy cố gắng truy cập nó bằng tên máy chủ hoặc địa chỉ IP và cổng được chỉ định.

Dịch vụ này sẽ có thể truy cập được. Bạn cũng có thể quản lý proxy trong danh sách máy chủ proxy.


7. Danh sách truy cập NPM

Trong một số trường hợp, chúng ta có thể cần hiển thị một ứng dụng hoặc dịch vụ trong danh sách proxy NPM cho các địa chỉ IP cụ thể.

Để cấu hình điều này, bạn có thể sử dụng NPM Access List.

Điều hướng đến Access List và nhấp vào Add Proxy List. Tại đây, hãy đặt tên cho họ một danh sách truy cập, bạn cũng có thể chọn Satisfy Any.


Trên tab Authorization, đặt tên người dùng và mật khẩu bạn sẽ sử dụng để đăng nhập vào dịch vụ.


Điều hướng đến Tab Access và thêm các địa chỉ IP bạn muốn cho phép kết nối và từ chối tất cả các địa chỉ khác.


Để đính kèm Access List vào một ứng dụng web cụ thể, hãy điều hướng đến Hosts >> Proxy Host và chọn máy chủ lưu trữ của bạn. Nhấp vào Edit và thiết lập danh sách truy cập như đã xác định ở trên.


8. Cấp chứng chỉ SSL

NPM cũng cho phép bạn cung cấp chứng chỉ SSL trên nhiều tên miền khác nhau. Trước khi thêm tên miền vào SSL, hãy đảm bảo rằng miền trỏ đến máy chủ proxy NPM.

Điều hướng đến SSL certificates và nhấp vào Add SSL certificate. Cung cấp tên miền và địa chỉ email cho Let's Encrypt. Cuối cùng, Agree to the terms of service và nhấn vào nút Save. Bạn cũng có thể bật DNS challenge, nhưng mình sẽ không đề cập đến vấn đề đó trong hướng dẫn này.


Điều này sẽ tạo một chứng chỉ SSL đáng tin cậy mới.

9. Tùy chỉnh trang chủ

Bạn cũng có thể tùy chỉnh trang Web mặc định cho máy chủ NPM. Nhấp vào Settings >> Default site và chọn Edit. Bạn có thể chọn hiển thị 404 ERROR, Redirect đến địa chỉ mới hoặc tạo trang tùy chỉnh.


Ví dụ: bên dưới là mã HTML để hiển thị 403 Forbidden.

Mã nguồn [Chọn]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>403 - Forbidden</title></h1> 
    <style>
$font: 'Poppins', sans-serif;
.cage {
    position: absolute;
    width: 100%;
 
    bottom: 0;
    top: 0;
  background: repeating-linear-gradient(90deg, transparent, transparent     80px, #6f7376 80px, #181617 100px);
    z-index: 2;
    animation: close 3s linear;
}
h1 {
      position: fixed;
    z-index: 1;
    font-size: 23em;
    color:  #000;
    margin: auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
        z-index: 1;
        background-color: #E4E4E1;
 background-image: radial-gradient(at top center, rgba(255,255,255,0.03) 0%, rgba(0,0,0,0.03) 100%), linear-gradient(to top, rgba(255,255,255,0.1) 0%, rgba(143,152,157,0.60) 100%);
    background-blend-mode: normal, multiply;
}
span {
    position: relative;
}
span:after {
    content: '403';
    position: absolute;
    top: 0;
    bottom: -96px;
    left: 40px;
    transform: scaleY(0.6) rotateX(-75deg) skewX(-10deg);
    transform-origin: 50% 100%;
    opacity: .2;
    line-height: 1;
}
@keyframes close {
    0% { left: -75%;}
    100%{ left: 0%}

</style>
</body>
</html>

Hướng dẫn này đã xem xét cài đặt và triển khai trình quản lý Nginx Proxy trên máy chủ Ubuntu chạy Docker. Sau đó, mình cũng đã trình bày cách cấu hình NPM và thêm máy chủ vào trình quản lý proxy.

Hãy nhớ rằng thử nghiệm nhất quán là chìa khóa để thành thạo, vì vậy hãy thử nghiệm ngay.