如何使用Nginx基于URL提供角度应用程序?

时间:2018-12-19 10:52:33

标签: angularjs nginx routing

我想知道如何在使用nginx时基于URL提供角度的应用程序。因此,假设有一个名为xyz.com/something/的网址,只要该网址中有内容,我都希望ngnix路由到有角度的应用程序。我们如何实现它,我在like this上看到了类似的问题,但无法正常工作。

location /something/ {
    root /var/www/xyz.com/html/something/;
    try_files $uri $uri/ /index.html =404;
    }

假设通常情况下,应用会响应以下网址: xyz.com/something/login

下面的代码可以正常工作。

location / {
  alias /var/www/xyz.com/html/something/;
  try_files $uri $uri/ /index.html =404;
}

也尝试过使用base-href做某事described here,但未能使其正常工作。

也尝试了第一个答案。

Nginx CONFIG文件:

location /admin {
    root /var/www/xyz.com/html/;
    try_files $uri $uri/ /admin/index.html;
}

location / {
    alias /var/www/xyz.com/html/user/;
    try_files $uri $uri/ /index.html =404;
}

/ admin和/ user指的是同一域中存在的两个不同的AngularJs项目。

测试案例:

URL : www.xyz.com/admin/
RESPONSE : Blank page.. 
           accessing index.html but not redirecting properly

URL : www.xyz.com/admin/login
RESPONSE : Blank page..
  ERRORS : Cannot match any routes. URL Segment: 'login'

但是我已经正确路由了。

任何建议?

2 个答案:

答案 0 :(得分:0)

您有太多“东西”。通过将URI附加到std::invalid_error的值来构造文件的路径。有关详情,请参见this document

在您的配置中,文件术语root$uri将与andy文件不匹配。

如果从$uri/值中删除something,则需要将其添加到root文件元素中。

例如:

index.html

就我个人而言,我没有附加location /something/ { root /var/www/xyz.com/html; try_files $uri $uri/ /something/index.html; } ,但这没有害处,而且我知道许多Angular教程似乎都认为有必要。有关详情,请参见this document

答案 1 :(得分:0)

location /angular/ {
    root   /opt/app-root/src;
    index  index.html index.htm;
    try_files $uri $uri/ /angular/index.html;
}
COPY dist/angular-app/. /opt/app-root/src/angular