Mua hàng tại Link Shopee hoặc Hotline 0345-148-136.

Web server trên Máy tính bảng đơn

Định nghĩa

Máy chủ web (tiếng Anh: Web server) dùng để chỉ phần mềm để tạo ra một máy chủ, hoặc phần cứng dành riêng để chạy các phần mềm hoặc trang web của máy chủ, để từ đó có thể cung cấp các dịch vụ World Wide Web. Một máy chủ web xử lý các yêu cầu từ các client (trong mô hình server – client) thông qua giao thức HTTP và một số giao thức liên quan khác.

Máy chủ web

Để truy cập một trang web hay ứng dụng chúng ta sẽ trải qua các quá trình sau đây.

  • DNS server phân giải tên miền vidu.com thành địa chỉ IP của tên miền
  • Trình duyệt web gửi yêu cầu theo giao thức HTTP/HTTPS tới địa chỉ IP
  • Máy chủ web xử lý yêu cầu và trả lại phản hồi cho máy khách

Quá trình truyền tải thông tin giữa máy khách và máy chủ có thể qua nhiều máy trung gian gọi là proxy.

Một vài phần mềm máy chủ web

  • nginx – nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server
  • Apache – The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows
  • IIS – Internet Information Services (IIS) for Windows® Server is a flexible, secure and manageable Web server for hosting anything on the Web. ???
  • LiteSpeed – LiteSpeed Web Server is compatible with all popular Apache features including its Rewrite Engine and ModSecurity, and can load Apache configuration files directly.

Và nhiều phần mềm máy chủ khác nữa. Bạn có thể tham khảo thêm tại đây.

Ở đây chúng tôi sẽ sử dụng Caddy vì cấu hình Caddyfile khá đơn giản dễ hiểu. Caddy cũng có thể làm Reverse Proxy hoặc HTTP server.

Caddy – Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS.

Mô hình

HTTP Server → Proxy Server → Router → CloudFlare → Máy khách.

  1. HTTP server: Nginx chạy web tĩnh hoặc web động như WordPress, Joomla..
  2. Proxy server: Caddy chạy reverse proxy về các ứng dụng HTTP trong mạng nội bộ, Caddy listen ở port 80 và 443 để tự động đăng ký Chứng chỉ SSL/TLS, phục vụ ở giao thức HTTPS.
  3. Router: NAT port 80/443 về IP máy chủ nội bộ
  4. Cloudflare: Proxy lưu lượng qua Cloudflare để bảo vệ máy chủ của bạn, cập nhật Dynamic DNS trong trường hợp bạn không có IP tĩnh.

Thiết bị

  • Máy tính bảng đơn Orange Pi Zero 3
  • Router OPNsense Minipc

Phần mềm

Do Orange Pi Zero 3 hỗ trợ Docker và kiến trúc ARM64 khá phổ biến nên chúng tôi sẽ triển khai bằng Docker.

  • Docker – Use containers to Build, Share and Run your applications
  • Godns – A dynamic DNS client tool supports AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc, written in Go.
  • WordPress – Blog Tool, Publishing Platform, and CMS
  • Caddy – The Ultimate Server with Automatic HTTPS

Triển khai

Router OPNSense

Mở port IPv6 80 / 443.

Firewall → Rules → WAN → Add (Orange Plus Icon)

  • Action = Pass
  • Quick = Apply the action immediately on match
  • Interface = WAN
  • Direction = in
  • TCP/IP Version = IPv6
  • Protocol = TCP
  • Source = Any
  • Destination = Any (Hoặc set cho từng thiết bị cụ thể)
  • Destination port range
    • from = 80
    • to = 80

Các tùy chọn khác có thể để mặc định.

IPv6 Port 443 các bước tương tự.

Orange Pi Zero 3

Video quá trình

Caddy Reverse Proxy

Reverse proxy quick-start.

services:
  caddy:
    image: caddy:2.7
    container_name: caddy
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./site:/srv
      - ./caddy_data:/data
      - ./caddy_config:/config
networks:
  default:
    name: pico
    external: true
docker-compose.yml
john.io.vn {
	reverse_proxy httpd:80
}
Caddyfile
Web tĩnh đơn giản HTTP

Docker Apache HTTP Server.

services:
  httpd:
    image: httpd:2.4
    container_name: httpd
    restart: always
    ports:
      - "8080:80"
    volumes:
      - ./htdocs:/usr/local/apache2/htdocs
networks:
  default:
    name: pico
    external: true
docker-compose.yml

Cloudflare DDNS

Cloudflare Dynamic DNS.

godns Cloudflare

GoDNS Configuration Cloudflare.

services:
  godns:
    image: timothyye/godns:latest
    container_name: godns
    restart: always
    volumes:
      - ./config.json:/config.json
    network_mode: host
docker-compose.yml
{
  "provider": "Cloudflare",
  "login_token": "API TOKEN CLOUDFLARE CUA BAN TAI DAY",
  "domains": [
    {
      "domain_name": "john.io.vn",
      "sub_domains": ["@"]
    }
  ],
  "resolver": "2001:4860:4860::8888",
  "ipv6_urls": ["https://ipv6.seeip.org"],
  "ip_type": "IPv6",
  "interval": 300,
  "socks5_proxy": ""
}
config.json

Lưu ý chỉnh config godns và router firewall cho đúng trong trường hợp sử dụng IPv4 như dưới đây.

Đặt IP tĩnh cho Orange Pi Zero 3.

Services → DHCPv4 → LAN → DHCP Static Mappings for this interface → Thêm MAC address và IP address.

NAT port 80, 443 về địa chỉ IP của Orange Pi Zero 3.

Dưới đây là ví dụ cho port 80.

Firewall → NAT → Port Forward → Add

  • Interface = WAN
  • TCP/IP Version = IPv4
  • Protocol = TCP
  • Destination = WAN address
  • Destination port range
    • from = 80
    • to = 80
  • Redirect target IP = Single host or Network = 192.168.1.XXX (Orange Pi Zero 3 IP)
  • Redirect target port = 80

Các thông tin khác có thể để mặc định.


Comments

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *