Nginx 使用手册:从安装配置到实战部署

1. Nginx 简介

Nginx 是一款高性能的 HTTP 和反向代理服务器,同时支持邮件代理和通用 TCP/UDP 代理。它以高并发、低内存占用和模块化设计著称,广泛用于静态资源服务、反向代理、负载均衡和网关场景。

2. 安装与启动

以 Ubuntu/Debian 为例,可通过系统包管理器快速安装:

bash 复制代码
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

安装完成后,浏览器访问服务器 IP 即可看到默认欢迎页。常用管理命令如下:

  • 启动 :sudo systemctl start nginx
  • 停止 :sudo systemctl stop nginx
  • 重载配置 :sudo nginx -s reload
  • 检查配置 :sudo nginx -t

3. 核心配置文件

Nginx 的主配置文件位于 /etc/nginx/nginx.conf,站点配置通常放在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/ 目录下。一个典型的 server 配置块如下:

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

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

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

4. 静态资源服务

Nginx 处理静态文件非常高效。通过 location 块可以精确控制不同路径的访问规则,并开启缓存与压缩:

nginx 复制代码
location /static/ {
    alias /var/www/static/;
    expires 30d;
    gzip on;
    gzip_types text/css application/javascript image/svg+xml;
}

5. 反向代理配置

反向代理是 Nginx 最常用的功能之一,可将请求转发到后端应用服务:

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

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

6. 负载均衡

通过 upstream 模块可以将流量分发到多台后端服务器,默认采用轮询策略:

nginx 复制代码
upstream backend {
    server 192.168.1.10:8080 weight=3;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080 backup;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

7. HTTPS 配置

为站点启用 HTTPS 需要先获取证书,再在 Nginx 中配置监听 443 端口并开启 HTTP 跳转。下面给出两种常见做法。

7.1 使用 Certbot 自动申请证书

Certbot 可以自动申请并续期 Let's Encrypt 证书,同时改写 Nginx 配置:

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

执行后 Certbot 会自动生成 443 端口的监听规则,并默认开启 HTTP 到 HTTPS 的跳转。

7.2 手动配置证书与跳转

如果已有证书文件,也可以手动编写 server 块,将 80 端口请求统一跳转到 443:

nginx 复制代码
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate     /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

配置完成后执行 sudo nginx -t 检查语法,再 sudo nginx -s reload 重载配置即可生效。

8. 日志与排错

访问日志和错误日志默认位于 /var/log/nginx/ 目录。排查问题时建议先执行 sudo nginx -t 检查语法,再查看错误日志定位具体原因:

bash 复制代码
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log

9. 性能调优建议

  • worker 进程数:通常设置为 CPU 核心数,避免频繁上下文切换。
  • keepalive 连接 :适当调大 keepalive_timeout 以减少握手开销。
  • 静态资源缓存 :为图片、CSS、JS 设置合理的 expires 时间。
  • Gzip 压缩:对文本类资源开启压缩,显著降低传输体积。
  • 文件描述符上限 :高并发场景下需同步调大系统 ulimit 与 worker_connections。

10. 总结

Nginx 凭借简洁的配置语法和强大的模块体系,已成为现代 Web 架构中不可或缺的基础组件。建议从静态服务、反向代理和 HTTPS 三个方向入手实践,再逐步深入负载均衡、缓存策略与性能调优。

相关推荐
JeJe同学1 小时前
Docker镜像导入、容器启动
linux·运维·docker
回眸&啤酒鸭2 小时前
【回眸】自动化白盒测试落地实战指南
运维·自动化·log4j
闲云野鹤在人间2 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
资料库014 小时前
Linux 8个常见运维故障排查
java·linux·运维
机核研创社4 小时前
睡裤明橡筋自动化选型指南与落地四步走
运维·自动化
志栋智能4 小时前
超自动化运维,告别复杂系统的新范式
运维·自动化
零基础1234 小时前
Ubuntu 常用命令汇总
linux·运维·开发语言
Android系统攻城狮5 小时前
Linux Gstreamer深度解析之gst_audio_sink_get_type调用流程与实战(六十五)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
云贝贝贝6 小时前
PostgreSQL 分区表:从设计到运维,大表不再卡
运维·数据库·postgresql