Welcome! Log In Create A New Profile

Advanced

Re: need to preserve / in location

Gregory Edigarov
April 24, 2020 09:56AM
Maxim,

Thanks for a great explanation.

On 2020-04-22 18:17, Maxim Dounin wrote:
> Hello!
>
> On Wed, Apr 22, 2020 at 11:46:25AM +0300, Gregory Edigarov wrote:
>
>> Hello, Everybody
>>
>> this is directory structure:
>>
>> /front/admin/index.html
>>
>> /front/superadmin/index.html
>>
>> that's what I have in config
>>
>>     rewrite ^/(admin)$ /$1/ last;
>>     location /admin/ {
>>         index index.html;
>>         root /front;
>>         try_files $uri  admin/index.html;                 #direct all request to index.html
>>    }
>>
>> and the errors:
>>
>> 2020/04/22 08:35:13 [error] 73#73: *1 open() "/frontindex.html" failed (2:
>> No such file or directory), client: 192.168.224.1, server: , request: "GET
>> /admin HTTP/1.1", host: "127.0.0.1"
>> 192.168.224.1 - - [22/Apr/2020:08:35:13 +0000] "GET /admin HTTP/1.1" 404 146
>> "-" "curl/7.58.0" "-"
> That's stange, because with the configuration given the "/admin"
> request is expected to be mapped into "admin/index.html" as per
> try_files, and will end up opening "/frontadmin/index.html".
>
> 2020/04/22 17:42:59 [error] 38574#100110: *1 open() "/frontadmin/index.html" failed (2: No such file or directory), client: 127.0.0.1, server: , request: "GET /admin HTTP/1.1", host: "127.0.0.1:8080"
>
>> 2020/04/22 08:35:24 [error] 73#73: *2 open() "/frontindex.html" failed (2:
>> No such file or directory), client: 192.168.224.1, server: , request: "GET
>> /admin/ HTTP/1.1", host: "127.0.0.1"
>> 192.168.224.1 - - [22/Apr/2020:08:35:24 +0000] "GET /admin/ HTTP/1.1" 404
>> 146 "-" "curl/7.58.0" "-"
> Same here.
>
> 2020/04/22 17:46:20 [error] 38574#100110: *2 open() "/frontadmin/index.html" failed (2: No such file or directory), client: 127.0.0.1, server: , request: "GET /admin/ HTTP/1.1", host: "127.0.0.1:8080"
>
>> what's the right config in situation given?
> The right config depends on what you are trying to get. In most
> cases, just as simple configuration with appropriate "root" will do
> what's expected ("index index.html;" is the default and can be
> safely omitted):
>
> location / {
> root /front;
> }
>
> With such a configuration any request to "/admin" will end up with
> a redirect to "/admin/" (as long as "/front/admin" is a
> directory). Any request to "/admin/" will return
> "/front/admin/index.html" (if exists). And any request to a
> non-existent file will return 404.
>
> If you really want to return a positive response regardless of
> whether a file exists or not, adding a leading "/" before
> "admin/index.html" in your configuration might work for you:
>
>     rewrite ^/(admin)$ /$1/ last;
>     location /admin/ {
>         root /front;
>         try_files $uri /admin/index.html;
>    }
>
> (Note that "index index.html;" is meaningless - it is never used,
> as "try_files" without explicitly specified trailing "/" prevents
> access to directories.)
>
> Alternatively, you may want to simplify configuration into
> something like:
>
> root /front;
>
> location = /admin {
> rewrite ^ /admin/ last;
> }
>
> location /admin/ {
> error_page 404 = /admin/index.html;
> log_not_found off;
> }
>
> This configuration works much like the one with only "location /"
> above, but explicitly handles requests to "/admin" similarly to
> how it's handled in your configuration, and also handles 404
> errors to return appropriate index file.

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

need to preserve / in location

Gregory Edigarov April 22, 2020 04:48AM

Re: need to preserve / in location

Gregory Edigarov April 22, 2020 05:20AM

Re: need to preserve / in location

Maxim Dounin April 22, 2020 11:18AM

Re: need to preserve / in location

Gregory Edigarov April 24, 2020 09:56AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 314
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready