Otu esi ahazi nnweta omenala yana ụdị ndebanye mperi na Nginx


Ihe nkesa HTTP Nginx nwere ebe ịdebe osisi dị egwu nke nwere ike ịhazi ya nke ukwuu. N'isiokwu a, anyị ga-akọwa otu esi ahazi usoro nke gị maka ịnweta na ndekọ njehie maka Nginx na Linux.

Ebumnuche nke ntuziaka a bụ inyere gị aka ịghọta ka esi emepụta ndekọ, iji hazie usoro ndekọ ahaziri iche maka ebumnuche nke nbipu, nchọpụta nsogbu ma ọ bụ nyocha nke ihe na-eme n'ime sava weebụ gị yana ngwa weebụ (dị ka ịchọta arịrịọ).

Emere edemede a nke ngalaba atọ nke ga-eme ka ị mata gbasara ịhazi ndekọ ohere/njehie yana otu esi eme ka ịbanye n'ọnọdụ ọnọdụ na Nginx.

Na-ahazi ndekọ nnabata na Nginx

N'okpuru Nginx, a na-edekọ arịrịọ ndị ahịa niile na ihe nkesa ahụ n'ime ndekọ ohere n'ụdị akọwapụtara site na iji modul ngx_http_log_module.

Faịlụ ndekọ ndabara bụ log/access.log (na-abụkarị /var/log/nginx/access_log na sistemụ Linux) na usoro ndabara maka itinye osisi na-abụkarị usoro ejikọtara ma ọ bụ isi (nke a nwere ike ịdị iche site na otu distro gaa na nke ọzọ).

