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 入口网关

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

相关推荐
明辰之林1 小时前
Nginx 1.26.2 → 1.30.2 升级指南(离线环境)
nginx
木雷坞1 小时前
Qdrant Docker 部署教程:数据卷、API Key 和集合初始化
运维·docker·容器·知识图谱
团象科技1 小时前
外贸站选海外服务器 拆解跨境运营中常被忽略的核心性能细节
运维·服务器
Lv_沐曦2 小时前
银河麒麟桌面版安装、多屏配置、触摸校准
运维·docker·samba·vsftpd·银河麒麟·触控校准·多屏配置
半壶清水2 小时前
ubuntu下利用ns-3 + NetAnim搭建可视化路由选路过程的方法
linux·运维·ubuntu
ting94520003 小时前
SellerClaw 全栈技术深度拆解:基于多智能体集群的跨境电商全链路自动化系统实现
运维·自动化
三雷科技3 小时前
Rsync 命令详解:Linux 文件同步与备份的艺术
linux·运维·服务器
真实的菜3 小时前
Redis 从入门到精通(十三):性能优化与运维实战 —— 慢查询、内存优化、监控与安全
运维·redis·性能优化
j_xxx404_4 小时前
MySQL库操作硬核解析:字符集、校验规则、大小写比较、备份恢复与连接排查
运维·服务器·数据库·人工智能·mysql·ai·oracle