apache - 如何在 Apache 网站内托管 ASP.NET Core Web 应用程序?

标签 apache asp.net-core .net-core yii2 centos7

我有一个旧的 php 应用程序,使用托管在 Centos 服务器上的 Yii2 框架开发,路径为 /var/www/html.此应用程序可通过 http://somedomain.com/ 访问。

我正在开发使用 ASP.NET MVC Core 开发的新 API 项目,需要通过 http://somedomain.com/v2/ 访问该项目。

那么,是否可以在 Apache 站点内托管 dotnet core 应用程序并让它们同时工作?如果是,我该如何实现?

最佳答案

您可以添加反向代理来执行此操作。假设您的 ASP.NET Core 应用程序在 http://127.0.0.1:5000/ 上运行:

dotnet run --urls=http://localhost:5000

如果请求以 http://somedomain.com/v2/ 开头,则代理到 ASP.NET Core 应用

+-------+
|       +----------------------------------------+
|       |                                        |
|       |           PHP module                   |
|       |                                        |
|       +----------------------------------------+
|Apache2|
|       |
|  (80) |                   +--------------------+
|       | start with /v2/   |                    |
|       |                   |   Asp.Net Core App |
|       +------------------->                    |
|       |                   |     (5000)         |
|       |  reverse proxy    |                    |
+-------+                   +--------------------+

首先,通过在 httpd.conf取消注释这些行来配置代理模块:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_http2_module modules/mod_proxy_http2.so

然后为以 /v2/ 开头的请求添加以下反向代理设置:

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass /v2/ http://127.0.0.1:5000/
    ProxyPassReverse / http://somedomain.com/
    ServerName somedomain.com
    ErrorLog ${APACHE_LOG_DIR}webapp1-error.log
    CustomLog ${APACHE_LOG_DIR}webapp1-access.log common
</VirtualHost>

现在它应该按预期工作。

一个工作演示

这是一个监听 8089 而不是 80 的演示:

enter image description here

关于apache - 如何在 Apache 网站内托管 ASP.NET Core Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56779013/

相关文章:

docker - 如何配置 apache(安装在服务器中)以在 docker 中运行 Web 应用程序(django)?

apache - Visual Studio Code 使用 apache 自动刷新浏览器

c# - 如何使用 c# .net 核心 Entity Framework 执行连接

c# - 在 csproj 中,我可以有条件地包含基于运行时标识符的文件吗?

.net-core - .NET Core/Standard .csproj 文件,嵌入许可证文件而不将其添加到使用包的项目中?

c# - 如何防止验证器在 HttpGet 上运行?

php - PHP 的 APC 设置不正确?

android - Retrofit 2 文件上传不附加文件

c# - 在 ASP.NET Core 中的每个操作之前查询数据库以获取角色授权

PHP浮点输出格式