A na-eji ntuziaka access_log (dị na http, ihe nkesa, ọnọdụ, ma ọ bụrụ na ọ dị na njedebe ma ewezuga ihe gbara ya gburugburu) iji tọọ faịlụ ndekọ yana ntuziaka log_format (nke dị n'okpuru ọnọdụ http naanị) ka a na-eji tọọ usoro ndekọ. A na-akọwa usoro ndekọ ahụ site na mgbanwe ndị a na-ahụkarị, yana mgbanwe ndị na-emepụta naanị n'oge edere ndekọ.

Okwu syntax maka ịhazi usoro ndekọ bụ:

log_format format_name 'set_of_variables_to_define_format';

na syntax maka ịhazi ndekọ ohere bụ:

access_log /path/to/log_file format_name;		#simplest form 
OR
access_log /path/to/log_file [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

Ihe na-esonụ bụ akụkụ nke faịlụ nhazi Nginx ndabara /etc/nginx/nginx.conf na CentOS 7.

http {
	#main log format 
	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                               '$status $body_bytes_sent "$http_referer" '
                               '"$http_user_agent" "$http_x_forwarded_for"';

	access_log /var/log/nginx/access.log;
}

Usoro ndekọ a na-ewepụta ntinye log na-esonụ.

127.0.0.1 - dbmanager [20/Nov/2017:18:52:17 +0000] "GET / HTTP/1.1" 401 188 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"

Ihe na-esonụ bụ usoro ndekọ osisi ọzọ bara uru nke anyị na-eji maka ịchọta arịrịọ na ngwa weebụ anyị site na iji ụfọdụ mgbanwe ndabara, ọ kachasị mkpa nwere NJ arịrịọ yana ndekọ nkọwa ọnọdụ ndị ahịa (mba, koodu obodo, mpaghara na obodo).

log_format  custom '$remote_addr - $remote_user [$time_local] '
                         	     '"$request" $status $body_bytes_sent '
                      		     '"$http_referer" "$http_user_agent" '
                     		     '"$http_x_forwarded_for" $request_id '
                   		     '$geoip_country_name $geoip_country_code '
                  		     '$geoip_region_name $geoip_city ';

Ị nwere ike iji ya dị ka nke a:

access_log  /var/log/nginx/access.log custom;

Nke a ga-emepụta ntinye log nke na-egosi dị ka nke a.

153.78.107.192 - - [21/Nov/2017:08:45:45 +0000] "POST /ngx_pagespeed_beacon?url=https%3A%2F%2Fwww.example.com%2Fads%2Ffresh-oranges-1509260795 HTTP/2.0" 204 0 "https://www.suasell.com/ads/fresh-oranges-1509260795" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0" "-" a02b2dea9cf06344a25611c1d7ad72db Uganda UG Kampala Kampala 

Ị nwere ike dee ọtụtụ ndekọ site na iji access_log ntụziaka n'otu ọkwa, ebe a anyị na-eji ihe karịrị otu faịlụ ndekọ na http onodu.

http{
	##default log format
	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                	      '$status $body_bytes_sent "$http_referer" '
                                         '"$http_user_agent" "$http_x_forwarded_for"';
      
	##request tracing using custom format
	log_format custom '$remote_addr - $remote_user [$time_local] '
                                           '"$request" $status $body_bytes_sent '
                                           '"$http_referer" "$http_user_agent" '
                                           '"$http_x_forwarded_for" $request_id '
                                           '$geoip_country_name $geoip_country_code '
                                          '$geoip_region_name $geoip_city ';

	##this uses the default log format
	access_log /var/log/nginx/access.log;

	##this uses the our custom log format
	access_log /var/log/nginx/custom_log custom;
}

Ndị na-esonụ bụ ihe atụ nhazi nhazi osisi dị elu karị, nke bara uru maka usoro ndekọ nke nwere mgbanwe ndị metụtara mkpakọ yana maka ịmepụta faịlụ ndekọ mkpakọ:

access_log /var/log/nginx/custom_log custom buffer 32k;
access_log /path/to/log.gz compression  gzip  flush=5m;

Na-ahazi ndekọ mperi na Nginx

Ọ bụrụ na Nginx ahụta glitches ọ bụla, ọ na-edekọ ozi gbasara ha na ndekọ njehie. Okwu ndị a dara n'okpuru ọkwa dị njọ dị iche iche: debug, ozi, ọkwa, dọọ aka ná ntị, njehie (nke a bụ ọkwa ndabara ma na-arụ ọrụ zuru ụwa ọnụ), crit, njikere, ma ọ bụ emerg.

Faịlụ ndekọ ndabara bụ log/error.log, mana ọ na-adịkarị na /var/log/nginx/ na nkesa Linux. A na-eji ntuziaka error_log ezipụta faịlụ ndekọ, enwere ike iji ya na isi, http, mail, stream, sava, ọnọdụ ọnọdụ (n'usoro ahụ).

I kwesịkwara ịma na:

  • A na-eketa nhazi n'ime isi okwu site na ọkwa dị ala n'usoro dị n'elu.
  • na nhazi ndị dị n'ọkwa dị ala na-emebi nhazi ndị eketara na ọkwa dị elu.

Ị nwere ike hazie ndekọ njehie site na iji syntax ndị a:

error_log /path/to/log_file log_level;

Ọmụmaatụ:

error_log /var/log/nginx/error_log warn; 

Nke a ga-akụziri Nginx ka ọ banye ozi niile ụdị ịdọ aka ná ntị yana ọkwa ọkwa ndekọ siri ike karị, njikere, na ozi na-apụta.

N'atụmatụ na-esote, a ga-abanye ozi nke crit, njikere na ọkwa emerg.

error_log /var/www/example1.com/log/error_log crit;

Tụlee nhazi dị n'okpuru ebe a, ebe a, anyị akọwawo njehie na-abanye na ọkwa dị iche iche (na http na ihe nkesa). Ọ bụrụ na ezighi ezi, a na-ede ozi ahụ na naanị otu ndekọ njehie, nke kacha nso na ọkwa ebe njehie ahụ pụtara.

http {
	log_format compression '$remote_addr - $remote_user [$time_local] '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent" "$gzip_ratio"';
	
	error_log  /var/log/nginx/error_log  crit;

    	server {
		listen 80;
		server_name example1.com;

		#this logs errors messages for example1.com only
      		error_log  /var/log/nginx/example1.error_log  warn;
            	…...
	}

     	server {
		listen 80;
		server_name  example2.com;

		#this logs errors messages for example2.com only
        		error_log  /var/log/nginx/example1.error_log;
        		…….
    	}
}

Ọ bụrụ na ị na-eji ihe karịrị otu njehie_log ntụziaka dị ka nhazi n'okpuru (otu larịị), ozi ndị a na-dere niile kpọmkwem ndekọ.

server {
		listen 80;
		server_name example1.com;

      		error_log  /var/www/example1.com/log/error_log  warn;
		error_log  /var/log/nginx/example1.error_log  crit;
            	…...
	}

Na-ahazi ntinye aha ọnọdụ na Nginx

N'ọnọdụ ụfọdụ, anyị nwere ike ịchọrọ Nginx ka ọ rụọ ndekọ ndekọ aha. Ọ bụghị ozi ọ bụla ka Nginx ga-abanye, yabụ anyị nwere ike ileghara ndenye ndekọ na-adịchaghị mkpa ma ọ bụ nke na-adịchaghị mkpa site na ndekọ ohere anyị maka oge ụfọdụ.

Anyị nwere ike iji modul ngx_http_map_module nke na-emepụta mgbanwe ndị ụkpụrụ ha dabere na ụkpụrụ nke mgbanwe ndị ọzọ. Akụkụ dị n'ime ngọngọ maapụ (nke kwesịrị ịdị na ọdịnaya http naanị) ezipụta eserese n'etiti isi mmalite yana ụkpụrụ gapụtara.

Maka ụdị ntọala a, a gaghị abanye arịrịọ ma ọ bụrụ na ọnọdụ a na-atụle na \0 ma ọ bụ eriri efu. Ihe atụ a na-ewepu arịrịọ nwere koodu ọnọdụ HTTP 2xx na 3xx.

http{
	map $status $condition {
		~^[23] 0;
    		default 1;
	}
	server{
		access_log  /path/to/access.log  custom if=$condition;
	}
}

Nke a bụ ihe atụ ọzọ bara uru maka ịmegharị ngwa weebụ n'oge mmepe. Nke a ga-eleghara ozi niile anya yana naanị debanye ozi nbipu.

 
http{
	map $info  $debuggable { 
    		default     0; 
    		debug       1; 
	} 
	server{
		……..
		access_log /var/log/nginx/testapp_debug_access_log  debug if=$debuggable; 
		#logs other requests 
		access_log  /var/log/nginx/testapp_access.log  main; 
		…….
	}
}

Ị nwere ike ịchọta ozi ndị ọzọ, gụnyere ịbanye na syslog ebe a.

Nke ahụ bụ ihe niile ugbu a! N'ime ntuziaka a, anyị kọwara otu esi ahazi usoro ndekọ aha omenala maka ịnweta na ndekọ njehie na Nginx. Jiri mpempe nzaghachi dị n'okpuru jụọ ajụjụ ma ọ bụ kesaa echiche gị gbasara edemede a.