【问题标题】:Can't load static files on Blazor server behind NGINX proxy无法在 NGINX 代理后面的 Blazor 服务器上加载静态文件
【发布时间】:2021-03-25 22:08:10
【问题描述】:

我在 Ubuntu 20.04 上托管了一个使用 .NET5 创建的 BlazorServerSide。 当我直接使用 dotnet 命令启动应用程序时,它工作正常。 但是,当它由 systemd 服务启动时,不会加载静态文件。 wwwroot 目录及其内容确实存在。 顺便说一句,我已经删除了/etc/nginx/sites-enabled/ 中默认文件的符号链接。 是这个原因吗?

nginx 配置:

server {
        server_name {My_FQDN} www.{My_FQDN};

        location / {
                proxy_pass         http://localhost:5000;
                proxy_http_version 1.1;
                proxy_set_header   Upgrade $http_upgrade;
                proxy_set_header   Connection keep-alive;
                proxy_set_header   Host $host;
                proxy_cache_bypass $http_upgrade;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Proto $scheme;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/www.{My_FQDN}/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/www.{My_FQDN}/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}
server {
    if ($host = {My_FQDN}) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = www.{My_FQDN}) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        server_name {My_FQDN}
        listen 80;
    return 404; # managed by Certbot
}

服务文件:

[Unit]
Description=MyBlazorApp.
After=local-fs.target

[Service]
Type=simple
ExecStart=/usr/bin/dotnet /home/{username}/{MY_BLAZOR_APP_DIR}/{MY_APP_NAME}.dll
RemainingAfterExit=yes
RestartSec=10
KillSignal=SIGINT
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

【问题讨论】:

    标签: asp.net-core blazor reverse-proxy blazor-client-side asp.net-core-5.0


    【解决方案1】:
    using Microsoft.AspNetCore.HttpOverrides;
    
    ...
    
    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });
    
    app.UseAuthentication();
    

    和 通过将应用程序目录设置为/var/www/{AppDir}解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      相关资源
      最近更新 更多