gpt4 book ai didi

apache - Blazor/Kestrel/Apache : How to configure properly?

转载 作者:行者123 更新时间:2023-12-04 18:33:24 25 4
gpt4 key购买 nike

我知道,我知道,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。

它具有魅力,但是我在日志中看到了这一点:

warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3] Failed to determine the https port for redirect.



在我的配置中,Apache 处理 https 流量,顺便说一句,我无法通过 HTTPS 在本地与 Apache 通信我的应用程序,它只是不起作用。我也认为加密本地内部流量是没有意义的。

不幸的是,我的解决方案需要一些黑客攻击才能 100% 正常工作——我需要在我的应用配置中提供我的公共(public)站点 URL——否则应用不知道它的外部地址是什么。我的意思是——我手动建立了一些链接,因为这是我问题的核心——我不知道框架会将这些信息保存在哪里。例如 NavigationManager认为我的网站 URL 是“ http://localhost:50001”,所以如果我在我的应用程序中需要绝对 URL,我不能使用 NavigationManager直接,我需要“手动”在应用程序中创建 URL。

Identity 生成的链接使用“http”而不是“https”,但它可以工作,因为 apache 将所有内容重定向到 https。

有没有办法(以及如何)更正确地做到这一点 - 一种正式告诉 AspNET.Core 它具有特定外部 URL 的方法?

最佳答案

你在哪里 ServerName my.public.domain ,使用以下内容:
对于端口 80:

ServerName http://my.public.domain:80
对于端口 443:
ServerName https://my.public.domain:443

关于apache - Blazor/Kestrel/Apache : How to configure properly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62036890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com