在单个 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.com
到 http://127.0.0.1:5000/
的 HttpRequest。
这就是 Apache 用作 ASP.NET Core 代理的方式。
关于您的问题,假设您有两个 asp.net 核心网络应用程序:
- 第一个叫做
WebApp1
并在 0.0.0.0:5000
上收听。
- 另一个被称为
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>
我是 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.com
到 http://127.0.0.1:5000/
的 HttpRequest。
这就是 Apache 用作 ASP.NET Core 代理的方式。
关于您的问题,假设您有两个 asp.net 核心网络应用程序:
- 第一个叫做
WebApp1
并在0.0.0.0:5000
上收听。 - 另一个被称为
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>