Nginx 简明使用指南

举报
梦影. 发表于 2026/11/03 10:58:04 2026/11/03
【摘要】 Nginx 是一款高性能的 HTTP 服务器与反向代理,以轻量、稳定、并发能力强著称。本文整理日常最常用的配置与用法,帮助你快速上手。 一、安装 Ubuntu / Debiansudo apt updatesudo apt install nginx CentOS / RHELsudo yum install epel-releasesudo yum install nginx安装完成后,启...

Nginx 是一款高性能的 HTTP 服务器与反向代理,以轻量、稳定、并发能力强著称。本文整理日常最常用的配置与用法,帮助你快速上手。

一、安装

Ubuntu / Debian

sudo apt update
sudo apt install nginx

CentOS / RHEL

sudo yum install epel-release
sudo yum install nginx

安装完成后,启动并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

浏览器访问服务器 IP,看到 “Welcome to nginx!” 即表示安装成功。

二、常用命令

命令 作用
nginx -t 测试配置文件语法是否正确
nginx -s reload 平滑重载配置(不中断服务)
nginx -s stop 快速停止
nginx -s quit 优雅停止(处理完当前请求)
systemctl status nginx 查看运行状态
systemctl restart nginx 重启服务

修改配置后,养成 nginx -t 先校验再 reload 的习惯,可避免配置错误导致服务中断。

三、目录结构

/etc/nginx/
├── nginx.conf          # 主配置文件
├── conf.d/             # 自定义配置(推荐放这里)
├── sites-available/    # 可用站点配置(Debian 系)
├── sites-enabled/      # 已启用站点(软链接到 available)
└── mime.types          # MIME 类型映射
/var/www/html/          # 默认网站根目录
/var/log/nginx/         # 日志目录(access.log / error.log)

四、配置静态网站

最基础的场景:用 Nginx 托管一个静态目录。
新建 /etc/nginx/conf.d/my-site.conf:

server {
    listen       80;
    server_name  example.com;
    root   /var/www/my-site;
    index  index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
}

说明:

  • listen 80:监听 80 端口。
  • server_name:匹配的域名或 IP。
  • root:网站文件根目录。
  • index:默认访问的首页文件。
  • try_files:按顺序查找文件,找不到则返回 404。
    配置完成后:
sudo nginx -t && sudo nginx -s reload

五、反向代理

将前端请求转发到后端服务(如运行在 3000 端口的 Node 应用):

server {
    listen 80;
    server_name api.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;
    }
}

几个常用的 proxy_set_header:

  • Host:保留原始请求头中的 Host。
  • X-Real-IP:把客户端真实 IP 传给后端。
  • X-Forwarded-For:记录代理链路上的 IP 列表。
  • X-Forwarded-Proto:告知后端原始协议是 http 还是 https。

六、负载均衡

当后端有多个实例时,用 upstream 做负载均衡:

upstream backend {
    server 127.0.0.1:3001;
    server 127.0.0.1:3002;
    server 127.0.0.1:3003;
}
server {
    listen 80;
    server_name api.example.com;
    location / {
        proxy_pass http://backend;
    }
}

常用调度策略:

策略 写法 说明
轮询(默认) server 127.0.0.1:3001; 依次分配
权重 server 127.0.0.1:3001 weight=3; 按权重分配
IP 哈希 在 upstream 内加 ip_hash; 同一 IP 固定访问同一后端
最少连接 在 upstream 内加 least_conn; 优先分配给连接数少的后端

七、HTTPS 配置

使用 Let’s Encrypt 免费证书最简单的方式:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动修改 Nginx 配置并设置定时续期。
手动配置 HTTPS 的模板:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    root /var/www/my-site;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}
# HTTP 跳转到 HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

八、Gzip 压缩

开启压缩可显著减少传输体积:

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

九、常见问题排查

  1. 配置不生效:先 nginx -t 检查语法,再确认是否 reload。
  2. 端口被占用:sudo lsof -i:80 查看占用进程,或改用其他端口。
  3. 403 Forbidden:通常是文件权限问题,确保 Nginx 用户(如 www-data)对根目录有读权限。
  4. 502 Bad Gateway:后端服务未启动或端口不对,检查 proxy_pass 地址。
  5. 查看日志:
    sudo tail -f /var/log/nginx/error.log
    sudo tail -f /var/log/nginx/access.log
    

十、小结

场景 关键指令
静态托管 root + index + try_files
反向代理 proxy_pass + proxy_set_header
负载均衡 upstream + proxy_pass
HTTPS ssl_certificate + listen 443 ssl
压缩 gzip on + gzip_types
Nginx 的强大远不止于此(缓存、限流、重写、WebSocket 等),但掌握以上基础已能覆盖绝大多数日常需求。遇到问题多看 error.log,配置改动坚持 nginx -t 先校验,就能少踩很多坑。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。