Home > Software design >  How to not need a .dotted file path in nginx configuration
How to not need a .dotted file path in nginx configuration

Time:09-30

I'm trying to serve m AppLink for google association services. The following works:

location /.well-known/assetlinks.json {
    root /var/www/static/google-association-service/;
    types { } default_type "content-type: application/json";
}

Provided I have the correct file placed at

/var/www/static/google-association-service/.well-known/assetlinks.json

The URI is what it it is, Google gets to decide that, but I'd rather not have it resolve to a hidden file at the bottom of a directory where the next guy wonders why the directory is even there because he forgot to ls with a '-a'. Is there a way to make it so I can map this URI to something like:

/var/www/static/google-association-service/assetlinks.json # omit the hidden sub directory

?

(I've tried understanding the difference between root and alias, but I'm not seeing how alias would help me here)

CodePudding user response:

You can use try_files to find the specific file you want.

For example:

location = /.well-known/assetlinks.json {
    root /var/www/static/google-association-service;
    try_files /assetlinks.json =404;
}

Or:

location = /.well-known/assetlinks.json {
    root /var/www/static;
    try_files /google-association-service/assetlinks.json =404;
}

The concatenation of the root value and the try_files parameter form the path to the file.

CodePudding user response:

alias basically gives you the possibility to serve a file with another name (e.g. serve a file named foo.json at location /.well-known/assetlinks.json). Even if this is not required in your case I would favor this config, as it is easily understandable:

location = /.well-known/assetlinks.json {
    alias /var/www/static/google-association-service/assetlinks.json;
}

Note that the = is required to not match locations like /.well-known/assetlinks.json1111.

  • Related