nginx Sinatra头元刷新404

nginx Sinatra头元刷新404,nginx,sinatra,refresh,nginx-location,Nginx,Sinatra,Refresh,Nginx Location,由于某些原因,页面正在转发到nginx-404页面。除了这一页外,该网站正在运行。在我的登录页上,标题中有以下内容: 偶数硬编码http://mydomain.local/second提供相同的404 这是一个Sinatra部署 get "/second" do @title = "my Title" erb :index end 我在想,我在nginx.conf中的locations指令可能有点古怪: location / { autoindex

由于某些原因,页面正在转发到
nginx
-404页面。除了这一页外,该网站正在运行。在我的登录页上,标题中有以下内容:

偶数硬编码
http://mydomain.local/second
提供相同的404

这是一个
Sinatra
部署

get "/second" do
  @title = "my Title"
  erb :index
end
我在想,我在
nginx.conf
中的
locations
指令可能有点古怪:

location / {
    autoindex                       off;
    try_files                       $uri $uri/ $uri/$request =404;
    index                           /;
    }
有人知道为什么Sinatra不能捕获路线而只是提供文件吗?干杯

让我们来分析一下:

autoindex off;
您不需要指定它,默认情况下它处于关闭状态

try_files $uri $uri/ $uri/$request =404;
尝试按此顺序将请求与文件相匹配,然后提供第一个匹配的请求。如果没有匹配项,则返回404。您的请求是
http://mydomain.local/second
,因此您告诉Nginx要查找:

  • webroot/秒
  • webroot/秒/
  • webroot/second/GET/second HTTP/1.1
  • 返回404
  • index指令告诉Nginx如何处理以斜杠结尾的请求,您通常会在项目中指定可能是索引文件的文件,例如index.php、index.html等。您不会真正使用此指令,也不会同时使用
    try_文件,因为它们具有类似的用途


    还值得注意的是,Nginx在任何没有尾部斜杠且不以文件扩展名结尾的请求中添加了一个尾部斜杠,因此也可能是
    get”/second“do
    需要更改为
    get”/second/“do
    ,因为我怀疑Sinatra是否会看到没有尾部斜杠的请求。啊,很高兴知道。2.Sinatra使用
    /
    命名法,因此
    $uri
    应该可以工作。本质上,我要求的是
    GET/second
    ,但是
    404
    。在任何情况下,即使刷新和该页面上的链接设置为
    /second/
    ,我仍然得到
    404
    。它不是作为单独的服务器运行吗?什么作为单独的服务器运行
    Sinatra
    Rack
    Passenger
    之后工作,但它是堆栈的一部分。我有几个站点的路由请求为
    /alpha
    。所以有点可疑。我没有Sinatra的经验,但我假设它创建了自己的http服务器,在自己的ip:端口上运行,对吧?没有。所有这些都由
    nginx
    处理。Sinatra只是一个框架。您也可以使用
    webrick
    Apache
    。这是一个基于
    框架的快速小框架。最近,它被测量为比Rails快7倍。