У меня есть ASP. NET Базовое приложение на Linux с Apache, к которому я могу получить доступ, используя http://[::]:5000
, но не через https://example.com/Panel
(ошибка 404) или https://example.com:5000
(ошибка закрытого соединения ).
Apache config:
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
ServerAdmin me@example.com
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
ServerAdmin me@example.com
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
RewriteEngine On
ErrorLog "/var/log/apache2/rewrite"
LogLevel alert rewrite:trace6
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass /Panel http://localhost:5000/Panel
ProxyPassReverse /Panel http://localhost:5000/Panel
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Program.cs
:
public class Program {
public static void Main(string[] args) {
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {
webBuilder.UseUrls("http://*:5000");
webBuilder.UseStartup<Startup>();
});
}
Что нужно сделать, чтобы сделать его доступным через https://example.com/Panel
? Я предполагаю, что это связано с Kestrel, я пытался добавить что-то вроде UseUrls("http://*:5000;https://example.com:5000")
к Program.cs
, но тогда сервер вообще не запустился бы.
Редактировать: я забыл упомянуть, что мой Startup.cs
имеет это строка:
app.UsePathBase("/Panel");
Почему это не работает? Я следовал этому руководству шаг за шагом.