Nginx可以作为Vue开发环境的反向代理服务器,解决跨域问题并提供静态资源服务。以下是详细配置方法:
首先确保已安装Nginx:
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
创建或修改Nginx配置文件(通常在/etc/nginx/conf.d/vue-dev.conf
):
server {
listen 80;
server_name localhost;
location / {
# 代理到Vue开发服务器(默认8080端口)
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 静态文件缓存设置
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1d;
add_header Cache-Control "public, no-transform";
}
}
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
# ...其他proxy设置同上
}
# 代理API请求到后端服务器
location /api/ {
proxy_pass http://your-backend-server:port/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 跨域设置
add_header 'Access-Control-Allow-Origin' 'http://localhost:8080';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;
location / {
proxy_pass http://localhost:8080;
# ...其他proxy设置同上
}
}
热更新(HMR)不工作:
javascript
module.exports = {
devServer: {
public: 'your-domain.com',
disableHostCheck: true
}
}
静态资源404错误:
跨域问题依然存在:
使用Docker容器化开发环境:
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY dist /usr/share/nginx/html
开发环境与生产环境配置分离:
proxy_pass
到dev server启用gzip压缩提高开发效率:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
通过以上配置,Nginx可以高效地服务于Vue开发环境,解决跨域问题,并提供接近生产环境的开发体验。