Nginx 教程:从入门到能上线

Nginx 是一款高性能 Web 服务器,也常被用作反向代理、负载均衡器、静态资源服务器和 HTTPS 网关。它的特点是占用资源少、并发能力强、配置清晰,非常适合部署网站、API 服务和前端项目。

一、安装 Nginx

在 Ubuntu / Debian 上:

bash 复制代码
sudo apt update
sudo apt install nginx

在 CentOS / Rocky Linux 上:

bash 复制代码
sudo dnf install nginx

在 macOS 上:

bash 复制代码
brew install nginx

启动并查看状态:

bash 复制代码
sudo systemctl start nginx
sudo systemctl status nginx

设置开机自启:

bash 复制代码
sudo systemctl enable nginx

浏览器访问服务器 IP,如果看到 Nginx 欢迎页,说明安装成功。

二、常用目录

不同系统路径略有差异,Linux 上常见结构如下:

text 复制代码
/etc/nginx/nginx.conf              # 主配置文件
/etc/nginx/conf.d/                 # 子配置目录
/etc/nginx/sites-available/        # 可用站点配置,部分系统有
/etc/nginx/sites-enabled/          # 已启用站点配置,部分系统有
/var/www/html/                     # 默认静态资源目录
/var/log/nginx/access.log          # 访问日志
/var/log/nginx/error.log           # 错误日志

修改配置后,先检查语法:

bash 复制代码
sudo nginx -t

确认无误后重载配置:

bash 复制代码
sudo systemctl reload nginx

三、核心配置结构

Nginx 配置大致分为几层:

nginx 复制代码
events {
    worker_connections 1024;
}

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

        location / {
            root /var/www/html;
            index index.html;
        }
    }
}

常见含义:

text 复制代码
events:连接相关配置
http:HTTP 服务配置
server:一个虚拟主机
location:匹配请求路径
listen:监听端口
server_name:域名
root:静态文件目录
index:默认首页文件

四、部署静态网站

假设你的前端构建产物在:

text 复制代码
/var/www/example

配置 Nginx:

nginx 复制代码
server {
    listen 80;
    server_name example.com;

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

    location / {
        try_files $uri $uri/ /index.html;
    }
}

try_files 对单页应用很重要,比如 Vue、React、Angular。它可以让 /user/1 这种前端路由也正确返回 index.html。

五、反向代理后端服务

假设后端服务运行在本机 3000 端口:

nginx 复制代码
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;
    }
}

这样用户访问:

text 复制代码
http://api.example.com

实际请求会被 Nginx 转发到:

text 复制代码
http://127.0.0.1:3000

六、配置 HTTPS

推荐使用 Certbot 自动申请 Let's Encrypt 证书。

安装:

bash 复制代码
sudo apt install certbot python3-certbot-nginx

申请证书:

bash 复制代码
sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动修改 Nginx 配置,并添加 HTTPS 相关规则。

检查自动续期:

bash 复制代码
sudo certbot renew --dry-run

七、负载均衡

Nginx 可以把请求分发到多个后端服务:

nginx 复制代码
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;
    }
}

默认是轮询策略,也就是请求依次分发到不同服务器。

八、常用命令

bash 复制代码
sudo nginx -t                    # 检查配置
sudo systemctl start nginx        # 启动
sudo systemctl stop nginx         # 停止
sudo systemctl restart nginx      # 重启
sudo systemctl reload nginx       # 平滑重载
sudo tail -f /var/log/nginx/error.log   # 查看错误日志

九、常见问题

如果页面打不开,优先检查:

bash 复制代码
sudo nginx -t
sudo systemctl status nginx
sudo tail -f /var/log/nginx/error.log

如果返回 403 Forbidden,通常是目录权限或缺少首页文件。

如果返回 502 Bad Gateway,通常是后端服务没有启动,或者 proxy_pass 地址写错。

如果配置修改后不生效,确认是否执行了:

bash 复制代码
sudo systemctl reload nginx

十、总结

Nginx 最常用的三种场景是:

text 复制代码
静态网站部署
反向代理后端服务
HTTPS 入口网关

掌握 server、location、root、try_files、proxy_pass 这几个核心配置后,就已经能完成大多数实际部署工作。真正上线时,再配合日志、HTTPS、限流、缓存和负载均衡,就可以搭建稳定可靠的 Web 服务入口。

相关推荐
qqxiaoxingxing9 小时前
HR重复性工作自动化落地指南:先梳理任务边界,再选工具
运维·自动化
王琦031810 小时前
持续集成持续交付企业示例
运维·ci/cd
Lsetea10 小时前
SSL证书指纹相同但文件哈希不同:PEM、DER与公钥摘要怎么比
运维·https·ssl证书·openssl·证书链
wtblszn10 小时前
废气处理余热回收设备远程运维系统方案
运维
乔旭伟10 小时前
Linux 服务器备份实战:一致性快照、日志归档与恢复演练
linux·运维·服务器
cpolar技术支持11 小时前
把配置发出去怕带出密钥?先把含凭据配置转成脱敏只读快照,用 cpolar 给同事核对差异
运维·python·内网穿透·cpolar·配置脱敏
我不会起名字32211 小时前
Redis 突然只能读不能写:MISCONF 报错的 3 类触发条件与 4 步恢复
运维·redis·持久化·排查·misconf
workflower11 小时前
Agentic AI 时代的企业ICT 基础设施运维
运维·人工智能·机器学习·重构·云计算·汽车
szxinmai主板定制专家12 小时前
ZYNQ 数据采集方案踩坑总结:电力强电磁干扰、工业现场多协议适配优化
运维·人工智能·fpga开发·机器人·zynq
猫咪很可爱12 小时前
Oracle RAC 启动失败排查:私网通信与内核参数优化实战
运维·数据库·oracle