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