【问题标题】:serve multiple .net core projects same server, subdomains为多个 .net 核心项目提供相同的服务器、子域
【发布时间】:2021-11-14 12:40:32
【问题描述】:

我今晚一直在尝试配置 Nginx 以使子域工作,我没有成功,我不知道如何让它工作,有人可以帮忙

方案是这样的

"www.example.com" points to my .net core mvc project.     
"api1.example.com" points to my .net core api1 project.      
"api2.example.com" points to my .net core api2 project  

我的项目在我的 linux 服务器中如下所示。

mvc /var/www/example.com   
api1 /var/www/api1.example.com  
api2 /var/www/api2.example.com

【问题讨论】:

    标签: asp.net nginx nginx-config


    【解决方案1】:

    我自己想通了,我会在这里解释我是如何让它工作的。
    在我最初的问题中,我提到了两个项目 api1 和 api2,在这个解决方案中,我将只使用一个项目 api1 来缩短这个项目,

    1- 您需要在 A/AAAA 记录中注册您的子域,您可以在服务器提供商仪表板中进行此操作,我的是“linode”,
    我添加的记录是“api1”,你也会被要求提供一个IP地址,它是你服务器的公共IP,

    2- 发布你的项目并将生成的文件复制到/var/www/api1.example.com
    确保端口与 mvc 项目不同。
    对我来说,mvc 项目端口是 5000。
    api1项目端口为5001。

    3-为你的api1项目创建一个服务,服务文件应该保存在以下目录/etc/systemd/system/kestrel-api1.service

    [Unit]
    Description=Example My ASP.NET Core Application running on Ubuntu
    
    [Service]
    WorkingDirectory=/var/www/api1.example.com
    ExecStart=/usr/bin/dotnet /var/www/api1.example.com/api1.dll
    Restart=always
    # Restart service after 10 seconds if the dotnet service crashes:
    RestartSec=10
    KillSignal=SIGINT
    SyslogIdentifier=dotnet-example
    User=www-data
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    Environment=ASPNETCORE_URLS=http://127.0.0.1:5001
    
    [Install]
    WantedBy=multi-user.target

    4- 在你的 mvc 项目的配置文件中添加一个新的服务器块

    server {
      listen 80;
      listen [::]:80;
    
      server_name api1.example.com *.example.com;
    
      root /var/www/api1.example.com;
    
      index index.html index.htm;
           location / {
              proxy_pass  http://localhost:5001;    
           }
    }

    5- 最后别忘了在你的 SSH 终端中使用这个命令重启新的 api1 服务。

    sudo systemctl restart kestrel-api1.service
    

    另外你需要使用这个命令重启 Nginx

    service nginx restart
    

    现在,如果您导航到 example.com,将提供 mvc 项目。
    如果您导航到 api1.example.com,它将为 api1 项目提供服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-22
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 2011-11-11
      • 2019-06-10
      • 2019-11-08
      相关资源
      最近更新 更多