Официальный документ показывает нам способ использования 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
и прокси-сервер любого HttpRequest, чейServerName
равно www.example.com
до http://127.0.0.1:5000/
.
Вот как работает Apache, используемый в качестве прокси для ASP.NET Core.
Что касается вашего вопроса, предположим, у вас два asp.веб-приложения net core:
- первое называется
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>