Nginx 是一款高性能的 Web 服务器与反向代理服务器,广泛用于 Web 服务、API 网关和负载均衡场景。本文将介绍在 Ubuntu 上从安装、基本配置、HTTPS 证书、反向代理到卸载的完整流程,适合初学者快速上手,也适合运维人员查阅常用配置。
环境:Ubuntu 20.04/22.04/24.04 均适用(命令基本一致)
1. 系统更新与准备
安装任何软件前,建议先更新软件包索引并升级现有包:
1 | sudo apt update |
2. 使用 apt 安装 Nginx
Ubuntu 官方仓库中已经包含了 Nginx,直接安装即可:
1 | sudo apt install nginx -y |
验证是否安装成功:
1 | nginx -version |
如果觉得官方源中的版本偏旧,可以改用 Nginx 官方源(本文不展开,可自行搜索添加)。
3. 验证 Nginx 是否正常运行
安装完成后,Nginx 通常会自动启动。查看服务状态:
1 | sudo systemctl status nginx |
获取服务器 IP:
1 | ip addr show |
在浏览器中访问服务器 IP,如果看到 “Welcome to nginx” 页面,说明安装成功。
4. 安装 Certbot(用于申请 HTTPS 证书)
后续申请 Let’s Encrypt 证书会用到 certbot:
1 | sudo apt install certbot python3-certbot-nginx |
验证版本:
1 | certbot --version |
5. Nginx 配置目录结构简介
Ubuntu/Debian 系发行版的典型结构如下:
1 | /etc/nginx/ |
推荐做法:在 sites-available/ 中为每个站点创建独立的配置文件,然后在 sites-enabled/ 中创建符号链接来启用站点。这样便于管理多个站点。
6. 主配置文件 nginx.conf 概览
主配置文件路径:
1 | /etc/nginx/nginx.conf |
默认内容大致如下(简化版):
1 | user www-data; |
一般不建议频繁修改主配置文件,站点相关的配置应放在独立的虚拟主机文件中。
7. 创建并启用一个站点(HTTP 静态站)
7.1 创建站点配置文件
假设域名为 example.com,创建配置文件:
1 | sudo vim /etc/nginx/sites-available/example.com |
填入以下基本配置(适合静态站点):
1 | server { |
7.2 创建站点目录与测试页面
1 | sudo mkdir -p /var/www/example.com/html |
7.3 启用站点
创建符号链接:
1 | sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ |
测试配置语法是否正确:
1 | sudo nginx -t |
重新加载 Nginx 使配置生效:
1 | sudo systemctl reload nginx |
现在,通过 HTTP 访问 http://example.com 即可看到测试页面。记得在域名注册商处添加 DNS 解析;国内服务器需要完成备案才能正常访问。
8. 禁用站点
如果需要临时禁用某个站点,只需移除符号链接并重新加载:
1 | sudo rm /etc/nginx/sites-enabled/example.com |
配置文件仍然保留在 sites-available/ 中,日后可重新启用。
9. 使用 Certbot 配置 HTTPS(Let’s Encrypt)
确保域名已正确解析到服务器,且 80 和 443 端口可访问。然后执行:
1 | sudo certbot --nginx -d example.com -d www.example.com |
Certbot 会自动:
- 向 Let’s Encrypt 申请证书
- 修改 Nginx 配置以启用 HTTPS
- 可选添加 HTTP 到 HTTPS 的重定向
测试自动续期(不会真的续期,只模拟):
1 | sudo certbot renew --dry-run |
Let’s Encrypt 证书有效期为 90 天,Certbot 会自动处理续期任务(通过 systemd timer 或 cron)。
10. Nginx 反向代理配置
反向代理常用于将请求转发到后端应用(如 Node.js、Python FastAPI、Go 服务等)。例如,将 api.example.com 代理到本机的 3000 端口:
1 | server { |
配置完成后同样需要 nginx -t 和 systemctl reload nginx。
11. 简单负载均衡配置示例
Nginx 可以作为负载均衡器,将流量分发到多个后端服务器。定义一个 upstream 组,然后在 server 中引用:
1 | upstream backend { |
Nginx 支持多种负载均衡算法,如轮询(默认)、least_conn、ip_hash 等,可根据实际需求选择。
12. 日志、监控与安全建议
- 访问日志:
/var/log/nginx/access.log - 错误日志:
/var/log/nginx/error.log
常见的安全加固措施:
- 关闭版本号显示:在
nginx.conf的 http 块中添加server_tokens off; - 限制请求频率(limit_req)
- 禁止访问隐藏文件(已在上面的静态站点示例中包含)
- 配置 HTTPS 并启用 HSTS(Certbot 会自动配置)
- 定期更新 Nginx 和系统
13. 卸载 Nginx(附清理步骤)
如果需要彻底卸载 Nginx,可以按以下步骤操作:
1 | # 停止服务 |
可选清理残留目录:
1 | sudo rm -rf /etc/nginx |
结语
本文涵盖了 Ubuntu 上 Nginx 从安装、静态站点配置、HTTPS 证书申请、反向代理到负载均衡的常用操作,并给出了完整的卸载方法。Nginx 功能强大,更多高级特性(如缓存、rewrite、限流、动静分离等)可以在实际使用中逐步探索。
如果你在配置过程中遇到问题,欢迎留言交流。
说些什么吧!