草稿待审;WSL2 Ubuntu 24.04 实测 apt 安装、nginx -t、systemctl 启动/重载、静态站点与反向代理均通过。
在 Ubuntu/Debian 上用 apt 装 Nginx,再改配置文件、起服务、配静态站点或反向代理,整套流程走一遍。
一、安装 Nginx
Debian/Ubuntu 官方仓库直接提供 nginx 包,装完就能用[1]:
sudo apt update
sudo apt install nginx
装完确认版本与服务状态:
nginx -v
systemctl status nginx --no-pager
Nginx 由一个 master 进程和若干 worker 进程组成:master 读配置、管 worker,worker 处理请求[2]。默认监听 80 端口,装完即可访问欢迎页。
二、配置文件结构
主配置 /etc/nginx/nginx.conf 由全局块、events 块、http 块组成;http 块末尾 include 站点文件[2]:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events { worker_connections 768; }
http {
include /etc/nginx/mime.types;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Debian/Ubuntu 约定把每个站点写成 /etc/nginx/sites-available/<name>,再软链到 /etc/nginx/sites-enabled/ 启用[3]。新增配置后先校验再重载。
三、配置静态站点
新建站点文件并启用:
sudo tee /etc/nginx/sites-available/mysite <<'EOF'
server {
listen 80;
server_name example.com;
root /var/www/mysite;
index index.html;
}
EOF
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/mysite
sudo nginx -t
sudo systemctl reload nginx
nginx -t 只校验语法,不改运行状态;通过后再 reload,避免把坏配置推到线上[4]。reload 发送 HUP 信号,master 启动新 worker、优雅退旧 worker,不丢连接[4]。
四、配置反向代理
把请求转发到后端应用(如 127.0.0.1:3000):
sudo tee /etc/nginx/sites-available/app <<'EOF'
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
sudo nginx -t && sudo systemctl reload nginx
五、常用命令与排错速查
| 现象 | 原因 | 处理 | |
|---|---|---|---|
nginx: [emerg] ... |
配置语法错误 | nginx -t 定位行,修完再 reload |
|
Address already in use |
端口被占用 | `ss -ltnp | grep :80` 查进程 |
| 重载后仍旧内容 | 浏览器缓存或未 reload | 确认 systemctl reload nginx 成功 |
|
| 502 Bad Gateway | 后端未启动或端口错 | 检查后端进程与 proxy_pass 地址 | |
| 权限拒绝读文件 | root 路径权限不足 | chown -R www-data:www-data /var/www/... |
停止/启动/重载:systemctl start|stop|restart|reload nginx,或直接 nginx -s reload[4][3]。
六、回滚与局限性
回滚:删掉 sites-enabled 里的软链、删 sites-available 文件、nginx -t && systemctl reload nginx;非 systemd drop-in,直接恢复备份配置即可。
局限性:本机 WSL2 无法验证真实公网域名、TLS 证书签发与续期、以及多 worker 在高并发下的行为;生产环境需在真实服务器上复测。TLS 配置(listen 443 ssl、证书路径)未在本机实测。
实测记录
- 测试机:WSL2 Ubuntu 24.04.4 LTS,内核 6.6.114.1-microsoft-standard-WSL2;2026-11-05。
- Nginx 版本:1.24.0 (Ubuntu)。
- 已验证:apt 安装、
nginx -v、nginx -t、systemctl start/reload、静态站点 8080 返回 200、反向代理 8081 转发到 python http.server 返回内容、purge 清理后 dpkg 无残留。 - 局限性:TLS、真实域名、多 worker 并发未测。
常见提问
- apt 装的 Nginx 和 nginx.org 官方包有什么区别?前者版本略旧但维护方便;需要新特性或特定模块时按官方文档加仓库[1]。
- 修改配置后必须 reload 吗?是,nginx 不会自动读新配置;
nginx -t通过后再 reload。 - sites-enabled 里的软链断了会怎样?include 会跳过,站点不生效但不报错,需
nginx -t检查。 - 能不能不用 sites-enabled?可以,直接在 nginx.conf 的 http 块里 include 自定义路径,但约定目录便于管理。
- proxy_pass 末尾加斜杠有影响吗?有,带斜杠会去掉匹配前缀再转发,不带则原样转发;按后端路由约定选择。
参考资料
- [1] nginx: Linux packages (nginx.org)(nginx-linux-packages)
- [2] Beginner's Guide (nginx.org)(nginx-beginner)
- [3] nginx(8) – Linux manual page (Debian)(debian-nginx-man)
- [4] Controlling nginx (nginx.org)(nginx-control)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。