我目前正在尝试在 NGINX 反向代理后面的 ASP.NET Core 应用程序 (.NET 7.0) 中使用 Google Auth。如果我在本地计算机上运行我的应用程序,一切都会正常工作。
如果我尝试在反向代理后面的服务器上进行身份验证,我会收到 HttpClient 超时(60 秒)。
我按照Microsoft文档(https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-7.0&tabs=linux-ubuntu)并尝试来自 stackoverflow 的不同答案,但我无法让它工作。
以下是更多信息:
NGINX 配置:
[...]
location / {
proxy_pass https://127.0.0.1:5123;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10m;
client_body_buffer_size 256k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
}
[...]
appsettings.json:
[...]
"AllowedHosts": "*",
"Urls": "https://127.0.0.1:5123"
[...]
程序.cs:
[...]
var app = builder.Build();
var forwardingOptions = new ForwardedHeadersOptions()
{
ForwardedHeaders = ForwardedHeaders.All
};
forwardingOptions.KnownNetworks.Clear();
forwardingOptions.KnownProxies.Clear();
app.UseForwardedHeaders(forwardingOptions);
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
//app.UseHttpsRedirection();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapControllerRoute(
name: "api",
pattern: "api/{controller}");
app.MapRazorPages();
app.Run();
[...]
原来是网络问题。防火墙阻止了流量。