This commit is contained in:
xljiulang 2021-07-15 20:19:13 +08:00
parent 0bcce75cb8
commit 64596e7656
3 changed files with 11 additions and 7 deletions

View File

@ -33,7 +33,7 @@ namespace FastGithub
else else
{ {
var port = context.Request.Host.Port ?? 443; var port = context.Request.Host.Port ?? 443;
var destinationPrefix = $"http://{host}:{port}/"; var destinationPrefix = $"https://{host}:{port}/";
var httpClient = new HttpMessageInvoker(httpClientHanlder, disposeHandler: false); var httpClient = new HttpMessageInvoker(httpClientHanlder, disposeHandler: false);
await httpForwarder.SendAsync(context, destinationPrefix, httpClient); await httpForwarder.SendAsync(context, destinationPrefix, httpClient);
} }

View File

@ -72,7 +72,7 @@ namespace FastGithub.Scanner
/// <summary> /// <summary>
/// 查找最快的ip来发送消息 /// 替换github域名为ip
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <param name="cancellationToken"></param> /// <param name="cancellationToken"></param>
@ -82,12 +82,14 @@ namespace FastGithub.Scanner
var uri = request.RequestUri; var uri = request.RequestUri;
if (uri != null && uri.HostNameType == UriHostNameType.Dns) if (uri != null && uri.HostNameType == UriHostNameType.Dns)
{ {
var address = this.Resolve(uri.Host); var githubAddress = this.ResolveGithub(uri.Host);
if (address != null) if (githubAddress != null)
{ {
var builder = new UriBuilder(uri) var builder = new UriBuilder(uri)
{ {
Host = address.ToString() Scheme = Uri.UriSchemeHttp,
Host = githubAddress.ToString(),
Port = 443
}; };
request.RequestUri = builder.Uri; request.RequestUri = builder.Uri;
request.Headers.Host = uri.Host; request.Headers.Host = uri.Host;
@ -99,10 +101,11 @@ namespace FastGithub.Scanner
/// <summary> /// <summary>
/// 解析域名 /// 解析域名
/// 非github域名返回null
/// </summary> /// </summary>
/// <param name="domain"></param> /// <param name="domain"></param>
/// <returns></returns> /// <returns></returns>
private IPAddress? Resolve(string domain) private IPAddress? ResolveGithub(string domain)
{ {
// 非github的域名返回null走上游dns // 非github的域名返回null走上游dns
if (this.githubResolver.IsSupported(domain) == false) if (this.githubResolver.IsSupported(domain) == false)
@ -110,6 +113,7 @@ namespace FastGithub.Scanner
return default; return default;
} }
// 缓存1s避免做为公共服务后不必要的并发查询
var key = $"domain:{domain}"; var key = $"domain:{domain}";
var address = this.memoryCache.GetOrCreate(key, e => var address = this.memoryCache.GetOrCreate(key, e =>
{ {

View File

@ -92,7 +92,7 @@ namespace FastGithub.Scanner.LookupProviders
catch (Exception) catch (Exception)
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
this.logger.LogWarning($"使用{metaUri}的副本数据"); this.logger.LogWarning($"使用副本数据{metaUri}");
return await httpClient.GetFromJsonAsync<Meta>(metaUri, cancellationToken); return await httpClient.GetFromJsonAsync<Meta>(metaUri, cancellationToken);
} }
} }