跳转至

Nginx#

Nginx 配置文件

Nginx 的配置文件通常位于 */nginx/nginx.conf

基础配置示例

# ------------------------------
# 全局配置
# ------------------------------

worker_processes  auto;                # 设置工作进程数,通常建议等于 CPU 核心数

# ------------------------------
# events 块:定义连接处理相关参数
# ------------------------------

events {
    worker_connections  1024;       # 每个 worker 进程允许的最大连接数
}

# ------------------------------
# HTTP 配置块
# ------------------------------
http {
    # 常用 MIME 类型定义
    include       mime.types;
    default_type  application/octet-stream;

    # 文件传输优化
    sendfile        on;     # 高效传输静态文件
    tcp_nopush      on;     # 避免分片发送小包
    tcp_nodelay     on;     # 减少延迟
    keepalive_timeout  65;  # 长连接超时时间(秒)

    # 安全和性能
    server_tokens   off;    # 禁止显示 Nginx 版本号

    gzip            on;     # 启用 Gzip 压缩,提高传输效率
    gzip_min_length 1k;     # 小于 1KB 的文件不压缩
    gzip_comp_level 9;      # 压缩等级 1~9
    gzip_types              # 压缩特定类型的文件
        text/plain
        text/css
        application/javascript
        application/json
        image/svg+xml
        font/woff2;

    # 临时文件路径(可以统一管理缓冲区)
    client_body_temp_path  /temp/client_body;
    proxy_temp_path        /temp/proxy;
    fastcgi_temp_path      /temp/fastcgi;
    uwsgi_temp_path        /temp/uwsgi;
    scgi_temp_path         /temp/scgi;

    # ------------------------------
    # Server 配置
    # ------------------------------
    server {
        # 监听端口
        listen 80;
        listen [::]:80;

        # 域名
        server_name example.com;

        # 默认字符集
        charset utf-8;

        # ==============================
        # 私有文件目录(需鉴权,不缓存)
        # ==============================
        location /private/ {
            alias /var/www/private/;      # 实际存放路径
            autoindex on;                 # 启用目录浏览
            autoindex_exact_size off;     # 文件大小格式化显示
            autoindex_localtime on;       # 显示本地时间

            # HTTP 基本鉴权
            auth_basic "Auth Login";
            auth_basic_user_file /etc/nginx/passwd.dat;

            # 禁用缓存
            add_header Cache-Control "no-store, no-cache, must-revalidate, private";
            add_header Pragma "no-cache";
            expires -1;
        }

        # ==============================
        # 公共文件目录(浏览,不缓存)
        # ==============================
        location /public/ {
            alias /var/www/public/;
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;

            # 禁用缓存
            add_header Cache-Control "no-store, no-cache, must-revalidate";
            add_header Pragma "no-cache";
            expires -1;
        }

        # 网站根目录
        root /var/www/html/website;

        # ==============================
        # 错误页面配置
        # ==============================
        error_page 404 /404.html;   # 当请求不存在页面时返回 404.html
        location = /404.html {
            internal;               # 内部调用,用户无法直接访问
        }

        # ==============================
        # 主站(静态页面)
        # ==============================
        location / {
            index index.html;         # 默认首页
        }

        # ==============================
        # 静态资源缓存(图片/图标/字体/JS/CSS)
        # ==============================
        location ~* \.(jpg|jpeg|png|gif|webp|svg|ico|woff2|js|css)$ {
            root /var/www/html/website;

            # 浏览器缓存 1 周
            expires 7d;
            add_header Cache-Control "public";

            # 关闭访问日志(减轻 IO 压力)
            access_log off;
        }
    }
}

Nginx 反向代理

最基础的反向代理配置

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://liwanr.com;

        proxy_set_header Host liwanr.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_ssl_server_name on;
    }
}

Nginx 编译安装

准备环境与依赖库

在编译之前先要明白自己的需求, 比如我现在需要 https / http2 和挂多个 HTTPS 域名, 那在编译 Nginx 之前首先就要安装构建工具和 Nginx 依赖的库。

sudo apt update

sudo apt install -y build-essential \
libssl-dev libpcre3-dev \
zlib1g-dev \
wget