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 三个方向入手实践,再逐步深入负载均衡、缓存策略与性能调优。