在单个 linux 服务器下托管多个 asp.net 核心 Web 应用程序

Host multiple asp.net core web application under a single linux server

我是 asp.net 核心的新手。我阅读了整个 Microsoft 官方文档并能够在 Linux Apache 服务器中托管该应用程序。但我想在一个 IP 地址下托管多个 asp.net 核心 Web 应用程序。拜托,这里有人有解决方案 post。

提前致谢

official document 向我们展示了一种使用 Apache 作为反向代理的方法:

<VirtualHost *:*>
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName www.example.com
    ServerAlias *.example.com
    ErrorLog ${APACHE_LOG_DIR}helloapp-error.log
    CustomLog ${APACHE_LOG_DIR}helloapp-access.log common
</VirtualHost>

基本上,此配置将使 Apache 侦听 *:80 并代理任何 ServerName 等于 www.example.comhttp://127.0.0.1:5000/ 的 HttpRequest。

这就是 Apache 用作 ASP.NET Core 代理的方式。

关于您的问题,假设您有两个 asp.net 核心网络应用程序:

  1. 第一个叫做 WebApp1 并在 0.0.0.0:5000 上收听。
  2. 另一个被称为 WebApp2 并在 0.0.0.0:6000 上收听。

您的 Apache 服务器侦听 0.0.0.0:80。对于任何传入的 http 请求,

  • Host 等于 www.webapp1.org 时,将此请求代理到 0.0.0.0:5000
  • Host 等于 www.webapp2.org 时,将此请求代理到 0.0.0.0:6000

所以你可以添加两个代理:

代理 1:

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName www.webapp1.org
    ServerAlias *.webapp1.org
    ErrorLog ${APACHE_LOG_DIR}webapp1-error.log
    CustomLog ${APACHE_LOG_DIR}webapp1-access.log common
</VirtualHost>

代理 2 :

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:6000/
    ProxyPassReverse / http://127.0.0.1:6000/
    ServerName www.webapp2.org
    ServerAlias *.webapp2.org
    ErrorLog ${APACHE_LOG_DIR}webapp1-error.log
    CustomLog ${APACHE_LOG_DIR}webapp2-access.log common
</VirtualHost>