Как разместить основное веб-приложение dotnet на веб-сайте Apache? - PullRequest
1 голос
/ 26 июня 2019

У меня есть старое приложение php, разработанное с использованием платформы Yii2, размещенной на сервере Centos по пути /var/www/html. Это приложение доступно на http://somedomain.com/.

Я работаю над новым проектом API, разработанным с использованием ASP.NET MVC Core, который должен быть доступен на http://somedomain.com/v2/.

Итак, возможно ли разместить приложение dotnet core на сайте Apache, и они оба работают одновременно? Если да, как я могу это сделать?

1 Ответ

3 голосов
/ 27 июня 2019

Вы можете добавить обратный прокси для этого. Допустим, ваше ASP.NET Core приложение работает на http://127.0.0.1:5000/:

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

если запрос начинается с http://somedomain.com/v2/, то прокси на ASP.NET Core App.

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

...