Blazor / Kestrel / Apache: Как правильно настроить? - PullRequest
0 голосов
/ 27 мая 2020

Знаю, знаю, Apache - не лучший инструмент для использования в качестве HTTP-прокси, но он мне нужен на моем сервере.

Вот конфигурация моего виртуального хоста:

<VirtualHost *:*>
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:80>
    ServerName my.public.domain
    Redirect / https://my.public.domain/
</VirtualHost>

<VirtualHost *:443>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:50001/ 
    ProxyPassReverse / http://127.0.0.1:50001/
    ServerName my.public.domain
    ErrorLog ${APACHE_LOG_DIR}my-app-error.log
    CustomLog ${APACHE_LOG_DIR}my-app-access.log common
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/my-cert/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/my-cert/privkey.pem
</VirtualHost>

В методе UseUrls у меня http://localhost:50001 настроен как основной URL-адрес, и он перенаправляется Apache на HTTPS @ 443.

Он работает как шарм, однако я вижу это в журналах:

предупреждение: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware [3] Не удалось определить порт https для перенаправления.

В моей конфигурации Apache обрабатывает https-трафик c, Кстати, я не могу обмениваться данными своего приложения с Apache локально через HTTPS, это просто не работает. Я также думаю, что бессмысленно шифровать локальный внутренний трафик c.

К сожалению, для правильной работы моего решения требуется взлом, - мне нужно указать URL-адрес своего сайта publi c в конфигурации моего приложения - в противном случае приложение не знает, какой это внешний адрес. Я имею в виду - я создаю некоторые ссылки вручную, потому что это суть моего вопроса - я не знаю, где фреймворк будет хранить такую ​​информацию. Например, NavigationManager думает, что мой URL-адрес сайта - «http://localhost: 50001 », поэтому, если мне нужен абсолютный URL-адрес в моем приложении, я не могу использовать NavigationManager напрямую, мне нужно «вручную» создать URL-адрес в приложении.

Ссылки, созданные Identity, имеют «http» вместо «https», но он работает, потому что apache перенаправляет все на https.

Есть ли способ (и КАК ), чтобы сделать это более правильно - средство официально сообщить As pNET .Core он имеет конкретный c внешний URL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...