我有一个通过Apache 2.4.41在Ubuntu 20.04服务器上运行的.NET Core 3.1 Web应用程序。当我访问该网址时,我得到了该网站的服务-链接工作正常,但我得到了404文件,没有找到图像、样式和JavaScript的错误。
journalctl Kestrel服务日志中的示例:
请求启动HTTP/1.1 GET http://example.com/favicon.ico
微软.AspNetCore.托管.诊断[2]
请求在0.3686ms内完成404
我的静态文件目录结构默认为:
wwwroot
- css
-- site.css
- images
-- image1.jpg
-- image2.jpg
- js
-- site.js
- favicon.ico
我的Configure方法 * 大部分 * 是默认的:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseForwardedHeaders();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Shared/Error");
app.UseHsts();
}
app.UseStaticFiles();
app.UseHttpsRedirection();
app.UseCookiePolicy();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
在“/etc/apache 2/sites-enabled”中的网站配置是:
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
ServerAdmin webmaster@localhost
ServerName example.com:443
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
SSLEngine on
SSLCertificateFile <certificate path>
SSLCertificateKeyFile <key path>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
我注意到服务日志中显示的GET URL是HTTP而不是HTTPS,这会有什么影响吗?
1条答案
按热度按时间ejk8hzay1#
**TL;DR:**使用以下命令重新启动kestrel服务文件& apache:
或
我也遇到了同样的问题,我的解决办法是:
如果在
Program.cs
中使用以下代码进行开发时一切正常,然后,我在Ubuntu示例上对Kestrel使用以下代码: