Forum: NGINX Nginx static file serving - Some files are 404, some not

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
6398031dc321aa3c975436e11d752f6b?d=identicon&s=25 Lantos István (Guest)
on 2016-07-06 14:39
(Received via mailing list)
I have the following server configuration block:


>
>
>
^/(fonts/|gallery/|images/|javascripts/|stylesheets/|ajax_info\.txt|apple-touch-icon\.png|browserconfig\.xml|crossdomain\.xml|favicon\.ico|robots\.txt|tile-wide\.png|tile\.png)
> {      root /var/www/html/public;      access_log off;      expires max;
> }    error_page 401 403 404      /404.html;    error_page 500 502 503 504
> /50x.html;}*
>

I want to server my static files with Nginx to my Node/Express app. I
not
want to re-factore every single route in my app, that's why i want to
server all these static files into / URL path.

The problem is some files cannot be located on the disk, although they
existing, for example  */images/art/lindon.png*.

This is a docker-compose stack and nginx built from source:
https://github.com/DJviolin/lantosistvan/blob/be8e...

The error message that I got for a missing file:

*lantosistvan_nginx | 2016/07/06 14:24:42 [error] 6#6: *3 open()
> "/var/www/html/public/images/art/lindon.png" failed (2: No such file or
> directory), client: 10.0.2.2, server: localhost, request: "GET
> /images/art/lindon.png HTTP/1.1", host: "127.0.0.1", referrer:
> "http://127.0.0.1/hu/blog/mariya-balazs
> <http://127.0.0.1/hu/blog/mariya-balazs>"*
>

Is there any better way to server static files for the / URL without
blocking* location / {}*?

Thank You for your help!

István
6398031dc321aa3c975436e11d752f6b?d=identicon&s=25 Lantos István (Guest)
on 2016-07-06 15:45
(Received via mailing list)
Sorry, the parent folder, /images/art was uncommented in .gitignore,
that's
why didn't uploaded into my repo. Problem solved.

Still, is there any method to share static files? Something like expose
the
public folder into / URL, but without blocking the route?

2016-07-06 14:38 GMT+02:00 Lantos István <kerozin.joe@gmail.com>:
1266aa99d1601b47bbd3ec22affbb81c?d=identicon&s=25 B.R. (Guest)
on 2016-07-06 18:51
(Received via mailing list)
location / only means 'a location which starts with /'. Basically, this
catches every single request, and is the least specific way (lowest
precedence ever) to do so.
When choosing the most suitable location block, nginx will most of the
time
use a more specific one. That is why this is called 'default location'.

One way I understand your question:
If you want to have a specific behavior for the '/' path, you could
use location
= / which matches only this *exact* path and has the highest precedence,
as
a match with the requested path makes this block immediately selected.

Another way:
If you want to first browse your filesystem and fall back (in case no
file
matches) to proxying the request to backends, that is not what your
current
configuraiton file tells nginx to do.
You would need something like:
location / {
    try_files $uri $uri/ @fallback;
    autoindex on;
}

location @fallback {
    <proxy work>
}
---
*B. R.*
Af4485ec4dc38936297a641eee74b0d8?d=identicon&s=25 Richard Stanway (Guest)
on 2016-07-06 19:02
(Received via mailing list)
This topic is locked and can not be replied to.