插件窝 干货文章 Nginx怎么将DoNetCore部署到阿里云

Nginx怎么将DoNetCore部署到阿里云

sudo Nginx 应用 配置 315    来源:    2025-04-26

将 .NET Core 应用部署到阿里云使用 Nginx 的完整指南

准备工作

  1. 阿里云服务器准备

    • 购买阿里云 ECS 实例(推荐 CentOS 7.x/8.x 或 Ubuntu 18.04/20.04)
    • 确保安全组开放了 80(HTTP)、443(HTTPS) 和 应用端口(通常 5000-5001)
  2. 本地开发环境

    • 确保 .NET Core 应用在本地能正常运行
    • 发布应用:dotnet publish -c Release -o ./publish

部署步骤

1. 服务器环境配置

# 更新系统
sudo yum update -y  # CentOS
sudo apt update && sudo apt upgrade -y  # Ubuntu

# 安装 .NET Core 运行时
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm  # CentOS
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb  # Ubuntu
sudo dpkg -i packages-microsoft-prod.deb

sudo yum install aspnetcore-runtime-6.0 -y  # CentOS,根据版本调整
sudo apt-get install aspnetcore-runtime-6.0 -y  # Ubuntu

2. 上传应用文件

将本地发布的 publish 文件夹上传到服务器,例如 /var/www/myapp/

scp -r ./publish/* root@your-server-ip:/var/www/myapp/

3. 配置应用服务

创建 systemd 服务管理 .NET Core 应用:

sudo nano /etc/systemd/system/myapp.service

添加以下内容(根据实际情况调整):

[Unit]
Description=My .NET Core App

[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/YourApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-myapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl enable myapp.service
sudo systemctl start myapp.service
sudo systemctl status myapp.service  # 检查状态

4. 安装和配置 Nginx

# 安装 Nginx
sudo yum install nginx -y  # CentOS
sudo apt install nginx -y  # Ubuntu

# 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx

配置 Nginx 作为反向代理:

sudo nano /etc/nginx/conf.d/myapp.conf

添加以下配置:

server {
    listen        80;
    server_name   your-domain.com www.your-domain.com;

    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

测试并重新加载 Nginx 配置:

sudo nginx -t
sudo systemctl restart nginx

5. 配置 HTTPS(可选但推荐)

使用 Certbot 获取 Let's Encrypt 证书:

# 安装 Certbot
sudo yum install certbot python3-certbot-nginx -y  # CentOS
sudo apt install certbot python3-certbot-nginx -y  # Ubuntu

# 获取证书
sudo certbot --nginx -d your-domain.com -d www.your-domain.com

# 设置自动续期
sudo certbot renew --dry-run

6. 防火墙配置

# 开放 HTTP/HTTPS 端口
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

# 或者使用 ufw (Ubuntu)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

常见问题排查

  1. 应用无法访问

    • 检查应用是否运行:sudo systemctl status myapp
    • 检查端口是否监听:netstat -tulnp | grep dotnet
    • 检查 Nginx 错误日志:sudo tail -f /var/log/nginx/error.log
  2. 502 Bad Gateway

    • 确保 .NET Core 应用正在运行
    • 检查代理配置中的端口是否正确
    • 确保应用绑定到 0.0.0.0 而不仅仅是 localhost
  3. 静态文件问题

    • 直接在 Nginx 中处理静态文件更高效:

      location / {
       try_files $uri $uri/ @proxy;
      }
      
      location @proxy {
       proxy_pass http://localhost:5000;
       # 其他代理设置...
      }
      
  4. 性能优化

    • 启用响应压缩
    • 配置 Nginx 缓存
    • 考虑使用 Unix 域套接字代替 TCP 端口

维护建议

  1. 设置日志轮转
  2. 配置监控和告警
  3. 定期备份应用和数据库
  4. 保持系统和软件更新

通过以上步骤,您的 .NET Core 应用应该已经成功部署到阿里云并通过 Nginx 提供服务。