Bii o ṣe le Tunto Wiwọle Aṣa ati Awọn ọna kika Wọle aṣiṣe ni Nginx


Olupin HTTP Nginx ni apo iyalẹnu iyalẹnu eyiti o jẹ asefara pupọ. Ninu nkan yii, a yoo ṣalaye bi o ṣe le tunto awọn ọna kika tirẹ fun iraye si ati awọn àkọọlẹ aṣiṣe fun Nginx ni Lainos.

Ero ti itọsọna yii ni lati ṣe iranlọwọ fun ọ lati loye bi a ṣe n ṣe awọn akọọlẹ, nitorinaa lati tunto awọn ọna kika atọwọdọwọ aṣa fun awọn idi ti n ṣatunṣe aṣiṣe, laasigbotitusita tabi igbekale ohun ti o nwaye laarin olupin ayelujara rẹ ati awọn ohun elo wẹẹbu (bii awọn ibeere wiwa).

Nkan yii jẹ ti awọn apakan mẹta eyiti yoo tàn fun ọ nipa tito leto iraye/awọn aṣiṣe aṣiṣe ati bii o ṣe le mu ki ifilọlẹ ipo wọle ni Nginx.

Tito leto Awọn àkọọlẹ Wiwọle ni Nginx

Labẹ Nginx, gbogbo awọn ibeere alabara si olupin ni a ṣe iranti ni iwe wiwọle ni ọna kika ti o ni pato nipa lilo module ngx_http_log_module.

Faili iwe aiyipada jẹ log/access.log (nigbagbogbo/var/log/nginx/access_log lori awọn ọna ṣiṣe Linux) ati ọna kika aiyipada fun wíwọlé jẹ deede ni idapo tabi ọna kika akọkọ (eyi le yato lati distro kan si omiiran).

Itọsọna access_log (wulo ni http, olupin, ipo, ti o ba wa ni ipo ati opin ayafi ti o tọ) ni a lo lati ṣeto faili log ati itọsọna log_format (iwulo labẹ ipo http nikan) ni a lo lati ṣeto ọna kika. A ṣe apejuwe ọna kika log nipasẹ awọn oniyipada to wọpọ, ati awọn oniyipada ti o ṣẹda nikan ni akoko ti a kọ iwe kan.

Ilana fun tito leto ọna kika log ni:

log_format format_name 'set_of_variables_to_define_format';

ati ilana ifilọlẹ fun tito leto log log ni:

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]];

Atẹle yii jẹ iyasọtọ lati faili iṣeto Nginx aiyipada /etc/nginx/nginx.conf lori 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;
}

Ọna kika log yii n mu agbewọle wọle atẹle.

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"

Atẹle yii jẹ ọna kika gedu ti o wulo ti a lo fun titọpa awọn ibeere si awọn ohun elo wẹẹbu wa nipa lilo diẹ ninu awọn oniyipada aiyipada, o ṣe pataki julọ ni ID ibeere ati awọn alaye ipo awọn alabara wọle (orilẹ-ede, koodu orilẹ-ede, agbegbe ati ilu).

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 ';

O le lo bi eleyi:

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

Eyi yoo ṣe agbewọle titẹsi wọle eyiti o han bi eleyi.

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 

O le ṣọkasi ọpọlọpọ awọn àkọọlẹ nipa lilo awọn itọsọna access_log lori ipele kanna, nibi a nlo faili log diẹ sii ju ọkan lọ ni ipo http.

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;
}

Atẹle wọnyi jẹ awọn apejọ awọn atunto iforukọsilẹ to ti ni ilọsiwaju, eyiti o wulo fun awọn ọna kika log ti o ni awọn oniyipada ti o jọmọ pọ ati fun ṣiṣẹda awọn faili log ifunpọ:

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

Tunto Awọn aṣiṣe Aṣiṣe ni Nginx

Ni ọran Nginx ni iriri eyikeyi awọn glitches, o ṣe igbasilẹ alaye nipa wọn ninu iwe aṣiṣe. Awọn ọran wọnyi ṣubu labẹ oriṣiriṣi awọn ipele idibajẹ: yokokoro, alaye, akiyesi, kilo, aṣiṣe (eyi ni ipele aiyipada ati ṣiṣẹ ni kariaye), idaniloju, itaniji, tabi farahan.

