majkel
majkel

Reputation: 51

Nginx two angular apps

I'd like to add separated angular app under a specific path (the path should be at the end of an URL to be matched) - I want to keep both versions which are current and a new one but the new should only be available under the specified path. I tried using alias + try_files. My config:

server {
  listen 80;
  root /dir/project1
  server_name ...;

  index index.html;

  location ~ /path {
    alias /dir/project2
    try_files $uri $uri/ /index.html;
  }

The thing is that when try_files fires up, it takes the path from the root directive - not from the alias. How to fix it? I can only add I cannot use proxy_pass here and root instead of the alias does not work either as it adds paths etc.

Upvotes: 1

Views: 66

Answers (1)

Richard Smith
Richard Smith

Reputation: 49812

The alias directive works differently when placed inside a regular expression location, but you should probably be using a prefix location anyway. See this document for details.

Also, the use of alias and try_files together can cause problems (see this long standing bug).

You are rewriting the URI to /index.html which is the wrong application, and should instead be /path/index.html.

Try:

location ^~ /path {
    alias /dir/project2;
    if (!-e $request_filename) {
        rewrite ^ /path/index.html last;
    }
}

See this caution on the use of if.

Upvotes: 1

Related Questions