I have a rails app that is purely an api server, with an angular frontend 
living under a subfolder in the public directory..  So the server's file 
structure is like this:

```
home/
  my-app/
    app/
      controllers/
      ..etc
    config/
      ..etc
    public
      favicon.ico
      404.html
      angular-app/
        index.html
        12345.js
        45678.js
        some-picture.jpg
```

I had a wildcard route in my rails app that was manually loading the angular 
files and serving them, and I am trying to let nginx server them as static 
files and no longer do this.  The desired behavior that I am looking for is:

* visiting '/api/*' will render the response from the rails server
* visiting '/' will render the index file inside `public/angular-app/index.html`
* visiting '/404.html' will render `public/404.html`
* visiting '/some-picture.jpg' will render `public/angular-app/some-picture.jpg`

it seems that passenger is breaking the behavior that I want...  If I have just 
a vanilla nginx config that has:

```
server {
  ...
  root '/home/my-app/public'

  location = / {
    index angular-app/index.html;
  }

  location {
    try_files $uri angular-app/$uri;
  }
  ...
}
```

Then the behavior for visiting `/`, `/404.html`, and `/some-picture.jpg` is all 
perfect...  But to get the rails server stuff to work, I need passenger... and 
as I add to the config:
```
    passenger_app_root /home/my-app/;
    passenger_enabled on;
```

Then trying to go to anything other than an api route (routes defined in the 
rails app's config) will result in a 500...

I tried experimenting with restructuring my nginx config to something like:
```
server {
  ...
  root '/home/my-app/public'

  location /api/ {
    passenger_app_root /home/my-app/;
    passenger_enabled on;
  }

  location ^/api/ {
    index angular-app/index.html;
    passenger_enabled off;
  }
  ...
}
```
And I still end up with 500s going anywhere other than api endpoints...  Does
anyone one know what I can do to make this work?

Patrick J. Collins
https://collinatorstudios.com
_______________________________________________
nginx mailing list
nginx@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to