我試圖讓nginx服務測試版的angular2前端更換我的導軌應用程序,通過導航到... /測試版,但我似乎無法讓nginx找到任何文件。nginx無法找到我的文件在一個位置塊
我嘗試導航到..../beta ..../beta/index.html,但它似乎從未找到索引(或任何放置在該目錄中的文件)。
下面是我所知道的匹配塊,因爲當我試圖在任何位於測試版下的任何地方使用try_files指令時,我會將它路由到正常的rails應用程序。 (不try_files我得到一個nginx的404篇回覆)
location /beta {
root /var/www/ourlatitude/angular_dist;
try_files $uri $uri/ /;
}
我也知道文件的存在,因爲我可以列出該文件,並查看該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配置文件。
我正在做的唯一另外一件普通的事情是,這是一個碼頭集裝箱內的,但我不認爲重要。
使用'alias'而不是'root'。有關詳細信息,請參見[此文檔](http://nginx.org/en/docs/http/ngx_http_core_module.html#alias)。 –
@RichardSmith謝謝 - 這個作品,但不得不承認,我不明白爲什麼。我認爲我誤解了文檔或基本的東西,因爲它看起來像根應該工作。如果你可以發佈這個答案,並解釋在使用root和別名之間這種情況有什麼不同,我會接受它。再次感謝,我昨天花了很多時間嘗試了很多變化。 – nPn