我是新来的asp.net核心。我阅读了整个微软官方文档,能够在Linux-Apache服务器上托管应用程序。但我想在一个IP地址下托管多个asp.net核心web应用程序。拜托,任何人都可以在这里找到解决方案。
提前谢谢
最佳答案
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
的任何HttpRequest到http://127.0.0.1:5000/
。这就是Apache作为ASP.NET核心代理的工作原理。
至于您的问题,假设您有两个asp.net核心web应用程序:
第一个称为
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>
关于linux - 在单个linux服务器下托管多个asp.net核心Web应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54349357/