Nginx 配置笔记

记录我在学习 Nginx 过程中常用的配置方法和踩过的坑,方便日后查阅。

一、安装与常用命令

以 CentOS 为例,直接用包管理器安装即可:

yum install -y nginx
systemctl start nginx
systemctl enable nginx
nginx -t          # 检查配置文件语法
nginx -s reload   # 重新加载配置(不中断服务)

配置文件的主文件在 /etc/nginx/nginx.conf,站点配置一般放在 /etc/nginx/conf.d/ 目录下,每个站点一个 .conf 文件,方便管理。

注意:每次修改配置后先执行 nginx -t 检查语法,确认无误再 reload,避免服务异常。

二、部署一个静态网站

把网站文件放到服务器目录(例如 /var/www/mysite),再添加站点配置:

server {
    listen       80;
    server_name  example.com;

    root  /var/www/mysite;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

几个关键点:

三、反向代理配置

把 80 端口的请求转发给后端应用(例如运行在 3000 端口的服务):

server {
    listen       80;
    server_name  app.example.com;

    location / {
        proxy_pass         http://127.0.0.1:3000;
        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_set_header   X-Forwarded-Proto $scheme;
    }
}

反向代理是最常用的功能之一。配置 X-Forwarded-For 等请求头,是为了让后端应用能拿到用户的真实 IP。

四、开启 Gzip 压缩

在 http 块中开启 Gzip,可以明显减小 HTML、CSS、JS 的传输体积:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 1k;
gzip_comp_level 5;

可以用 curl -I -H "Accept-Encoding: gzip" http://example.com 检查响应头中是否出现 Content-Encoding: gzip。

五、踩坑记录

  1. 403 Forbidden:多数是目录权限问题,检查 root 路径每一级目录 nginx 用户都要有执行(x)权限;
  2. 配置不生效:改完忘记 reload,或者 server_name 与实际访问域名不匹配;
  3. 端口被占用:用 netstat -tlnp | grep 80 查看占用进程,避免与 Apache 等服务冲突。

小结

Nginx 的配置灵活但细节多,养成“改配置 → nginx -t → reload → 看日志”的习惯,能避免大部分问题。后续计划补充 HTTPS 证书配置和日志切割的笔记。