一、安装与常用命令
以 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;
}
}
几个关键点:
root指向网站根目录,index指定默认首页;try_files用于按顺序查找文件,找不到时返回 404;- 目录权限要保证 nginx 运行用户可读,否则会出现 403 错误。
三、反向代理配置
把 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。
五、踩坑记录
- 403 Forbidden:多数是目录权限问题,检查
root路径每一级目录 nginx 用户都要有执行(x)权限; - 配置不生效:改完忘记 reload,或者
server_name与实际访问域名不匹配; - 端口被占用:用
netstat -tlnp | grep 80查看占用进程,避免与 Apache 等服务冲突。
小结
Nginx 的配置灵活但细节多,养成“改配置 → nginx -t → reload → 看日志”的习惯,能避免大部分问题。后续计划补充 HTTPS 证书配置和日志切割的笔记。