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

时间:2019-01-24 14:50:17

标签: linux apache asp.net-core-2.0

我是asp.net核心的新手。我阅读了整个Microsoft正式文档,并能够在Linux Apache服务器中托管该应用程序。但是我想在一个IP地址下托管多个asp.net核心Web应用程序。请,任何人都可以在此处找到解决方案。

预先感谢

1 个答案:

答案 0 :(得分:0)

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

this.Http.post('http://localhost:3000/users/login', this.login, { observe: 'response' })
    .subscribe((response) => {
        console.log(response.status);
    })

基本上,此配置将使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> 上进行侦听,并将*:80等于ServerName的所有HttpRequest代理到www.example.com

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

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

  1. 第一个叫http://127.0.0.1:5000/,并监听WebApp1
  2. ,另一个被称为0.0.0.0:5000并监听WebApp2

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

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

因此您可以添加两个代理:

代理1:

0.0.0.0:6000

代理2:

<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>