Thiết lập Nginx và tạo Dockerfile từ đầu

Tải và giải nén Nginx

Duyệt đến trang chính thức: https://nginx.org/en/download.html

  • Mainline version: Phiên bản phát triển mới nhất, phù hợp cho thử nghiệm.
  • Stable version: Phiên bản ổn định mới nhất – được khuyến nghị cho môi trường sản xuất.
  • Legacy versions: Các phiên bản cũ đã ngừng hỗ trợ.
Chọn file `.tar.gz` dành cho hệ điều hành Linux. Sử dụng lệnh wget để tải trực tiếp mà không cần upload lên máy chủ:
sudo wget -qO- https://nginx.org/download/nginx-1.26.1.tar.gz | tar -xz -C /usr/local

Cài đặt các thư viện phụ thuộc

Nginx yêu cầu một số thư viện để hoạt động đúng:
  • PCRE: Hỗ trợ biểu thức chính quy tương thích Perl.
  • zlib: Thư viện nén/giải nén dùng cho chức năng gzip trong HTTP.
  • OpenSSL: Cung cấp hỗ trợ SSL/TLS cho HTTPS.
Cài đặt tất cả bằng lệnh sau:
sudo yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

Khởi tạo cấu hình biên dịch

Di chuyển vào thư mục vừa giải nén, ví dụ: /usr/local/nginx-1.26.1. Chạy lệnh configure để tạo file Makefile:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-file-aio \
--with-http_realip_module \
--with-http_v2_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-mail \
--with-mail_ssl_module
Các tùy chọn chính:
  • --prefix: Đường dẫn cài đặt Nginx.
  • --pid-path: Lưu trữ ID tiến trình chính.
  • --error-log-path, --http-log-path: Định nghĩa vị trí ghi log lỗi và truy cập.
  • --with-http_ssl_module: Cho phép hỗ trợ HTTPS.
  • --with-http_v2_module: Kích hoạt giao thức HTTP/2.
  • --with-stream: Bật module xử lý kết nối TCP/UDP.
  • --with-mail: Hỗ trợ proxy email (SMTP, IMAP, POP3).
  • --with-file-aio: Tăng hiệu suất đọc ghi file qua I/O bất đồng bộ.

Biên dịch và cài đặt

Tạo thư mục tạm thời như đã chỉ định trong cấu hình:
sudo mkdir -p /var/temp/nginx
Bắt đầu quá trình biên dịch:
make
Sau khi hoàn thành, tiến hành cài đặt:
make install

Bắt đầu Nginx

Vào thư mục cài đặt và khởi chạy:
cd /usr/local/nginx/sbin
./nginx
Kiểm tra tiến trình đang chạy:
ps -ewwf | grep nginx
Dừng hoặc reload cấu hình:
  • ./nginx -s stop – Dừng hoàn toàn.
  • ./nginx -s reload – Reload cấu hình mà không gián đoạn dịch vụ.

Mở cổng truy cập từ bên ngoài

Cấu hình tường lửa để mở cổng 80:
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Lưu ý: Nếu hệ thống không có iptables, hãy cài bằng yum install -y iptables. Trong môi trường sản xuất, nên sử dụng công cụ quản lý tường lửa phù hợp thay vì tắt hoàn toàn.

Tạo Dockerfile cho Nginx

Dưới đây là một Dockerfile tối ưu hóa để xây dựng image Nginx từ nguồn:
FROM centos:latest

# Thay thế kho repo mặc định bằng Aliyun
RUN mkdir -p /etc/yum.repos.d/bak && \
    mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak && \
    curl -o /etc/yum.repos.d/CentOS-Base-Aliyun.repo http://mirrors.aliyun.com/repo/Centos-8.repo && \
    yum clean all && yum makecache

# Cài đặt tiện ích và alias
RUN sed -i "5i\\alias ll='ls -l'" /root/.bashrc && source /root/.bashrc
RUN yum install -y ncurses wget

# Tải và giải nén Nginx
RUN wget -qO- https://nginx.org/download/nginx-1.26.1.tar.gz | tar -xz -C /usr/local

# Cài đặt phụ thuộc
RUN yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel make

# Cấu hình, biên dịch và cài đặt
WORKDIR /usr/local/nginx-1.26.1
RUN ./configure \
    --prefix=/usr/local/nginx \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-http_gzip_static_module \
    --http-client-body-temp-path=/var/temp/nginx/client \
    --http-proxy-temp-path=/var/temp/nginx/proxy \
    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
    --http-scgi-temp-path=/var/temp/nginx/scgi \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-file-aio \
    --with-http_realip_module \
    --with-http_v2_module \
    --with-pcre \
    --with-stream \
    --with-stream_ssl_module \
    --with-mail \
    --with-mail_ssl_module && \
    mkdir -p /var/temp/nginx && \
    make && \
    make install && \
    ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

Xây dựng và chạy container

Xây dựng image:
docker build -t nginx-custom:latest .
Chạy container với cổng 80 mapping:
docker run -d -p 80:80 --name web-server nginx-custom:latest
Kiểm tra trạng thái:
docker ps
Truy cập vào địa chỉ IP máy chủ Docker (ví dụ: http://192.168.31.30) để kiểm tra trang chủ Nginx.

Thẻ: nginx docker CentOS http2 ssl

Đăng vào ngày 11 tháng 8 lúc 02:44