Nginx Ubuntu Server上没有静态文件 - .NET CORE HOST 18.04,带有自定义域



问题:没有加载静态文件(404(

描述:通过反向代理在NGINX上托管.NET Core MVC应用程序。它已配置为使用letsencrypts证书支持SSL并配置,以便可以通过在sites-available文件夹中添加其配置来托管多个网站。

配置文件:

server {
        listen   80;
        listen [::]:80;
        server_name mydomain.com *.mydomain.com;
        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;
                root /var/www/mydomain.com/htdocs;
        }
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/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
}

尝试:我尝试了使用roottry_files设置不同的不同变化。另外,尝试添加一个命名的单独的location部分以通过try_files代理来绑定它。为了测试文件是否首先在那里,我已将curl运行到localhost:5000上的文件位置,并且肯定在那里。

当前状态:访问域时该站点确实加载,但是每个静态文件都抛出404。我在应用程序app.UseStaticFiles();的配置部分中都没有丢失。

这是因为您仅指定了1个规则为反向代理,即使您指定了root属性,也从未使用过。我们需要做的是使用两个从另一个处理404的规则:

server {
    listen   80;
    listen [::]:80;
    server_name mydomain.com *.mydomain.com;
    location / {
        root /var/www/mydomain.com/htdocs;
        error_page 404 @app;
    }
    location @app {
        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 ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/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
}

之所不使用。

然后您可以从应用程序中删除UseStaticFiles

最新更新