nginx部署新的前端项目

🚀 Nginx 本地部署前端项目完整指南

核心操作

1、修改nginx.conf,配置端口与静态资源路径

2、修改静态资源的权限

📋 目录


🔧 环境准备

1. 安装 Nginx

# macOS (推荐使用 Homebrew)
brew install nginx

# 启动服务
brew services start nginx

2. 确认安装路径

# 查看 nginx 安装路径
brew --prefix nginx

# 常见路径:
# Intel 芯片:/usr/local/etc/nginx/
# Apple Silicon:/opt/homebrew/etc/nginx/

📁 项目结构

推荐的项目目录结构:

project-root/
├── conf/
│   └── nginx.conf          # 项目配置文件
├── html/
│   ├── project-name/       # 主项目
│   │   ├── index.html
│   │   ├── css/
│   │   ├── js/
│   │   └── img/
│   ├── admin/              # 管理后台
│   └── mobile/             # 移动端
└── logs/                   # 日志文件

⚙️ 配置文件修改

1. 找到默认配置文件

# 查找默认配置文件位置
sudo nginx -t

2. 备份原始配置

# 备份默认配置文件
sudo cp /opt/homebrew/etc/nginx/nginx.conf /opt/homebrew/etc/nginx/nginx.conf.bak

3. 修改配置文件

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;
    keepalive_timeout  65;

    # 主站点 - 80端口
    server {
        listen       80;
        server_name  localhost;
        
        location / {
            root   /Users/Project/your-project/html/main;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /Users/Project/your-project/html/main;
        }
    }

    # 管理后台 - 18081端口
    server {
        listen       18081;
        server_name  localhost;
        
        location / {
            root   /Users/Project/your-project/html/admin;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /Users/Project/your-project/html/admin;
        }
        
        # API 代理(如果需要)
        location /api {
            rewrite /api/(.*)  /$1 break;
            proxy_pass http://localhost:8080;
        }
    }

    # 移动端 - 18082端口
    server {
        listen       18082;
        server_name  localhost;
        
        location / {
            root   /Users/Project/your-project/html/mobile;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /Users/Project/your-project/html/mobile;
        }
        
        # API 代理配置
        location /api {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Real-PORT $remote_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            rewrite /api/(.*)  /$1 break;
            proxy_pass http://localhost:8080;
        }
    }
}

4. 配置要点说明

  • 使用绝对路径:避免相对路径导致的找不到文件问题
  • 添加 index 指令:确保首页能正确访问
  • 配置 error_page:提供友好的错误页面
  • API 代理设置:如果前端需要调用后端接口

🔐 权限设置

1. 设置目录权限

# 设置项目根目录权限(755:所有者可读写执行,其他用户可读执行)
chmod -R 755 /Users/Project/your-project

# 设置文件权限(644:所有者可读写,其他用户只读)
find /Users/Project/your-project -type f -exec chmod 644 {} \;

2. 验证权限设置

# 检查关键文件权限
ls -la /Users/Project/your-project/html/main/index.html
ls -la /Users/Project/your-project/html/main/img/

# 正确的权限显示应该是:
# -rw-r--r--  (644) 对于文件
# drwxr-xr-x  (755) 对于目录

🚀 启动与测试

1. 检查配置语法

# 测试配置文件语法
sudo nginx -t

# 成功输出:
# nginx: the configuration file ... syntax is ok
# nginx: configuration file ... test is successful

2. 启动/重载 Nginx

# 如果是首次启动
sudo nginx

# 如果 nginx 已运行,重载配置
sudo nginx -s reload

# 停止 nginx
sudo nginx -s stop

3. 验证端口监听

# 检查端口是否正常监听
sudo lsof -i :80
sudo lsof -i :18081
sudo lsof -i :18082

# 应该看到 nginx 进程在 LISTEN 状态

4. 浏览器测试

  • 主站:http://localhost/
  • 管理后台:http://localhost:18081/
  • 移动端:http://localhost:18082/

🛠️ 常见问题解决

1. 端口被占用

# 错误:bind() to 0.0.0.0:80 failed (48: Address already in use)

# 解决方案:
# 1. 停止占用端口的进程
sudo nginx -s stop

# 2. 查找并杀死占用进程
sudo lsof -i :80
sudo kill -9 <PID>

# 3. 重新启动
sudo nginx

2. 403 Forbidden 错误

# 原因:文件权限不足

# 解决方案:
chmod -R 755 /Users/Project/your-project
find /Users/Project/your-project -type f -exec chmod 644 {} \;

3. 404 Not Found 错误

# 原因:文件路径错误或文件不存在

# 检查步骤:
# 1. 确认文件存在
ls -la /Users/Project/your-project/html/main/index.html

# 2. 检查配置文件中的 root 路径
# 3. 确保使用绝对路径

4. 静态资源加载失败

# 原因:图片、CSS、JS 文件权限问题

# 解决方案:
find /Users/Project/your-project -name "*.css" -o -name "*.js" -o -name "*.png" -o -name "*.jpg" | xargs chmod 644

💡 最佳实践

1. 配置文件管理

  • ✅ 始终备份原始配置文件
  • ✅ 使用绝对路径避免路径问题
  • ✅ 为每个项目使用不同端口
  • ✅ 添加详细的注释说明

2. 权限管理

  • ✅ 目录权限设置为 755
  • ✅ 文件权限设置为 644
  • ✅ 定期检查权限设置
  • ❌ 避免使用 777 权限(安全风险)

3. 开发环境优化

  • ✅ 启用 gzip 压缩(生产环境)
  • ✅ 配置适当的缓存策略
  • ✅ 设置合理的超时时间
  • ✅ 启用访问日志便于调试

4. 调试技巧

# 实时查看错误日志
tail -f /opt/homebrew/var/log/nginx/error.log

# 实时查看访问日志
tail -f /opt/homebrew/var/log/nginx/access.log

# 检查 nginx 进程状态
ps aux | grep nginx

📚 参考资料


🎯 总结

通过以上步骤,你可以成功在本地使用 Nginx 部署前端项目:

  1. 安装配置:安装 Nginx 并找到默认配置文件
  2. 修改配置:使用绝对路径配置多个 server 块
  3. 权限设置:确保 Nginx 有权限访问所有文件
  4. 启动测试:检查语法、启动服务、验证访问

记住:权限问题是最常见的部署障碍,确保正确设置文件和目录权限是成功部署的关键!


📝 最后更新:2025年7月 | 🔧 适用于:macOS + Homebrew + Nginx

posted @ 2025-07-06 17:02  Nickey103  阅读(1218)  评论(0)    收藏  举报