"access_log" directive is not allowed here in... how to do this properly?
Alexander Kolesen
kolesen.a at gmail.com
Sun Mar 25 23:29:38 UTC 2012
> Hello !
>
> Iam trying to log the requests coming from a list of countries into a seperate
> log file.. Iam using the config below... BUt iam getting this error:
>
> [emerg]: "access_log" directive is not allowed here in /etc/nginx/nginx.conf:55
> configuration file /etc/nginx/nginx.conf test failed
>
> How could I accomplish what iam trying to do?
>
> Thanks!
>
> --Mike
>
>
> http {
> ......
> .......
>
> geoip_country /etc/nginx/GeoIP.dat;
>
> map $geoip_country_code $log {
> default 0;
> CN 1; #"China"
> RO 1; #"Romania"
> IQ 1; #"Iraq"
> IR 1; #"Iran
> HK 1; #"Hong Kong"
> IN 1; #"India"
> }
>
> server {
> listen 80;
> server_name domain.com;
> .....
> .....
> if ($log) { access_log /root/access-selected-slim.log; }
> location / { proxy_pass http://12.163.169.32:80/; }
>
> }
> }
>
If you want to log queries from only the listed countries,
you may write the following:
http {
......
.......
geoip_country /etc/nginx/GeoIP.dat;
map $geoip_country_code $log {
default dev/null;
CN root/access-selected-slim.log; #"China"
RO root/access-selected-slim.log; #"Romania"
IQ root/access-selected-slim.log; #"Iraq"
IR root/access-selected-slim.log; #"Iran
HK root/access-selected-slim.log; #"Hong Kong"
IN root/access-selected-slim.log; #"India"
}
server {
listen 80;
server_name domain.com;
.....
.....
access_log /$log;
location / { proxy_pass http://12.163.169.32:80/; }
}
}
But note that access logs with variables in their names have limitatios.
Refer to the http://wiki.nginx.org/HttpLogModule
More information about the nginx
mailing list