在单个 linux 服务器下托管多个 asp.net core web 应用程序

sas*_*gya 2 linux apache asp.net-core-2.0

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

提前致谢

itm*_*nus 5

正式文件向我们展示了使用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>
Run Code Online (Sandbox Code Playgroud)

基本上,这个配置将让Apache侦听*:80和代理任何的HttpRequest其ServerName平等www.example.comhttp://127.0.0.1:5000/

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

至于你的问题,假设你有两个asp.net core web应用:

  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>
Run Code Online (Sandbox Code Playgroud)

代理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>
Run Code Online (Sandbox Code Playgroud)