首页 > Sysadmin > 正文

Linux 安装与配置 Nginx

huyuanwen 2026-11-05 Sysadmin

草稿待审;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 末尾加斜杠有影响吗?有,带斜杠会去掉匹配前缀再转发,不带则原样转发;按后端路由约定选择。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。