NGINX下的站点配置:提供静态文件和.NET文件
Site configuration under NGINX: serve static files and .NET files
我正在尝试让 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.
提前致谢。
您有一个 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
指令。但请注意 alias
和 try_files
在同一个 location
块中, can cause problems.
在这种情况下:
try_files @dotnet /dev/null dog.txt =404;
try_files
语句没有意义。命名位置只能出现在最后一个位置。所以最后一个参数可以是命名位置或 =404
,不能同时是。
不需要 location /
块将请求发送到 location @dotnet
。只需删除 location /
块并将 location @dotnet
块重命名为 location /
.
我正在尝试让 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.
提前致谢。
您有一个 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
指令。但请注意 alias
和 try_files
在同一个 location
块中, can cause problems.
在这种情况下:
try_files @dotnet /dev/null dog.txt =404;
try_files
语句没有意义。命名位置只能出现在最后一个位置。所以最后一个参数可以是命名位置或 =404
,不能同时是。
不需要 location /
块将请求发送到 location @dotnet
。只需删除 location /
块并将 location @dotnet
块重命名为 location /
.