目录结构说明
项目文件目录:
/var/www/Nginx 配置文件目录:
/etc/nginx/sites-available/启用站点目录:
/etc/nginx/sites-enabled/
1. 静态页面配置
1.1 创建项目目录
sudo mkdir -p /var/www/your-domain.com
sudo chown -R $USER:$USER /var/www/your-domain.com
sudo chmod -R 755 /var/www/your-domain.com
1.2 创建 Nginx 配置文件
在 /etc/nginx/sites-available/ 下创建配置文件:
sudo nano /etc/nginx/sites-available/your-domain.com
1.3 静态页面配置示例
server {
listen 80;
listen [::]:80;
server_name zj.beiyupro.top;
# 静态文件根目录
root /var/www/zj.beiyupro.top;
index index.html index.htm;
# 主要路由配置
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存配置
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# 安全头配置
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
}
2. 反向代理配置
2.1 Node.js 应用反向代理示例
server {
listen 80;
listen [::]:80;
server_name beiyupro.top;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 文件上传大小限制
client_max_body_size 25m;
# 超时配置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# WebSocket 支持(如需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# API 路由示例
location /api/ {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3. 启用配置并测试
3.1 启用站点
# 创建符号链接到 sites-enabled
sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled/
# 测试配置文件语法
sudo nginx -t
# 重新加载配置
sudo systemctl reload nginx
3.2 常用 Nginx 命令
# 测试配置
sudo nginx -t
# 重新加载 systemd 守护进程(如果修改了 service 文件才需要)
sudo systemctl daemon-reload
# 重新加载配置
sudo systemctl reload nginx
# 重启 Nginx
sudo systemctl restart nginx
# 查看 Nginx 状态
sudo systemctl status nginx
# 查看错误日志
sudo tail -f /var/log/nginx/error.log
4. SSL 证书配置 (Certbot)
4.1 安装 Certbot
# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx
4.2 首次获取 SSL 证书
# 手动指定域名单个(智能命令)
sudo certbot --nginx -d your-domain.com
# 手动指定域名多个
sudo certbot --nginx -d example.com -d www.example.com
# 仅获取证书,不自动配置
sudo certbot certonly --nginx -d your-domain.com
# 重新安装现有证书到 Nginx 配置中(更新 Nginx 配置文件,添加 SSL 相关配置)
sudo certbot --nginx -d example.com --reinstall
4.3 证书续期
# 测试续期
sudo certbot renew --dry-run
# 手动续期
sudo certbot renew
# 自动续期(添加到 crontab)
sudo crontab -e
# 添加以下行(每天凌晨2点检查)
0 2 * * * /usr/bin/certbot renew --quiet
4.4 查看证书信息
# 查看所有证书
sudo certbot certificates
# 查看特定域名证书
sudo certbot certificates -d your-domain.com