在一个域下的2个ember-cli应用程序的nginx位置冲突

我正在尝试在nginx上的一个域下设置2个ember-cli应用程序。

http://example.com/ http://example.com/bar 

应用程序1存储在/ var / www / foo下,而应用程序2存储在/ var / www / bar下。

一等奖的主要根目录是/ var / www / bar,并将其设置为使得/指向foo和/指向条。 这主要是为了在设置方式上的一致性。 不过,我很乐意改变设置,以使其正常工作。

我有以下nginx片段:

 server { listen 80; server_name www.example.com; root /var/www/bar; location /bar { root /; try_files $uri $uri/ /index.html?/$request_uri; } location / { root /var/www/foo; try_files $uri /index.html?/$request_uri; } } 

我试过了,但也没有得到它的工作。 看来, location /覆盖的位置/bar/ 。 如果我注释掉了location /指令,那么/bar工作,但显然不是/ 。 反之亦然。 我如何得到这两个一起工作?

注意 :在这一点上,烬丝并不是真正的促成因素。 只要获得index.html文件就可以了。

try_files指令中的最后一个参数是后备代码,位置或URI。 对于最后两种情况,nginx做了一个内部redirect,所以预期的行为是去位置/ 。 你也在位置栏的root指令中犯了一个错误, /将匹配你的文件系统的根目录!

您需要将后备URI更改为/bar/index.html?/$request_uri 。 如果理解得好,你想从/var/www/bar/index.html服务bar的index.html。 两种解决scheme

[1]

 server { listen 80; server_name www.example.com; root /var/www; location /bar { try_files $uri $uri/ /bar/index.html?/$request_uri; } location / { root /var/www/foo; try_files $uri /index.html?/$request_uri; } } 

[2]

 server { listen 80; server_name www.example.com; root /var/www/bar; location /bar/ { alias /var/www/bar/; try_files $uri $uri/ /bar/index.html?/$request_uri; } location / { root /var/www/foo; try_files $uri /index.html?/$request_uri; } }