nginx can';在位置块中找不到我的文件

nginx can';在位置块中找不到我的文件,nginx,Nginx,我正试图通过导航到…/beta,让nginx为我的rails应用程序的angular2前端替换提供beta版,但我似乎无法让nginx找到任何文件 我尝试导航到..../beta..../beta/index.html,但它似乎从未找到索引(或我放在该目录中的任何文件) 这是我知道正在匹配的位置块,因为有了try_files指令,每当我在beta版下尝试去任何地方时,我都会被路由到我的普通rails应用程序。(如果没有try_文件,我会得到nginx 404的回复) 我还知道该文件存在,因为我可

我正试图通过导航到…/beta,让nginx为我的rails应用程序的angular2前端替换提供beta版,但我似乎无法让nginx找到任何文件

我尝试导航到..../beta..../beta/index.html,但它似乎从未找到索引(或我放在该目录中的任何文件)

这是我知道正在匹配的位置块,因为有了try_files指令,每当我在beta版下尝试去任何地方时,我都会被路由到我的普通rails应用程序。(如果没有try_文件,我会得到nginx 404的回复)

我还知道该文件存在,因为我可以列出该文件并查看启动nginx的脚本中的内容

echo "starting nginx"
ls -l /var/www/ourlatitude/angular_dist/index.html
cat /var/www/ourlatitude/angular_dist/index.html
nginx -g "daemon off;"
下面是脚本的输出

starting nginx
-rw-rw-r-- 1 root root 900 Apr 15 16:16 /var/www/ourlatitude/angular_dist/index.html
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Ourlatitude</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic">
<link href="styles.c06b2f9217e876bbd94a.bundle.css" rel="stylesheet"/></head>
<body>
  <app-root>Loading...</app-root>
<script type="text/javascript" src="inline.1b4e5bfe11db95ba56df.bundle.js"></script><script type="text/javascript" src="polyfills.1511b33427d0b840a6ea.bundle.js"></script><script type="text/javascript" src="vendor.2104002a7ee0b6a6562f.bundle.js"></script><script type="text/javascript" src="main.8ad811b26786bedbaf91.bundle.js"></script></body>
</html>
启动nginx
-rw-rw-r--1根根900根4月15日16:16/var/www/ourlatitude/angular_dist/index.html
我们的纬度
加载。。。
我觉得我错过了一些基本的东西。 你知道会发生什么吗

如果有帮助的话,我可以包含更多的nginx配置文件


我正在做的另一件与众不同的事情是,这一切都在docker容器中,但我认为这并不重要。
root
alias
完全不同。
位置
块用于匹配URI,在本例中为
/beta/index.html

root
指令确定要添加到URI的前缀,以将其转换为路径名。在你的问题中,那将是
/var/www/ourlatitude/angulation_dist/beta/index.html
,这不是你想要的。
location
块的值仅与匹配URI相关,而与构造路径名无关

前缀
location
中的
alias
指令通过首先删除
location
的值来构造路径名,因此:

location /beta {
    alias /var/www/ourlatitude/angular_dist;
    ...
}
将匹配URI
/beta/index.html
,然后在前缀
/var/www/ourlatitude/angular\u dist
之前删除
/beta
,这将构造路径名:
/var/www/ourlatitude/angular\u dist/index.html


有关详细信息,请参阅。

alias
指令之所以如此调用,是因为它…将URI别名为服务器文件系统中的路径


root
在文件系统中定义了一个…根点,所有URI的搜索都是相对于该根点在该点下进行的。

使用
alias
而不是
root
。详细情况请参见。@RichardSmith谢谢-这是可行的,但必须承认,我不明白为什么。我想我误读了doc或者一些基本的东西,因为它看起来像root应该可以工作。如果您可以将此作为答案发布,并解释在这种情况下使用root和alias的区别,我将接受它。再次感谢,我昨天花了很多时间尝试了这么多的变化。
location /beta {
    alias /var/www/ourlatitude/angular_dist;
    ...
}