windows用chocolatey装nginx最快:choco install nginx自动处理下载、解压、path;macos需手动软链或brew services启动;linux常见端口冲突,需查杀占用进程;静态文件须匹配root路径与index配置。

Windows 上用 Chocolatey 一键装 Nginx
如果你在 Windows 下做 html 开发,又不想碰编译、解压、配环境变量这些麻烦事,choco install nginx 是最快路径。Chocolatey 能自动下载、校验、解压到标准位置,并把 nginx.exe 加进系统 PATH。
常见错误现象:'nginx' 不是内部或外部命令——多半是没重启终端,或者安装时没勾选“添加到 PATH”(Chocolatey 默认会加,但某些安全策略可能拦截)。装完务必新开一个 PowerShell 或 CMD 窗口再试。
- 先装 Chocolatey:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser; iwr https://community.chocolatey.org/install.ps1 -UseBasicParsing | iex - 再装 Nginx:
choco install nginx - 验证:
nginx -v应输出版本号,nginx -t检查配置是否合法
macOS 用 Homebrew 装完为啥 nginx 命令不生效
Homebrew 安装的 Nginx 默认不 symlink 到 /usr/local/bin,而是放在 /opt/homebrew/opt/nginx/bin/nginx(Apple Silicon)或 /usr/local/opt/nginx/bin/nginx(Intel),所以直接敲 nginx 会报 command not found。
根本原因不是没装好,是 Homebrew 故意不自动注册命令——避免和系统其他服务冲突。你得手动加软链,或者用 brew services start nginx 让它以后台服务方式运行。
立即学习“前端免费学习笔记(深入)”;
- 推荐做法:
sudo ln -sf /opt/homebrew/opt/nginx/bin/nginx /usr/local/bin/nginx(M1/M2) - 启动服务:
brew services start nginx,它会监听localhost:8080,默认根目录是/opt/homebrew/var/www - 改完配置后别用
nginx -s reload,先nginx -t,再brew services restart nginx
Linux(ubuntu/debian)用 apt 装的 Nginx 启动就失败
常见错误信息:nginx.service: Failed with result 'exit-code' 或 Address already in use。绝大多数情况是 80 端口被 apache、Snap 版 firefox、甚至另一个 Nginx 实例占了。
Ubuntu 22.04+ 默认预装了 snap 版 Firefox,它会偷偷监听 80 端口(用于本地调试),导致 Nginx 启动失败。这不是配置问题,是端口冲突。
- 查谁占了 80:
sudo ss -tulpn | grep ':80' - 临时释放:
sudo snap disable firefox(不用卸载,disable 就行) - 改 Nginx 监听端口:编辑
/etc/nginx/sites-enabled/default,把listen 80;改成listen 8080;,然后sudo systemctl restart nginx - 注意:
apt install nginx安装的是稳定版,不带 stream 模块,如果后续要反向代理 TCP 流量,得换nginx-full包或自己编译
HTML 静态文件放哪、怎么让 Nginx 正确服务
Nginx 不像 Python 的 http.server 那样“当前目录即根目录”。它的默认站点根目录由 root 指令决定,而新手常误以为扔进 /var/www/html 就能自动访问——其实还取决于配置里写的路径是否匹配请求 URI。
最容易踩的坑:浏览器打开 localhost 显示 403 Forbidden,不是权限问题,是 index.html 文件名不在 index 指令列表里,或者目录没有开启 autoindex on(不建议开)。
- 确认根目录:
grep -r "root " /etc/nginx/,通常在/etc/nginx/sites-enabled/default里 - 确保该目录下有
index.html,且 Nginx 有读取权限:sudo chown -R $USER:www-data /var/www/html+sudo chmod -R 755 /var/www/html - 检查
index行是否包含index.html,例如:index index.html index.htm; - 改完必须重载:
sudo nginx -s reload,不是 restart —— reload 保持连接,更接近开发时的热更新感
复杂点在于,Nginx 的 location 匹配规则和 root/alias 的行为差异很大,哪怕只加个斜杠,静态资源路径就可能 404。这点没调通之前,别急着加 gzip 或 https 配置。