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要查找:
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倍。