Wrap application in baseurl
This commit is contained in:
parent
7504f067ef
commit
4e52fe1060
|
@ -44,11 +44,7 @@ namespace Jellyfin.Server.Middleware
|
|||
var localPath = httpContext.Request.Path.ToString();
|
||||
var baseUrlPrefix = serverConfigurationManager.Configuration.BaseUrl;
|
||||
|
||||
if (string.Equals(localPath, baseUrlPrefix + "/", StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(localPath, baseUrlPrefix, StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(localPath, "/", StringComparison.OrdinalIgnoreCase)
|
||||
|| string.IsNullOrEmpty(localPath)
|
||||
|| !localPath.StartsWith(baseUrlPrefix, StringComparison.OrdinalIgnoreCase))
|
||||
if (!localPath.StartsWith(baseUrlPrefix, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// Always redirect back to the default path if the base prefix is invalid or missing
|
||||
_logger.LogDebug("Normalizing an URL at {LocalPath}", localPath);
|
||||
|
|
|
@ -88,71 +88,78 @@ namespace Jellyfin.Server
|
|||
/// </summary>
|
||||
/// <param name="app">The application builder.</param>
|
||||
/// <param name="env">The webhost environment.</param>
|
||||
/// <param name="serverApplicationHost">The server application host.</param>
|
||||
/// <param name="appConfig">The application config.</param>
|
||||
public void Configure(
|
||||
IApplicationBuilder app,
|
||||
IWebHostEnvironment env,
|
||||
IServerApplicationHost serverApplicationHost,
|
||||
IConfiguration appConfig)
|
||||
{
|
||||
if (env.IsDevelopment())
|
||||
// Only add base url redirection if a base url is set.
|
||||
if (!string.IsNullOrEmpty(_serverConfigurationManager.Configuration.BaseUrl))
|
||||
{
|
||||
app.UseDeveloperExceptionPage();
|
||||
app.UseBaseUrlRedirection();
|
||||
}
|
||||
|
||||
app.UseMiddleware<ExceptionMiddleware>();
|
||||
|
||||
app.UseMiddleware<ResponseTimeMiddleware>();
|
||||
|
||||
app.UseWebSockets();
|
||||
|
||||
app.UseResponseCompression();
|
||||
|
||||
app.UseCors(ServerCorsPolicy.DefaultPolicyName);
|
||||
|
||||
if (_serverConfigurationManager.Configuration.RequireHttps
|
||||
&& _serverApplicationHost.ListenWithHttps)
|
||||
// Wrap rest of configuration so everything only listens on BaseUrl.
|
||||
app.Map(_serverConfigurationManager.Configuration.BaseUrl, mainApp =>
|
||||
{
|
||||
app.UseHttpsRedirection();
|
||||
}
|
||||
|
||||
app.UseStaticFiles();
|
||||
app.UsePathBase(_serverConfigurationManager.Configuration.BaseUrl);
|
||||
if (appConfig.HostWebClient())
|
||||
{
|
||||
app.UseStaticFiles(new StaticFileOptions
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
FileProvider = new PhysicalFileProvider(_serverConfigurationManager.ApplicationPaths.WebPath),
|
||||
RequestPath = "/web"
|
||||
});
|
||||
}
|
||||
|
||||
app.UseAuthentication();
|
||||
app.UseJellyfinApiSwagger(_serverConfigurationManager);
|
||||
app.UseRouting();
|
||||
app.UseAuthorization();
|
||||
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
||||
{
|
||||
// Must be registered after any middleware that could change HTTP response codes or the data will be bad
|
||||
app.UseHttpMetrics();
|
||||
}
|
||||
|
||||
app.UseLanFiltering();
|
||||
app.UseIpBasedAccessValidation();
|
||||
app.UseBaseUrlRedirection();
|
||||
app.UseWebSocketHandler();
|
||||
app.UseServerStartupMessage();
|
||||
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
endpoints.MapControllers();
|
||||
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
||||
{
|
||||
endpoints.MapMetrics(_serverConfigurationManager.Configuration.BaseUrl.TrimStart('/') + "/metrics");
|
||||
mainApp.UseDeveloperExceptionPage();
|
||||
}
|
||||
|
||||
endpoints.MapHealthChecks(_serverConfigurationManager.Configuration.BaseUrl.TrimStart('/') + "/health");
|
||||
mainApp.UseMiddleware<ExceptionMiddleware>();
|
||||
|
||||
mainApp.UseMiddleware<ResponseTimeMiddleware>();
|
||||
|
||||
mainApp.UseWebSockets();
|
||||
|
||||
mainApp.UseResponseCompression();
|
||||
|
||||
mainApp.UseCors(ServerCorsPolicy.DefaultPolicyName);
|
||||
|
||||
if (_serverConfigurationManager.Configuration.RequireHttps
|
||||
&& _serverApplicationHost.ListenWithHttps)
|
||||
{
|
||||
mainApp.UseHttpsRedirection();
|
||||
}
|
||||
|
||||
mainApp.UsePathBase(_serverConfigurationManager.Configuration.BaseUrl);
|
||||
mainApp.UseStaticFiles();
|
||||
if (appConfig.HostWebClient())
|
||||
{
|
||||
mainApp.UseStaticFiles(new StaticFileOptions
|
||||
{
|
||||
FileProvider = new PhysicalFileProvider(_serverConfigurationManager.ApplicationPaths.WebPath),
|
||||
RequestPath = "/web"
|
||||
});
|
||||
}
|
||||
|
||||
mainApp.UseAuthentication();
|
||||
mainApp.UseJellyfinApiSwagger(_serverConfigurationManager);
|
||||
mainApp.UseRouting();
|
||||
mainApp.UseAuthorization();
|
||||
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
||||
{
|
||||
// Must be registered after any middleware that could change HTTP response codes or the data will be bad
|
||||
mainApp.UseHttpMetrics();
|
||||
}
|
||||
|
||||
mainApp.UseLanFiltering();
|
||||
mainApp.UseIpBasedAccessValidation();
|
||||
mainApp.UseWebSocketHandler();
|
||||
mainApp.UseServerStartupMessage();
|
||||
|
||||
mainApp.UseEndpoints(endpoints =>
|
||||
{
|
||||
endpoints.MapControllers();
|
||||
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
||||
{
|
||||
endpoints.MapMetrics("/metrics");
|
||||
}
|
||||
|
||||
endpoints.MapHealthChecks("/health");
|
||||
});
|
||||
});
|
||||
|
||||
// Add type descriptor for legacy datetime parsing.
|
||||
|
|
Loading…
Reference in New Issue
Block a user