作为IT工程师,我将详细介绍如何使用Nginx部署前端项目的完整流程。
# 构建生产环境代码(以React/Vue为例)
npm run build
# 或
yarn build
这会生成dist
或build
目录,包含静态资源文件。
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
# MacOS
brew install nginx
编辑配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
):
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
root /path/to/your/project/dist; # 指向构建后的目录
index index.html;
location / {
try_files $uri $uri/ /index.html; # 支持前端路由
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, no-transform";
}
}
# 测试配置是否正确
sudo nginx -t
# 启动Nginx
sudo systemctl start nginx
# 重载配置(修改后)
sudo systemctl reload nginx
# 设置开机启动
sudo systemctl enable nginx
# 安装Certbot
sudo apt install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d yourdomain.com
upstream frontend_servers {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://frontend_servers;
}
}
location /api/ {
proxy_pass http://api_server:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1000;
gzip_proxied any;
403 Forbidden错误
index
文件存在且命名正确路由刷新404
try_files $uri $uri/ /index.html;
静态资源加载失败
性能优化
listen 443 ssl http2;
如需更具体的配置或遇到特殊问题,可以提供更多细节,我可以给出更有针对性的建议。