Regex and Nginx 😤 [solved]

Hi,

I have this rule in my nginx config file

	location ~* \/(fileA.txt|fileB.txt)$ {
		return 404 'nothing here';
	}

but it's not working

but

	location /fileA.txt {
		return 404 'nothing here';
	}

is working....

Any idea what's wrong ?

Thanks.

11 points · 11 comments · view on lemmy.world

11 Comments

elbucho@lemmy.world · 2 pts · 359d (3 replies)

You aren't escaping your periods. Try like this:

location ~* \/(fileA|fileB)\.txt$ {
        return 404 'nothing here';
}
Rick_C137@programming.dev · 1 pts · 359d (2 replies)

Thanks @elbucho@lemmy.world

I've tried

	location ~* \/(fileA\.txt|fileB\.md)$ {
		return 404 'nothing here';
	}

but still not matching :'(

30p87@feddit.org · 1 pts · 359d (1 reply)

.md or .txt?

Rick_C137@programming.dev · 2 pts · 359d

.md is correct, it's a test.

Rick_C137@programming.dev · 2 pts · 359d (1 reply)

Never mind, I understood my mistake... This nginx built didn't come with ngx_http_rewrite_module so return will not works.

Rick_C137@programming.dev · 1 pts · 359d

Apparently ngx_http_rewrite_module "module" is installedby default with nginx... damn thay should use diffrent terms for what could be install or not at compile time..

x00z@lemmy.world · 2 pts · 359d (2 replies)

You might have another location block before it that catches the route.

ramble81@lemmy.zip · 2 pts · 359d (1 reply)

I ran into something similar and the docs didn’t make sense. This link helped figure things out.

Rick_C137@programming.dev · 1 pts · 353d

Thank you @ramble81@lemmy.zip 👍
Post saved !

Rick_C137@programming.dev · 1 pts · 359d

Actually I don't think the error lay in the regex.

because

	location /fileA.txt {
		return 404 'nothing here';
	}

Does not works either...

Rick_C137@programming.dev · 1 pts · 353d

Finally it works as it should I update my old nginx version to newest freenginx and read Thoroughly the location documentation and this post thanks to @ramble81@lemmy.zip