对于前端工程师来说,Nginx 主要用于部署静态资源(HTML/CSS/JS/ 图片等)、处理单页应用路由、反向代理 API 接口等场景。作为新手,掌握核心配置场景即可满足日常开发需求,下面分步骤讲解:
一、先了解 Nginx 基础
- 安装 NginxWindows:官网下载压缩包,解压后直接运行 nginx.exeMac:brew install nginxLinux:sudo apt install nginx(Ubuntu/Debian)或 sudo yum install nginx(CentOS)
- 核心目录配置文件:通常在 nginx/conf/nginx.conf(Windows)或 /etc/nginx/nginx.conf(Linux/Mac)静态资源目录:可自定义(如 html 文件夹,或自己创建的 dist 目录)
二、前端常用配置场景
场景 1:部署静态网站(最基础)
将打包好的前端项目(如 Vue/React 打包后的 dist 文件夹)部署到 Nginx,通过浏览器访问。
配置示例:
打开 nginx.conf,找到 http 块中的 server 配置,修改为:
http {
# 其他默认配置...
server {
listen 80; # 监听端口(访问时用 http://localhost:80)
server_name localhost; # 域名(本地用 localhost)
# 静态资源根目录(指向你的前端项目文件夹)
root /path/to/your/dist; # 例如:Windows 可能是 D:/projects/my-app/dist;Linux 可能是 /home/user/my-app/dist
# 默认首页
index index.html index.htm;
# 访问日志(可选,方便调试)
access_log logs/access.log;
}
}
说明:
- listen 80:默认 HTTP 端口,访问时可直接用 http://localhost(省略端口)
- root:必须填写正确的项目路径,否则会报 403 错误
- 配置后重启 Nginx:nginx -s reload(命令行进入 Nginx 安装目录执行)
场景 2:处理单页应用(SPA)路由问题
Vue/React 等单页应用使用 history 模式时,直接刷新非首页(如 http://localhost/about)会报 404,需要配置 Nginx 重定向到 index.html。
配置示例(在场景 1 的基础上增加):
server {
# 其他配置同上...
# 解决 SPA 路由刷新 404 问题
location / {
try_files $uri $uri/ /index.html; # 找不到文件时,重定向到 index.html
}
}
说明:
- location /:匹配所有路径
- try_files $uri $uri/ /index.html:先尝试访问请求的文件(如 about.js),不存在则尝试访问目录,最后重定向到 index.html,由前端路由处理
场景 3:反向代理 API 接口(解决跨域)
开发或部署时,前端调用后端 API 可能出现跨域问题,可通过 Nginx 代理转发请求(把前端的 API 请求转发到后端服务器)。
配置示例:
假设前端请求的 API 路径是 /api/xxx,需要转发到后端服务器 http://localhost:3000:
server {
# 其他配置同上...
# 代理 API 请求
location /api/ {
# 后端服务器地址
proxy_pass http://localhost:3000; # 注意:结尾是否带 / 会影响路径拼接,建议和后端路径保持一致
# 可选:传递真实客户端 IP 等信息(后端可能需要)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
说明:
- 前端代码中请求 http://localhost/api/user,会被 Nginx 转发到 http://localhost:3000/api/user
- 若后端接口没有 /api 前缀,可在 proxy_pass 中去掉,同时用 rewrite 处理:
location /api/ {
rewrite ^/api/(.*)$ /$1 break; # 去掉 /api 前缀
proxy_pass http://localhost:3000;
}
场景 4:开启 Gzip 压缩(优化加载速度)
压缩静态资源(JS/CSS/HTML),减少传输大小,提升加载速度。
配置示例(在 http 块中添加):
http {
# 开启 Gzip
gzip on;
gzip_types text/css application/javascript text/html application/json; # 需要压缩的文件类型
gzip_min_length 1k; # 小于 1k 的文件不压缩
gzip_comp_level 5; # 压缩级别(1-9,越高压缩率越高但耗 CPU)
}
三、常用命令(必记)
- 启动 Nginx:nginx
- 停止 Nginx:nginx -s stop
- 重启 Nginx(修改配置后生效):nginx -s reload
- 检查配置是否有误:nginx -t(强烈建议修改后先检查,避免启动失败)
四、注意事项
- 路径问题:root 配置的路径必须正确,且 Nginx 要有访问该目录的权限(Linux 可能需要 chmod 授权)。
- 端口占用:若启动失败,可能是 80 端口被占用(如被 Apache 或其他程序占用),可修改 listen 为其他端口(如 8080)。
- 配置备份:修改 nginx.conf 前建议备份,避免配置错误无法恢复。
通过以上配置,前端工程师可以满足大部分部署和开发需求,后续可根据实际场景(如 HTTPS 配置、多站点部署)再深入学习。