我是新来的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/

10-13 05:30