Faili iwe aiyipada jẹ log/error.log, ṣugbọn o wa ni deede ni/var/log/nginx/lori awọn pinpin Linux. A lo ilana aṣiṣe_log lati ṣafihan faili faili, ati pe o le ṣee lo ni akọkọ, http, meeli, ṣiṣan, olupin, ipo ipo (ni aṣẹ yẹn).

O yẹ ki o tun akiyesi pe:

  • Awọn atunto ni aaye akọkọ jẹ eyiti a jogun nigbagbogbo nipasẹ awọn ipele kekere ni aṣẹ loke.
  • ati awọn atunto ni awọn ipele isalẹ yiyọ awọn atunto ti a jogun lati awọn ipele giga.

O le tunto gedu aṣiṣe nipa lilo sintasi atẹle:

error_log /path/to/log_file log_level;

Fun apere:

error_log /var/log/nginx/error_log warn; 

Eyi yoo kọ Nginx lati wọle gbogbo awọn ifiranṣẹ ti iru ikilọ ati ipele ipele log ti o nira pupọ, itaniji, ati awọn ifiranṣẹ farahan.

Ni apẹẹrẹ ti nbọ, awọn ifiranṣẹ ti idaniloju, itaniji, ati awọn ipele ti o farahan yoo wọle.

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

Wo iṣeto ni isalẹ, nibi, a ti ṣalaye gbigbasilẹ aṣiṣe lori awọn ipele oriṣiriṣi (ni http ati ipo olupin). Ni ọran ti aṣiṣe kan, a ti kọ ifiranṣẹ si log log nikan kan, ọkan ti o sunmọ si ipele ti aṣiṣe ti han.

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;
        		…….
    	}
}

Ti o ba lo awọn itọnisọna aṣiṣe_log ju ọkan lọ bi ninu iṣeto ni isalẹ (ipele kanna), a ti kọ awọn ifiranṣẹ si gbogbo awọn iwe akọọlẹ ti a ṣalaye.

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;
            	…...
	}

Tito leto Ipilẹ Gbigba ni Nginx

Ni awọn ọrọ miiran, a le fẹ Nginx lati ṣe gedu ipo ti awọn ifiranṣẹ. Kii ṣe gbogbo ifiranṣẹ ni lati ni ibuwolu wọle nipasẹ Nginx, nitorinaa a le foju awọn titẹ sii wọle ti ko ṣe pataki tabi ti ko ṣe pataki lati awọn iwe wiwọle wa fun awọn iṣẹlẹ pataki.

A le lo ngx_http_map_module module eyiti o ṣẹda awọn oniyipada ti awọn iye rẹ da lori awọn iye ti awọn oniyipada miiran. Awọn ipele inu inu iwe-aye maapu kan (eyiti o yẹ ki o wa ninu akoonu http nikan) ṣalaye aworan agbaye laarin orisun ati awọn iye abajade.

Fun iru eto yii, ibeere kan ko ni ibuwolu wọle ti ipo ba ṣe ayẹwo si \"0" tabi okun ti o ṣofo. Apẹẹrẹ yii ko awọn ibeere pẹlu awọn koodu ipo HTTP 2xx ati 3xx.

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

Eyi ni apẹẹrẹ ti o wulo miiran fun n ṣatunṣe aṣiṣe ohun elo wẹẹbu kan ninu ipele idagbasoke kan. Eyi yoo foju gbogbo awọn ifiranṣẹ silẹ ati alaye ifilọlẹ wọle nikan.

 
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; 
		…….
	}
}

O le wa alaye diẹ sii, pẹlu wíwọlé sí syslog Nibi.

Iyẹn ni gbogbo fun bayi! Ninu itọsọna yii, a ṣalaye bi o ṣe le tunto ọna kika gedu aṣa fun iraye si ati awọn àkọọlẹ aṣiṣe ni Nginx. Lo fọọmu esi ni isalẹ lati beere awọn ibeere tabi pin awọn ero si ọ nipa nkan yii.