1. NGINX 基础配置

1.1 NGINX 安装

在 Linux 系统上安装 NGINX 可以使用包管理工具,例如在 Ubuntu 上:

sudo apt update
sudo apt install nginx

安装完成后,启动 NGINX 服务:

sudo systemctl start nginx

1.2 NGINX 基本配置文件

NGINX 的主配置文件通常位于 /etc/nginx/nginx.conf。以下是一个简化的 NGINX 配置示例:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    client_max_body_size 20M;
    client_body_buffer_size 128k;

    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;  
    gzip_comp_level 6;  
    gzip_proxied any;  
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  
    server {
        listen       80;

        error_page   500 502 503 504  /50x.html;    

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

1.3 常用配置项说明

  • worker_processes: 配置 NGINX 处理请求的工作进程数。
  • worker_connections: 每个工作进程可以处理的最大连接数。
  • client_max_body_size: 限制客户端请求体的最大大小,防止过大的请求导致服务器崩溃。
  • gzip: 启用 Gzip 压缩,提高页面加载速度。

2. SSL 配置

2.1 配置 HTTPS

为了使 NGINX 支持 HTTPS,需要配置 SSL 证书和密钥。以下是一个 HTTPS 配置示例:

server {
    listen 443 ssl;
    ssl_certificate      /etc/nginx/certs/ssl_certificate.crt;
    ssl_certificate_key  /etc/nginx/certs/ssl_certificate.key;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        root   html;
        index  index.html index.htm;
    }
}

2.2 SSL 配置说明

  • ssl_certificate: 指定 SSL 证书文件路径。
  • ssl_certificate_key: 指定 SSL 证书密钥文件路径。
  • ssl_ciphers: 配置使用的加密算法套件。
  • ssl_protocols: 指定支持的 SSL/TLS 协议版本。

3. 反向代理配置

NGINX 常用于反向代理,将客户端请求转发到后端服务器。以下是一个简单的反向代理配置:

server {
    listen 80;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://backend_server:8080;
    }
}

3.1 反向代理配置说明

  • proxy_set_header: 设置代理请求头信息,传递客户端的真实 IP 地址和主机信息。
  • proxy_pass: 指定后端服务器的地址和端口,转发请求。

4. NGINX 与 Docker 配合使用

4.1 使用 Docker Compose 启动 NGINX

以下是一个使用 Docker Compose 启动 NGINX 容器的配置示例:

version: "3.6"

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "8880:80"     # HTTP
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    restart: always
    logging:
      driver: json-file
      options:
        max-size: 10m
        max-file: '5'

4.2 配置说明

  • ports: 将容器内的 80 端口映射到主机的 8880 端口。
  • volumes: 将本地的 nginx.conf 文件挂载到容器中的 /etc/nginx/nginx.conf,使容器使用自定义配置。
  • restart: 设置容器自动重启策略。
  • logging: 配置容器日志文件的大小和数量,防止日志占用过多磁盘空间。

4.3 启动 NGINX 容器

docker-compose.yml 文件所在目录,运行以下命令启动 NGINX 容器:

docker-compose up -d

容器启动后,可以通过访问 http://localhost:8880 查看 NGINX 是否正常运行。