Welcome! Log In Create A New Profile

Advanced

Re: Help with location context?

Francis Daly
October 17, 2015 04:02AM
On Fri, Oct 16, 2015 at 10:29:26AM -0400, de_nginx_noob wrote:

Hi there,

> So this is my nginx.conf file :

It turns out that most of this is unnecessary, if you just want to
understand the location{}s involved.

It's not a problem; but if you simplify the config then there is less
to cause confusion.

> include /etc/nginx/conf.d/*.conf;

The config now includes whatever is in those files.

If any of them has, for example, "listen 80; server_name centos-7-nginx;",
then your server{} block below will not be used by your sample request.

> server {
> listen 80 default_server;
> listen [::]:80 default_server;
> server_name _;
> root /usr/share/nginx/html;
>
> # Load configuration files for the default server block.
> include /etc/nginx/default.d/*.conf;

The config now includes whatever is in those files.

If any of them has, for example, "location = /test", then your location{}
block below will not be used by your sample request.

> location /test {
> log_format testLog 'testing test location block
> [$time_local]';

I get

nginx: [emerg] "log_format" directive is not allowed here in...

so this config never is used by a running nginx.

http://nginx.org/r/log_format says that the context for this directive is http.

Move that line to http level and reload.


> access_log /var/log/nginx/access.log testLog;
> }
>
> error_page 404 /404.html;
> location = /40x.html {
> }

> As you can see, most of it is default. I just changed the location context
> to try and do a custom log whenever someone requests something that begins
> with /test. Nginx is running on a vm called centos-7-nginx.
>
> When I try to use curl centos-7-nginx/test or when I type in
> centos-7-nginx/test in the browser, it doesn't hit that location block and
> instead logs these using the http context log command :

The documentation page above notes:

Requests are logged in the context of a location where processing ends.

> 192.168.1.48 - - [16/Oct/2015:10:27:02 -0400] "GET /test HTTP/1.1" 404 3650
> "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:41.0) Gecko/20100101
> Firefox/41.0" "2.242.71.204" --- from browser

"404" there suggests that "test" does not exist in your document root,
so a 404 error is raised. You have defined a separate location{} for
handling 404 errors, so *that* is the location where processing ends,
and the access_log directives in there are the ones that apply.

Either remove the "error_page 404" directive, or let a file or directory
called "test" exist in /usr/share/nginx/html, and re-try the test.

> I've tried = /test, /test/, test, even regex, but nothing seems to get it to
> map to /test. What am I missing here?

Your config is never actually being used because it is invalid.

Whatever nginx config reload sequence you use should alert you to that fact.

And the file that you expect to get in the response, does not exist.

f
--
Francis Daly francis@daoine.org

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

Help with location context?

de_nginx_noob October 16, 2015 10:29AM

Re: Help with location context?

Francis Daly October 17, 2015 04:02AM

Re: Help with location context?

de_nginx_noob October 18, 2015 03:36PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 285
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