NGINX下的站点配置:提供静态文件和.NET文件

问题描述 投票:0回答:1

我正在尝试让Nginx提供静态内容并将其转发到.NET。抱歉,如果这很简单,我是nginx的新手。

这是我的网站可用文件:

server {
    listen 80;
    server_name ip_here domain_here;
    root /var/www/html;

    location ^~ /static/ {
        try_files $uri $uri/ cat.txt =404;
    }

    location / {
        try_files @dotnet /dev/null dog.txt =404;
    }

    location @dotnet {
        #...
    }

    ##NOTE: THE FOLLOWING WORKED BEFORE I CHANGED IT TO THE ABOVE
    ##location / {
    ##    try_files $uri $uri/ @dotnet;
    ##}
}

我将注释部分更改为未注释部分,因为(1)我需要example.com/来指向@dotnet,但try_files /显然有效,并且(2)人们指出,拥有/static/更安全。

[当我尝试访问任何路径时,我得到一个404,甚至没有调试dog.txt或cat.txt。

提前感谢。

.net nginx configuration static-files
1个回答
0
投票

您有一个location ^~ /static/块,该块处理任何以/static/开头的URI。 try_files指令将测试文件参数,以确定在计算出的路径名下是否存在本地文件。路径名是通过将root伪指令的值与* file参数的值连接在一起来计算的。这些文件参数应该以前导/开头。

在这种情况下:

root /var/www/html;
location ^~ /static/ {
    try_files $uri $uri/ /cat.txt =404;
}

将对URI /static/foo进行测试,以查看文件是否存在于/var/www/html/static/foo,然后是目录在/var/www/html/static/foo,然后是文件在/var/www/html/cat.txt,最后采取默认操作返回404状态。] >

try_files伪指令的最后一个参数可以是状态码,命名位置或URI(导致内部重定向)。有关详细信息,请参见this document

如果cat.txt位于/var/www/html/static/cat.txt,请使用:

try_files $uri $uri/ /static/cat.txt =404;

注意,在两种情况下,前导/

如果没有名为static的目录,请改用alias指令。但是请注意,aliastry_files在同一locationcan cause problems中。


在这种情况下:

try_files @dotnet /dev/null dog.txt =404;

try_files语句没有任何意义。命名的位置只能出现在最后一个位置。因此,最后一个参数可以是命名位置或=404,不能同时是两者。

[不需要location /块将请求发送到location @dotnet。只需删除location /块并将location @dotnet块重命名为location /

© www.soinside.com 2019 - 2024. All rights reserved.