nginx-ൽ വെർച്വൽ ഹോസ്റ്റുകൾ എങ്ങനെ സൃഷ്ടിക്കാം. എന്താണ് Nginx

Nginx ഒരു ജനപ്രിയവും ശക്തവുമായ വെബ് സെർവറും റിവേഴ്സ് പ്രോക്സിയുമാണ്.

Nginx- ന് ധാരാളം ഗുണങ്ങളുണ്ട്, പക്ഷേ അതിന്റെ ക്രമീകരണങ്ങൾ വളരെ സങ്കീർണ്ണവും തുടക്കക്കാർക്ക് എല്ലായ്പ്പോഴും വ്യക്തവുമല്ല. ഈ മാനുവൽ Nginx-ന്റെ അടിസ്ഥാന പാരാമീറ്ററുകൾ, വാക്യഘടന, കോൺഫിഗറേഷൻ ഫയലുകൾ എന്നിവ മനസ്സിലാക്കാൻ നിങ്ങളെ സഹായിക്കും.

കുറിപ്പ്: ഈ ട്യൂട്ടോറിയൽ ഉബുണ്ടു 12.04-ൽ ചെയ്തു.

Nginx ഡയറക്ടറി ശ്രേണി

Nginx കോൺഫിഗറേഷൻ ഫയലുകൾ /etc/nginx ഡയറക്ടറിയിൽ സംഭരിക്കുന്നു.

ഈ ഡയറക്ടറിയിൽ നിരവധി ഡയറക്ടറികളും മോഡുലാർ കോൺഫിഗറേഷൻ ഫയലുകളും അടങ്ങിയിരിക്കുന്നു.

cd /etc/nginx
ls -F

conf.d/ koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/win-utf
koi-utf naxsi_core.rules proxy_params sites-enabled/

അപ്പാച്ചെ ഉപയോക്താക്കൾക്ക് ലഭ്യമായ സൈറ്റുകളും സൈറ്റുകൾ പ്രവർത്തനക്ഷമമാക്കിയ ഡയറക്ടറികളും ഇതിനകം പരിചിതമാണ്. ഈ ഡയറക്ടറികൾ സൈറ്റ് കോൺഫിഗറേഷനുകൾ നിർവ്വചിക്കുന്നു. ഫയലുകൾ സാധാരണയായി സൃഷ്ടിക്കപ്പെടുകയും ലഭ്യമായ സൈറ്റുകളിൽ സൂക്ഷിക്കുകയും ചെയ്യുന്നു; സൈറ്റുകൾ-പ്രാപ്തമാക്കിയ സ്റ്റോറുകൾ പ്രവർത്തനക്ഷമമാക്കിയ സൈറ്റുകളുടെ കോൺഫിഗറേഷനുകൾ മാത്രം. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ സൈറ്റുകളിൽ നിന്ന് ഒരു പ്രതീകാത്മക ലിങ്ക് സൃഷ്ടിക്കേണ്ടതുണ്ട്-ലഭ്യമായ സൈറ്റുകളിലേക്ക്-പ്രാപ്തമാക്കിയിരിക്കുന്നു.

കോൺഫിഗറേഷനുകൾ സംഭരിക്കുന്നതിനും conf.d ഡയറക്ടറി ഉപയോഗിക്കാം. Nginx ആരംഭിക്കുമ്പോൾ .conf വിപുലീകരണമുള്ള ഓരോ ഫയലും വായിക്കപ്പെടും. അത്തരം ഫയലുകളുടെ വാക്യഘടനയിൽ പിശകുകൾ ഉണ്ടാകരുത്.

ബാക്കിയുള്ള മിക്കവാറും എല്ലാ ഫയലുകളും /etc/nginx-ൽ സംഭരിച്ചിരിക്കുന്നു, അതിൽ നിർദ്ദിഷ്ട പ്രോസസ്സുകൾക്കോ ​​അധിക ഘടകങ്ങൾക്കോ ​​ഉള്ള കോൺഫിഗറേഷൻ വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു.

പ്രധാന Nginx കോൺഫിഗറേഷൻ ഫയൽ nginx.conf ആണ്.

nginx.conf ഫയൽ

nginx.conf ഫയൽ അനുബന്ധ കോൺഫിഗറേഷൻ ഫയലുകൾ വായിക്കുകയും അവയെ സംയോജിപ്പിക്കുകയും ചെയ്യുന്നു ഒറ്റ ഫയൽസെർവർ ആരംഭിക്കുമ്പോൾ കോൺഫിഗറേഷനുകൾ.

ഫയൽ തുറക്കുക:

sudo nano /etc/nginx/nginx.conf

ഉപയോക്താവ് www-data;
തൊഴിലാളി_പ്രക്രിയകൾ 4;
pid /var/run/nginx.pid;
ഇവന്റുകൾ (
വർക്കർ_കണക്ഷനുകൾ 768;
#multi_accept on;
}
http(
. . .

ആദ്യ വരികൾ വ്യക്തമാക്കുന്നു പൊതുവിവരം Nginx നെ കുറിച്ച്. www-data എന്ന വരി ഉപയോക്താവ് സെർവർ ആരംഭിച്ച ഉപയോക്താവിനെ വ്യക്തമാക്കുന്നു.

എവിടെ സൂക്ഷിക്കണമെന്ന് പിഡ് നിർദ്ദേശം വ്യക്തമാക്കുന്നു PID-കൾ പ്രോസസ്സ് ചെയ്യുകവേണ്ടി ആന്തരിക ഉപയോഗം. worker_processes ലൈൻ Nginx-ന് ഒരേസമയം പിന്തുണയ്‌ക്കാൻ കഴിയുന്ന പ്രക്രിയകളുടെ എണ്ണം നിർണ്ണയിക്കുന്നു.

ഫയലിന്റെ ഈ ഭാഗത്ത് നിങ്ങൾക്ക് ലോഗുകൾ വ്യക്തമാക്കാനും കഴിയും (ഉദാഹരണത്തിന്, പിശക് ലോഗ് നിർവചിച്ചിരിക്കുന്നത് error_log നിർദ്ദേശം ഉപയോഗിച്ചാണ്).

സെർവറിനെക്കുറിച്ചുള്ള പൊതുവായ വിവരങ്ങൾക്ക് ശേഷം ഇവന്റ് വിഭാഗമാണ്. ഇത് Nginx കണക്ഷനുകളുടെ കൈകാര്യം ചെയ്യൽ നിയന്ത്രിക്കുന്നു. അതിനു പിന്നാലെയാണ് http ബ്ലോക്ക്. ഞങ്ങൾ വെബ് സെർവർ കോൺഫിഗറേഷനുകൾ തുടരുന്നതിന് മുമ്പ്, Nginx കോൺഫിഗറേഷൻ ഫയൽ എങ്ങനെ ഫോർമാറ്റ് ചെയ്യപ്പെടുന്നുവെന്ന് മനസ്സിലാക്കേണ്ടതുണ്ട്.

Nginx കോൺഫിഗറേഷൻ ഫയൽ ഘടന

Nginx കോൺഫിഗറേഷൻ ഫയൽ ബ്ലോക്കുകളായി തിരിച്ചിരിക്കുന്നു.

ആദ്യ ബ്ലോക്ക് ഇവന്റുകളാണ്, തുടർന്ന് http, കോൺഫിഗറേഷനുകളുടെ പ്രധാന ശ്രേണി ആരംഭിക്കുന്നു.

ഒരു http ബ്ലോക്കിന്റെ കോൺഫിഗറേഷൻ വിശദാംശങ്ങൾ, അവ സ്ഥിതിചെയ്യുന്ന ബ്ലോക്കിൽ നിന്ന് സ്വത്തുക്കൾ അവകാശമാക്കുന്ന അടഞ്ഞ ബ്ലോക്കുകൾ ഉപയോഗിച്ച് ലേയേർഡ് ചെയ്യുന്നു. http ബ്ലോക്ക് മിക്ക പൊതു Nginx കോൺഫിഗറേഷനുകളും സംഭരിക്കുന്നു, അവ സെർവർ ബ്ലോക്കുകളായി തിരിച്ചിരിക്കുന്നു, അവ ലൊക്കേഷൻ ബ്ലോക്കുകളായി തിരിച്ചിരിക്കുന്നു.

Nginx സജ്ജീകരിക്കുമ്പോൾ ഓർത്തിരിക്കേണ്ടത് പ്രധാനമാണ് അടുത്ത നിയമം: ഉയർന്ന കോൺഫിഗറേഷൻ ലെവൽ, കൂടുതൽ ബ്ലോക്കുകൾ ഈ കോൺഫിഗറേഷൻ അവകാശമാക്കുന്നു; കോൺഫിഗറേഷന്റെ താഴ്ന്ന നില, കൂടുതൽ "വ്യക്തിഗത" ആണ്. അതായത്, ഓരോ സെർവർ ബ്ലോക്കിലും X പരാമീറ്റർ ഉപയോഗിക്കേണ്ടതുണ്ടെങ്കിൽ, അത്തരമൊരു പരാമീറ്റർ http ബ്ലോക്കിൽ സ്ഥാപിക്കണം.

നിങ്ങൾ ഫയലിലേക്ക് സൂക്ഷ്മമായി നോക്കുകയാണെങ്കിൽ, പ്രോഗ്രാമിന്റെ മൊത്തത്തിലുള്ള സ്വഭാവം നിർണ്ണയിക്കുന്ന നിരവധി ഓപ്ഷനുകൾ അതിൽ അടങ്ങിയിരിക്കുന്നത് നിങ്ങൾ ശ്രദ്ധിക്കും.

ഉദാഹരണത്തിന്, ഫയൽ കംപ്രഷൻ ക്രമീകരിക്കുന്നതിന്, നിങ്ങൾ ഇനിപ്പറയുന്ന പാരാമീറ്ററുകൾ സജ്ജമാക്കേണ്ടതുണ്ട്:

ജിസിപ്പ് ഓൺ;
gzip_disable "msie6";

ഇത് ക്ലയന്റിലേക്ക് അയച്ച ഡാറ്റ കംപ്രസ്സുചെയ്യുന്നതിന് gzip പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുകയും ഇതിനായി gzip പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്യും ഇന്റർനെറ്റ് എക്സ്പ്ലോറർ 6 (കാരണം ഈ ബ്രൗസർ ഡാറ്റ കംപ്രഷൻ പിന്തുണയ്ക്കുന്നില്ല).

ഒരു പരാമീറ്ററിന് നിരവധി സെർവർ ബ്ലോക്കുകളിൽ വ്യത്യസ്ത മൂല്യമുണ്ടെങ്കിൽ, അത്തരമൊരു പരാമീറ്റർ സജ്ജമാക്കാൻ കഴിയും ഉയർന്ന തലംതുടർന്ന് സെർവർ ബ്ലോക്കുകൾക്കുള്ളിൽ തന്നെ അത് അസാധുവാക്കുക. തൽഫലമായി, Nginx ഏറ്റവും താഴ്ന്ന ലെവൽ പാരാമീറ്റർ എക്സിക്യൂട്ട് ചെയ്യും.

കോൺഫിഗറേഷനുകളുടെ ഈ ടയറിംഗ് ഒന്നിലധികം സമാന ഫയലുകൾ നിയന്ത്രിക്കേണ്ടതിന്റെ ആവശ്യകത ഒഴിവാക്കുന്നു. കൂടാതെ, നിങ്ങൾ പാരാമീറ്ററുകൾ നിർവചിക്കാൻ മറന്നുപോയെങ്കിൽ ഏറ്റവും താഴ്ന്ന നില, Nginx സ്ഥിരസ്ഥിതി ഓപ്ഷനുകൾ നടപ്പിലാക്കും.

nginx.conf ഫയലിലെ http ബ്ലോക്ക് ഇതുപോലെ അവസാനിക്കുന്നു:

/etc/nginx/conf.d/*.conf;
/etc/nginx/sites-enabled/*;

നിർദ്ദിഷ്‌ട സൈറ്റുകൾക്കും URL-കൾക്കുമുള്ള ക്രമീകരണങ്ങൾ നിർവ്വചിക്കുന്ന സെർവറും ലൊക്കേഷൻ ബ്ലോക്കുകളും ഈ ഫയലിന് പുറത്ത് സംഭരിക്കപ്പെടുമെന്നാണ് ഇതിനർത്ഥം.

ഇത് ഒരു മോഡുലാർ കോൺഫിഗറേഷൻ ആർക്കിടെക്ചറിനെ അനുവദിക്കുന്നു, അതിൽ പുതിയ സൈറ്റുകൾ നൽകുന്നതിന് പുതിയ ഫയലുകൾ സൃഷ്ടിക്കാൻ കഴിയും. ഗ്രൂപ്പുചെയ്യാനും ഇത് നിങ്ങളെ അനുവദിക്കുന്നു സമാനമായ ഫയലുകൾ.

nginx.conf ഫയൽ അടയ്ക്കുക. ഇപ്പോൾ നിങ്ങൾ വ്യക്തിഗത സൈറ്റുകളുടെ ക്രമീകരണങ്ങൾ പഠിക്കേണ്ടതുണ്ട്.

Nginx വെർച്വൽ ബ്ലോക്കുകൾ

Nginx ലെ സെർവർ ബ്ലോക്കുകൾ വെർച്വൽ ബ്ലോക്കുകൾക്ക് സമാനമാണ് അപ്പാച്ചെ ഹോസ്റ്റുകൾ(എന്നാൽ സൗകര്യാർത്ഥം അവയെ വെർച്വൽ ഹോസ്റ്റുകൾ എന്നും വിളിക്കുന്നു). അടിസ്ഥാനപരമായി, സെർവർ ബ്ലോക്കുകളാണ് സവിശേഷതകൾഒരേ സെർവറിൽ ഹോസ്റ്റ് ചെയ്‌തിരിക്കുന്ന പ്രത്യേക വെബ്‌സൈറ്റുകൾ.

സൈറ്റുകൾ-ലഭ്യമായ ഡയറക്‌ടറിയിൽ സെർവറിനൊപ്പം വരുന്ന ഡിഫോൾട്ട് സെർവർ ബ്ലോക്ക് ഫയൽ നിങ്ങൾക്ക് കണ്ടെത്താനാകും. സൈറ്റ് പരിപാലിക്കുന്നതിന് ആവശ്യമായ എല്ലാ ഡാറ്റയും ഈ ഫയലിൽ അടങ്ങിയിരിക്കുന്നു.

cd സൈറ്റുകൾ-ലഭ്യം
സുഡോ നാനോ ഡിഫോൾട്ട്

റൂട്ട് /usr/share/nginx/www;
സൂചിക സൂചിക.html index.htm;
server_name localhost;
സ്ഥാനം/(

}
സ്ഥാനം /ഡോക്/ (

അപരനാമം /usr/share/doc/;
ഓട്ടോഇൻഡക്സ് ഓണാണ്;
127.0.0.1 അനുവദിക്കുക;
എല്ലാം നിഷേധിക്കുക;

ഡിഫോൾട്ട് ഫയൽ വളരെ നന്നായി കമന്റ് ചെയ്തിട്ടുണ്ട്, എന്നാൽ മുകളിലുള്ള ഉദാഹരണത്തിൽ ലാളിത്യത്തിനും സൗകര്യത്തിനും വേണ്ടി കമന്റുകൾ ഒഴിവാക്കിയിരിക്കുന്നു.

ചുരുണ്ട ബ്രേസുകൾക്കിടയിൽ സ്ഥാപിച്ചിരിക്കുന്ന എല്ലാ ക്രമീകരണങ്ങളും സെർവർ ബ്ലോക്കിൽ ഉൾപ്പെടുന്നു:

സെർവർ(
. . .
}

ഉൾപ്പെടുത്തിയ നിർദ്ദേശം ഉപയോഗിച്ച് http ബ്ലോക്കിന്റെ അവസാനത്തിനടുത്തുള്ള nginx.conf ഫയലിൽ ഈ ബ്ലോക്ക് സ്ഥാപിച്ചിരിക്കുന്നു.

റൂട്ട് നിർദ്ദേശം സൈറ്റിന്റെ ഉള്ളടക്കം സംഭരിക്കുന്ന ഡയറക്ടറി വ്യക്തമാക്കുന്നു. ഉപയോക്താവ് അഭ്യർത്ഥിച്ച ഫയലുകൾക്കായി Nginx ഈ ഡയറക്ടറിയിൽ നോക്കും. സ്ഥിരസ്ഥിതിയായി ഇത് /usr/share/nginx/www ആണ്.

ദയവായി ശ്രദ്ധിക്കുക: എല്ലാ വരികളും ഒരു അർദ്ധവിരാമത്തിൽ അവസാനിക്കുന്നു. ഇങ്ങനെയാണ് Nginx ഒരു നിർദ്ദേശത്തെ മറ്റൊന്നിൽ നിന്ന് വേർതിരിക്കുന്നത്. അർദ്ധവിരാമം ഇല്ലെങ്കിൽ, Nginx രണ്ട് നിർദ്ദേശങ്ങൾ (അല്ലെങ്കിൽ ഒന്നിലധികം നിർദ്ദേശങ്ങൾ) അധിക ആർഗ്യുമെന്റുകൾക്കൊപ്പം ഒരു നിർദ്ദേശമായി വായിക്കും.

സൂചിക നിർദ്ദേശം സൂചികയായി ഉപയോഗിക്കുന്ന ഫയലുകൾ വ്യക്തമാക്കുന്നു. ലിസ്റ്റുചെയ്തിരിക്കുന്ന ക്രമത്തിൽ വെബ് സെർവർ ഫയലുകൾ പരിശോധിക്കും. ഒരു പേജും ആവശ്യപ്പെട്ടിട്ടില്ലെങ്കിൽ, സെർവർ ബ്ലോക്ക് index.html ഫയൽ കണ്ടെത്തി തിരികെ നൽകും. അതിന് ആ ഫയൽ കണ്ടെത്താൻ കഴിയുന്നില്ലെങ്കിൽ, അത് index.htm പ്രോസസ്സ് ചെയ്യാൻ ശ്രമിക്കും.

server_name നിർദ്ദേശം

ഈ സെർവർ ബ്ലോക്ക് നൽകുന്ന ഡൊമെയ്‌ൻ നാമങ്ങളുടെ ഒരു ലിസ്റ്റ് സെർവർ_നാമ നിർദ്ദേശത്തിൽ അടങ്ങിയിരിക്കുന്നു. ഡൊമെയ്‌നുകളുടെ എണ്ണം പരിധിയില്ലാത്തതാണ്; ലിസ്റ്റിലെ ഡൊമെയ്‌നുകൾ സ്‌പെയ്‌സുകളാൽ വേർതിരിക്കേണ്ടതാണ്.

ഒരു ഡൊമെയ്‌നിന്റെ തുടക്കത്തിലോ അവസാനത്തിലോ ഉള്ള ഒരു നക്ഷത്രചിഹ്നം (*) ഒരു മാസ്‌ക് ഉള്ള ഒരു പേര് വ്യക്തമാക്കുന്നു, അവിടെ നക്ഷത്രചിഹ്നം പേരിന്റെ ഭാഗവുമായി (അല്ലെങ്കിൽ നിരവധി ഭാഗങ്ങൾ) പൊരുത്തപ്പെടുന്നു. ഉദാഹരണത്തിന്, *.example.com എന്ന പേര് forum.example.com, www.animals.example.com എന്നീ പേരുകളുമായി പൊരുത്തപ്പെടും.

അഭ്യർത്ഥിച്ച url ഒന്നിലധികം സെർവർ_നെയിം നിർദ്ദേശങ്ങളുമായി പൊരുത്തപ്പെടുന്നുവെങ്കിൽ, അത് ആദ്യം കൃത്യമായി പൊരുത്തപ്പെടുന്ന ഒന്നിൽ പ്രതികരിക്കും.

വിലാസം പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ, അത് ഏറ്റവും കൂടുതൽ അന്വേഷിക്കും നീണ്ട പേര്ഒരു നക്ഷത്രചിഹ്നത്തിൽ അവസാനിക്കുന്ന ഒരു മാസ്ക് ഉപയോഗിച്ച്. അത്തരമൊരു പേര് കണ്ടെത്തിയില്ലെങ്കിൽ, അത് ആദ്യത്തെ റെഗുലർ എക്സ്പ്രഷൻ പൊരുത്തം നൽകും.

സാധാരണ പദപ്രയോഗങ്ങൾ ഉപയോഗിക്കുന്ന സെർവർ പേരുകൾ ടിൽഡിൽ (~) ആരംഭിക്കുന്നു. നിർഭാഗ്യവശാൽ, ഈ വിഷയംഈ ലേഖനത്തിന്റെ പരിധിക്കപ്പുറമാണ്.

ലൊക്കേഷൻ ബ്ലോക്കുകൾ

മറ്റൊരു ലൊക്കേഷൻ ബ്ലോക്കുകളുമായും പൊരുത്തപ്പെടാത്ത അഭ്യർത്ഥിച്ച എല്ലാ ഉറവിടങ്ങൾക്കും പരാൻതീസിസിലെ നിർദ്ദേശങ്ങൾ ബാധകമാകുമെന്ന് ലൊക്കേഷൻ / ലൈൻ സൂചിപ്പിക്കുന്നു.

അത്തരം ബ്ലോക്കുകളിൽ ഒരു uri പാത്ത് അടങ്ങിയിരിക്കാം (ഉദാഹരണത്തിന് /doc/). ലൊക്കേഷനും ഉറിയും തമ്മിൽ പൂർണ്ണമായ പൊരുത്തം സ്ഥാപിക്കുന്നതിന്, = ചിഹ്നം ഉപയോഗിക്കുന്നു. ~ പ്രതീകം പതിവ് പദപ്രയോഗങ്ങളുമായി പൊരുത്തപ്പെടുന്നു.

ടിൽഡ് കേസ്-സെൻസിറ്റീവ് മോഡ് പ്രവർത്തനക്ഷമമാക്കുന്നു, അതേസമയം നക്ഷത്രചിഹ്നമുള്ള ടിൽഡ് കേസ്-സെൻസിറ്റീവ് മോഡ് പ്രവർത്തനക്ഷമമാക്കുന്നു.

അഭ്യർത്ഥന ലൊക്കേഷൻ ബ്ലോക്കുമായി പൂർണ്ണമായും പൊരുത്തപ്പെടുന്നുവെങ്കിൽ, സെർവർ തിരയൽ നിർത്തി അത്തരം ഒരു ബ്ലോക്ക് ഉപയോഗിക്കുന്നു. പൂർണ്ണമായും പൊരുത്തപ്പെടുന്ന ലൊക്കേഷൻ ബ്ലോക്ക് സെർവർ കണ്ടെത്തിയില്ലെങ്കിൽ, അത് യുആർഐയെ ലൊക്കേഷൻ ഡയറക്‌ടീവുകളുടെ പാരാമീറ്ററുകളുമായി താരതമ്യം ചെയ്യുന്നു. പ്രതീക കോമ്പിനേഷൻ ^~ ഉപയോഗിക്കുന്നതും URI-യുമായി പൊരുത്തപ്പെടുന്നതുമായ ഒരു ബ്ലോക്ക് Nginx തിരഞ്ഞെടുക്കും.

^~ ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നില്ലെങ്കിൽ, Nginx ഏറ്റവും അടുത്തുള്ള പൊരുത്തം തിരഞ്ഞെടുത്ത് ഒരു പതിവ് എക്‌സ്‌പ്രഷൻ തിരയൽ നടത്തുകയും ഇവയിലൊന്ന് പൊരുത്തപ്പെടുത്താൻ ശ്രമിക്കുകയും ചെയ്യും. ലഭ്യമായ ടെംപ്ലേറ്റുകൾ. അത്തരമൊരു പദപ്രയോഗം അവൻ കണ്ടെത്തിയാൽ, അവൻ അത് ഉപയോഗിക്കുന്നു. അത്തരത്തിലുള്ള പദപ്രയോഗം ഇല്ലെങ്കിൽ, സെർവർ മുമ്പ് കണ്ടെത്തിയ URI പൊരുത്തം ഉപയോഗിക്കുന്നു.

അന്തിമ കുറിപ്പ് എന്ന നിലയിൽ, Nginx കൃത്യമായ പൊരുത്തങ്ങൾ തിരഞ്ഞെടുക്കുന്നു. അത്തരം പൊരുത്തങ്ങളൊന്നും ഇല്ലെങ്കിൽ, അത് ഒരു സാധാരണ എക്സ്പ്രഷനായി നോക്കുകയും തുടർന്ന് URI തിരയുകയും ചെയ്യുന്നു. ഒരു URI-യുടെ തിരയൽ മുൻഗണന മാറ്റാൻ, പ്രതീക കോമ്പിനേഷൻ ^~ ഉപയോഗിക്കുക.

try_files നിർദ്ദേശം

try_files നിർദ്ദേശം വളരെ മികച്ചതാണ് ഉപയോഗപ്രദമായ ഉപകരണം, തന്നിരിക്കുന്ന ക്രമത്തിലുള്ള ഫയലുകൾ പരിശോധിക്കുന്നതും അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുന്നതിന് കണ്ടെത്തിയ ആദ്യത്തെ ഫയൽ ഉപയോഗിക്കുന്നു.

Nginx അഭ്യർത്ഥനകൾ എങ്ങനെ നൽകുമെന്ന് നിർവചിക്കുന്നതിന് അധിക പാരാമീറ്ററുകൾ ഉപയോഗിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.

ഡിഫോൾട്ട് കോൺഫിഗറേഷൻ ഫയലിന് ലൈൻ ഉണ്ട്:

try_files $uri $uri/ /index.html;

ഇതിനർത്ഥം, ഒരു ലൊക്കേഷൻ ബ്ലോക്ക് നൽകുന്ന ഒരു അഭ്യർത്ഥന ലഭിക്കുമ്പോൾ, Nginx ആദ്യം uri ഒരു ഫയലായി സേവിക്കാൻ ശ്രമിക്കും (ഈ സ്വഭാവം $uri വേരിയബിൾ വ്യക്തമാക്കുന്നു).

$uri വേരിയബിളുമായി സെർവർ ഒരു പൊരുത്തം കണ്ടെത്തിയില്ലെങ്കിൽ, അത് uri ഒരു ഡയറക്ടറിയായി ഉപയോഗിക്കാൻ ശ്രമിക്കും.

ഒരു ട്രെയിലിംഗ് സ്ലാഷ് ഉപയോഗിച്ച്, സെർവർ ഒരു ഡയറക്ടറിയുടെ നിലനിൽപ്പ് പരിശോധിക്കുന്നു, ഉദാഹരണത്തിന് $uri/.

ഫയലോ ഡയറക്ടറിയോ കണ്ടെത്തിയില്ലെങ്കിൽ, Nginx സ്ഥിരസ്ഥിതി ഫയൽ എക്സിക്യൂട്ട് ചെയ്യുന്നു (ഇൻ ഈ സാഹചര്യത്തിൽഇത് സെർവർ ബ്ലോക്കിന്റെ റൂട്ട് ഡയറക്ടറിയിലെ index.html ആണ്). ഓരോ try_files നിർദ്ദേശവും അവസാന പാരാമീറ്റർ ഒരു ഫാൾബാക്ക് ആയി ഉപയോഗിക്കുന്നു, അതിനാൽ ഫയൽ സിസ്റ്റത്തിൽ നിലനിൽക്കണം.

മുമ്പത്തെ പരാമീറ്ററുകളിൽ വെബ് സെർവർ ഒരു പൊരുത്തം കണ്ടെത്തുന്നില്ലെങ്കിൽ, അത് ഒരു പിശക് പേജ് നൽകിയേക്കാം. ഇത് ചെയ്യുന്നതിന്, തുല്യ ചിഹ്നവും പിശക് കോഡും ഉപയോഗിക്കുക.

ഉദാഹരണത്തിന്, ലൊക്കേഷൻ / ബ്ലോക്കിന് അഭ്യർത്ഥിച്ച ഉറവിടം കണ്ടെത്താൻ കഴിയുന്നില്ലെങ്കിൽ, അത് ഒരു index.html ഫയലിന് പകരം 404 പിശക് നൽകിയേക്കാം:

try_files $uri $uri/ =404;

ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ ഒരു തുല്യ ചിഹ്നം ഇടുകയും പിശക് കോഡ് അവസാന പാരാമീറ്ററായി സജ്ജമാക്കുകയും വേണം (=404).

അധിക ഓപ്ഷനുകൾ

നൽകിയിരിക്കുന്ന ഡയറക്‌ടറിക്ക് പുറത്ത് (ഉദാഹരണത്തിന്, റൂട്ടിന് പുറത്ത്) ലൊക്കേഷൻ ബ്ലോക്ക് പേജുകൾ നൽകുന്നതിന് അപരനാമ നിർദ്ദേശം Nginx-നെ അനുവദിക്കുന്നു.

ഉദാഹരണത്തിന്, /doc/-ൽ നിന്ന് അഭ്യർത്ഥിച്ച ഫയലുകൾ /usr/share/doc/-ൽ നിന്ന് ലഭിക്കും.

തന്നിരിക്കുന്ന ലൊക്കേഷൻ ഡയറക്‌ടീവിനായി Nginx ഡയറക്‌ടറികളുടെ ലിസ്‌റ്റിംഗ് പ്രവർത്തനക്ഷമമാക്കാൻ ഡയറക്‌ടീവിലെ ഓട്ടോഇൻഡക്‌സ് നിങ്ങളെ അനുവദിക്കുന്നു.

ലൈനുകൾ അനുവദിക്കുന്നതും നിരസിക്കുന്നതും ഡയറക്ടറികളിലേക്കുള്ള ആക്‌സസ് നിയന്ത്രിക്കുന്നു.

ഉപസംഹാരം

വെബ് Nginx സെർവർഫീച്ചർ സമ്പന്നവും വളരെ ഉൽപ്പാദനക്ഷമവുമാണ്, എന്നാൽ അതിന്റെ പദങ്ങളും ഓപ്ഷനുകളും ആശയക്കുഴപ്പമുണ്ടാക്കാം.

നിങ്ങൾ Nginx കോൺഫിഗറേഷനുകൾ മനസിലാക്കുകയും അവയുമായി എങ്ങനെ പ്രവർത്തിക്കണമെന്ന് മനസിലാക്കുകയും ചെയ്തുകഴിഞ്ഞാൽ, ഈ ശക്തവും ഭാരം കുറഞ്ഞതുമായ ഉപകരണത്തിന്റെ എല്ലാ നേട്ടങ്ങളും നിങ്ങൾക്ക് ലഭിക്കും.

ടാഗുകൾ:,

വിഷയം ശരിയാണ് nginx ക്രമീകരണങ്ങൾഇത് വളരെ വലുതാണ്, ഞാൻ ഭയപ്പെടുന്നു, ഇത് ഹബ്രെയെക്കുറിച്ചുള്ള ഒരു ലേഖനത്തിന്റെ ചട്ടക്കൂടിലേക്ക് യോജിക്കുന്നില്ല. ഈ വാചകത്തിൽ ഞാൻ സംസാരിക്കാൻ ശ്രമിച്ചു പൊതു ഘടന config, കൂടുതൽ രസകരമായ ചെറിയ കാര്യങ്ങളും വിശദാംശങ്ങളും പിന്നീട് വന്നേക്കാം. :)

nginx സജ്ജീകരിക്കുന്നതിനുള്ള ഒരു നല്ല ആരംഭ പോയിന്റ് വിതരണത്തോടൊപ്പം വരുന്ന കോൺഫിഗറാണ്, എന്നാൽ ഈ സെർവറിന്റെ പല കഴിവുകളും അതിൽ സൂചിപ്പിച്ചിട്ടില്ല. കൂടുതൽ വിശദമായ ഉദാഹരണംഇഗോർ സിസോവിന്റെ വെബ്‌സൈറ്റിൽ ലഭ്യമാണ്: sysoev.ru/nginx/docs/example.html. എന്നിരുന്നാലും, ബ്രിഡ്ജും കവയത്രികളും ഉപയോഗിച്ച് ആദ്യം മുതൽ ഞങ്ങളുടെ കോൺഫിഗേഷൻ നിർമ്മിക്കാൻ ശ്രമിക്കാം. :)

നമുക്ക് തുടങ്ങാം പൊതുവായ ക്രമീകരണങ്ങൾ. ആദ്യം, ആരുടെ പേരിൽ nginx പ്രവർത്തിക്കുമെന്ന് ഞങ്ങൾ ഉപയോക്താവിനെ സൂചിപ്പിക്കും (റൂട്ടായി പ്രവർത്തിക്കുന്നത് മോശമാണ്, എല്ലാവർക്കും അറിയാം :))

ഇനി നമുക്ക് nginx-നോട് എത്ര വർക്കർ പ്രോസസുകൾ ഉണ്ടാകണമെന്ന് പറയാം. സാധാരണയായി, നല്ല തിരഞ്ഞെടുപ്പ്സംഖ്യയ്ക്ക് തുല്യമായ നിരവധി പ്രക്രിയകളുണ്ട് പ്രോസസർ കോറുകൾനിങ്ങളുടെ സെർവറിൽ, എന്നാൽ ഈ ക്രമീകരണം പരീക്ഷിക്കുന്നത് മൂല്യവത്താണ്. പ്രതീക്ഷിച്ചിരുന്നെങ്കിൽ ഉയർന്ന ലോഡ്ഓൺ HDD, ഓരോ ഫിസിക്കൽ ഹാർഡ് ഡ്രൈവിനുമായി നിങ്ങൾക്ക് ഒരു പ്രോസസ്സ് ചെയ്യാൻ കഴിയും, കാരണം എല്ലാ ജോലികളും അതിന്റെ പ്രകടനത്താൽ പരിമിതപ്പെടുത്തിയിരിക്കും.

Worker_processes 2;

പിശക് ലോഗുകൾ എവിടെ എഴുതണമെന്ന് നമുക്ക് വ്യക്തമാക്കാം. പിന്നെ, വ്യക്തിഗതമായി വെർച്വൽ സെർവറുകൾ, ഈ പരാമീറ്റർ അസാധുവാക്കാൻ കഴിയും, അതിനാൽ സെർവർ സ്റ്റാർട്ടപ്പുമായി ബന്ധപ്പെട്ട "ഗ്ലോബൽ" പിശകുകൾ മാത്രമേ ഈ ലോഗിൽ ദൃശ്യമാകൂ.

Error_log /spool/logs/nginx/nginx.error_log അറിയിപ്പ്; # "അറിയിപ്പ്" അറിയിപ്പ് നില തീർച്ചയായും മാറ്റാവുന്നതാണ്

ഇപ്പോൾ വളരെ രസകരമായ "സംഭവങ്ങൾ" വിഭാഗം വരുന്നു. അതിൽ നിങ്ങൾക്ക് സജ്ജമാക്കാൻ കഴിയും പരമാവധി തുകഒരു വർക്കർ പ്രോസസ്സ് ഒരേസമയം പ്രോസസ്സ് ചെയ്യുന്ന കണക്ഷനുകൾ, കൂടാതെ OS-ലെ ഇവന്റുകളെക്കുറിച്ചുള്ള അസമന്വിത അറിയിപ്പുകൾ സ്വീകരിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു രീതി. തീർച്ചയായും, നിങ്ങളുടെ OS-ൽ ലഭ്യമായതും സമാഹരിക്കുന്ന സമയത്ത് ഉൾപ്പെടുത്തിയതുമായ രീതികൾ മാത്രമേ നിങ്ങൾക്ക് തിരഞ്ഞെടുക്കാനാകൂ.

ഈ ക്രമീകരണങ്ങൾ നിങ്ങളുടെ സെർവറിന്റെ പ്രകടനത്തിൽ കാര്യമായ സ്വാധീനം ചെലുത്തും. OS, ഹാർഡ്‌വെയർ എന്നിവയെ ആശ്രയിച്ച് അവ വ്യക്തിഗതമായി തിരഞ്ഞെടുക്കണം. എനിക്ക് കുറച്ച് പൊതു നിയമങ്ങൾ മാത്രമേ നൽകാൻ കഴിയൂ.

ഇവന്റുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നതിനുള്ള മൊഡ്യൂളുകൾ:
- തിരഞ്ഞെടുക്കലും വോട്ടെടുപ്പും സാധാരണയായി മന്ദഗതിയിലാവുകയും പ്രോസസർ ഭാരമായി ലോഡുചെയ്യുകയും ചെയ്യുന്നു, പക്ഷേ അവ മിക്കവാറും എല്ലായിടത്തും ലഭ്യമാണ്, മിക്കവാറും എല്ലായ്‌പ്പോഴും പ്രവർത്തിക്കുന്നു;
- kqueue, epoll - കൂടുതൽ കാര്യക്ഷമമാണ്, എന്നാൽ യഥാക്രമം FreeBSD, Linux 2.6 എന്നിവയിൽ മാത്രമേ ലഭ്യമാകൂ;
- rtsig - മനോഹരം ഫലപ്രദമായ രീതി, വളരെ പഴയ ലിനക്സുകൾ പോലും പിന്തുണയ്ക്കുന്നു, എന്നാൽ എപ്പോൾ പ്രശ്നങ്ങൾ ഉണ്ടാക്കാം വലിയ സംഖ്യകണക്ഷനുകൾ;
- /dev/poll - എനിക്കറിയാവുന്നിടത്തോളം, ഇത് കുറച്ചുകൂടി പ്രവർത്തിക്കുന്നു വിദേശ സംവിധാനങ്ങൾ, സോളാരിസ് പോലെ, അതിൽ തികച്ചും ഫലപ്രദമാണ്;

worker_connections പരാമീറ്റർ:
- സേവിക്കുന്ന പരമാവധി ക്ലയന്റുകളുടെ എണ്ണം വർക്കർ_പ്രോസസ്സ് * വർക്കർ_കണക്ഷനുകൾക്ക് തുല്യമായിരിക്കും;
- ചിലപ്പോൾ അവർക്ക് ജോലി ചെയ്യാൻ കഴിയും നല്ല വശം 128 പ്രോസസുകൾ, ഓരോ പ്രോസസ്സിനും 128 കണക്ഷനുകൾ അല്ലെങ്കിൽ 1 പ്രോസസ്സ് എന്നിങ്ങനെയുള്ള ഏറ്റവും തീവ്രമായ മൂല്യങ്ങൾ പോലും, എന്നാൽ worker_connections=16384 പാരാമീറ്റർ. എന്നിരുന്നാലും, പിന്നീടുള്ള സാഹചര്യത്തിൽ, നിങ്ങൾ മിക്കവാറും OS ട്യൂൺ ചെയ്യേണ്ടതുണ്ട്.

ഇവന്റുകൾ (
വർക്കർ_കണക്ഷനുകൾ 2048;
kqueue ഉപയോഗിക്കുക; # ഞങ്ങൾക്ക് BSD ഉണ്ട് :)
}

അടുത്ത വിഭാഗം ഏറ്റവും വലുതും രസകരമായ കാര്യങ്ങൾ ഉൾക്കൊള്ളുന്നതുമാണ്. ഇത് വെർച്വൽ സെർവറുകളുടെ വിവരണമാണ്, അവയ്‌ക്കെല്ലാം പൊതുവായ ചില പാരാമീറ്ററുകളും. ഞാൻ ഒഴിവാക്കും സ്റ്റാൻഡേർഡ് ക്രമീകരണങ്ങൾ, ലോഗുകളിലേക്കുള്ള പാതകൾ പോലെ എല്ലാ കോൺഫിഗറുകളിലും ഉള്ളവ.

Http(
# താഴെയുള്ള എല്ലാ കോഡും ഈ വിഭാഗത്തിനുള്ളിലായിരിക്കും%)
# ...
}

ഈ വിഭാഗത്തിനുള്ളിൽ രസകരമായ ചില പാരാമീറ്ററുകൾ ഉണ്ടായിരിക്കാം.

സെൻഡ്ഫയൽ സിസ്റ്റം കോൾ Linux-ന് താരതമ്യേന പുതിയതാണ്. ആപ്ലിക്കേഷന്റെ വിലാസ സ്ഥലത്തേക്ക് പകർത്താതെ തന്നെ നെറ്റ്‌വർക്കിലേക്ക് ഡാറ്റ അയയ്‌ക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു. മിക്ക കേസുകളിലും, ഇത് സെർവർ പ്രകടനത്തെ ഗണ്യമായി മെച്ചപ്പെടുത്തുന്നു, അതിനാൽ എല്ലായ്‌പ്പോഴും sendfile ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നതാണ് നല്ലത്.

Keepalive_timeout പാരാമീറ്റർ ഇതിന് ഉത്തരവാദിയാണ് പരമാവധി സമയംഉപയോക്താവ് അതിലൂടെ ഒന്നും അഭ്യർത്ഥിക്കുന്നില്ലെങ്കിൽ ഒരു കീപലൈവ് കണക്ഷൻ നിലനിർത്തുന്നു. നിങ്ങളുടെ സൈറ്റ് അഭ്യർത്ഥനകൾ അയക്കുന്നതെങ്ങനെയെന്ന് പരിഗണിക്കുകയും ഈ ക്രമീകരണം ക്രമീകരിക്കുകയും ചെയ്യുക. AJAX സജീവമായി ഉപയോഗിക്കുന്ന സൈറ്റുകൾക്ക്, കണക്ഷൻ കൂടുതൽ നേരം നിലനിർത്തുന്നതാണ് നല്ലത്; ഉപയോക്താക്കൾ ദീർഘനേരം വായിക്കുന്ന സ്റ്റാറ്റിക് പേജുകൾക്ക്, കണക്ഷൻ നേരത്തെ തകർക്കുന്നതാണ് നല്ലത്. ഒരു നിഷ്‌ക്രിയ കീപലൈവ് കണക്ഷൻ നിലനിർത്തുന്നതിലൂടെ, വ്യത്യസ്തമായി ഉപയോഗിക്കാവുന്ന ഒരു കണക്ഷനാണ് നിങ്ങൾ എടുക്കുന്നതെന്ന് ഓർമ്മിക്കുക. :)

Keepalive_timeout 15;

പ്രത്യേകമായി, nginx പ്രോക്സി ക്രമീകരണങ്ങൾ ഹൈലൈറ്റ് ചെയ്യുന്നത് മൂല്യവത്താണ്. മിക്കപ്പോഴും, nginx കൃത്യമായി ഒരു പ്രോക്സി സെർവറായി ഉപയോഗിക്കുന്നു, അതനുസരിച്ച് അവയ്ക്ക് ധാരാളം ഉണ്ട് വലിയ പ്രാധാന്യം. പ്രത്യേകിച്ചും, ബാക്കെൻഡ് സെർവറിൽ നിന്ന് പ്രതീക്ഷിക്കുന്ന പ്രതികരണ വലുപ്പത്തിൽ കുറയാത്ത പ്രോക്സിഡ് അഭ്യർത്ഥനകൾക്കായി ബഫർ വലുപ്പം സജ്ജീകരിക്കുന്നത് യുക്തിസഹമാണ്. വേഗത കുറഞ്ഞ (അല്ലെങ്കിൽ, വളരെ വേഗതയുള്ള) ബാക്കെൻഡുകൾ ഉപയോഗിച്ച്, ബാക്കെൻഡിൽ നിന്നുള്ള പ്രതികരണത്തിനായി കാത്തിരിക്കുന്നതിനുള്ള സമയപരിധി മാറ്റുന്നത് അർത്ഥവത്താണ്. ഓർക്കുക, ഈ ടൈംഔട്ടുകൾ എത്രത്തോളം നീണ്ടുനിൽക്കുന്നുവോ, ബാക്കെൻഡ് മന്ദഗതിയിലാണെങ്കിൽ നിങ്ങളുടെ ഉപയോക്താക്കൾ പ്രതികരണത്തിനായി കാത്തിരിക്കും.

Proxy_buffers 8 64k;
proxy_intercept_errors on;
proxy_connect_timeout 1s;
proxy_read_timeout 3s;
proxy_send_timeout 3s;

ഒരു ചെറിയ തന്ത്രം. nginx ഒന്നിൽ കൂടുതൽ വെർച്വൽ ഹോസ്റ്റ് സേവിക്കുന്ന സാഹചര്യത്തിൽ, ക്ലയന്റ് അഭ്യർത്ഥനയിലെ ഹോസ്റ്റ് ഹെഡർ ഉപയോഗിച്ച് സെർവറിന് മറ്റൊരു ബദൽ കണ്ടെത്താൻ കഴിയാത്ത സന്ദർഭങ്ങളിൽ അഭ്യർത്ഥനകൾ പ്രോസസ്സ് ചെയ്യുന്ന ഒരു "സ്ഥിര വിർച്ച്വൽ ഹോസ്റ്റ്" സൃഷ്ടിക്കുന്നത് അർത്ഥമാക്കുന്നു.

# ഡിഫോൾട്ട് വെർച്വൽ ഹോസ്റ്റ്
സെർവർ(
80 ഡിഫോൾട്ട് കേൾക്കുക;
server_name localhost;
എല്ലാം നിഷേധിക്കുക;
}

ഇതിന് ശേഷം ഒന്നോ അതിലധികമോ "സെർവർ" വിഭാഗങ്ങൾ ഉണ്ടാകാം. അവ ഓരോന്നും ഒരു വെർച്വൽ ഹോസ്റ്റിനെ വിവരിക്കുന്നു (മിക്കപ്പോഴും, പേര് അടിസ്ഥാനമാക്കിയുള്ളത്). ഒരു ഹോസ്റ്റിംഗിലെ നിരവധി സൈറ്റുകളുടെ ഉടമകൾക്ക് അല്ലെങ്കിൽ ഹോസ്റ്റർമാർക്കായി, ഒരു നിർദ്ദേശം പോലെയുള്ള എന്തെങ്കിലും ഉണ്ടായിരിക്കാം

/spool/users/nginx/*.conf;

ബാക്കിയുള്ളവ മിക്കവാറും അവരുടെ വെർച്വൽ ഹോസ്റ്റിനെ പ്രധാന കോൺഫിഗറിൽ നേരിട്ട് വിവരിക്കും.

സെർവർ (
കേൾക്കുക 80;

# സെർവർ_നെയിം നിർദ്ദേശത്തിന് ഒരേ സമയം ഒന്നിലധികം പേരുകൾ വ്യക്തമാക്കാനാകുമെന്നത് ശ്രദ്ധിക്കുക.
server_name myserver.ru myserver.com;
access_log /spool/logs/nginx/myserver.access_log സമയം കഴിഞ്ഞു;
error_log /spool/logs/nginx/myserver.error_log മുന്നറിയിപ്പ്;
# ...

ഔട്ട്പുട്ടിനായി ഡിഫോൾട്ട് എൻകോഡിംഗ് സജ്ജമാക്കാം.

ചാർസെറ്റ് utf-8;

1 മെഗാബൈറ്റിൽ കൂടുതൽ ദൈർഘ്യമുള്ള ക്ലയന്റുകളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ സ്വീകരിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നില്ലെന്ന് പറയാം.

Client_max_body_size 1m;

സെർവറിനായി നമുക്ക് SSI പ്രവർത്തനക്ഷമമാക്കാം കൂടാതെ SSI വേരിയബിളുകൾക്കായി 1 കിലോബൈറ്റിൽ കൂടുതൽ റിസർവ് ചെയ്യാൻ ആവശ്യപ്പെടാം.

സൈ ഓൺ;
ssi_value_length 1024;

അവസാനമായി, ഞങ്ങൾ രണ്ട് ലൊക്കേഷനുകൾ വിവരിക്കും, അവയിലൊന്ന് ബാക്കെൻഡിലേക്ക് നയിക്കും, പോർട്ട് 9999-ൽ പ്രവർത്തിക്കുന്ന അപ്പാച്ചെയിലേക്ക്, രണ്ടാമത്തേത് ലോക്കലിൽ നിന്ന് സ്റ്റാറ്റിക് ഇമേജുകൾ അയയ്ക്കും. ഫയൽ സിസ്റ്റം. രണ്ട് ലൊക്കേഷനുകൾക്ക് ഇത് അർത്ഥമാക്കുന്നില്ല, എന്നാൽ അവയിൽ വലിയൊരു സംഖ്യയ്ക്ക് സെർവർ റൂട്ട് ഡയറക്‌ടറി സംഭരിക്കുന്ന ഒരു വേരിയബിൾ ഉടനടി നിർവ്വചിക്കുകയും തുടർന്ന് അത് ലൊക്കേഷൻ വിവരണങ്ങളിൽ ഉപയോഗിക്കുകയും ചെയ്യുന്നു.

ഓഗസ്റ്റ് 14, 2009 7:29 pm

nginx സജ്ജീകരിക്കുന്നു

  • Nginx

വിഷയം ശരിയായ ക്രമീകരണങ്ങൾ nginx വളരെ വലുതാണ്, ഞാൻ ഭയപ്പെടുന്നു, ഇത് ഹബ്രെയെക്കുറിച്ചുള്ള ഒരു ലേഖനത്തിന്റെ ചട്ടക്കൂടിലേക്ക് യോജിക്കുന്നില്ല. ഈ വാചകത്തിൽ ഞാൻ കോൺഫിഗറേഷന്റെ പൊതുവായ ഘടനയെക്കുറിച്ച് സംസാരിക്കാൻ ശ്രമിച്ചു; കൂടുതൽ രസകരമായ വിശദാംശങ്ങളും വിശദാംശങ്ങളും പിന്നീട് വരാം. :)

nginx സജ്ജീകരിക്കുന്നതിനുള്ള ഒരു നല്ല ആരംഭ പോയിന്റ് വിതരണത്തോടൊപ്പം വരുന്ന കോൺഫിഗറാണ്, എന്നാൽ ഈ സെർവറിന്റെ പല കഴിവുകളും അതിൽ സൂചിപ്പിച്ചിട്ടില്ല. കൂടുതൽ വിശദമായ ഉദാഹരണം ഇഗോർ സിസോവിന്റെ വെബ്‌സൈറ്റിലാണ്: sysoev.ru/nginx/docs/example.html. എന്നിരുന്നാലും, ബ്രിഡ്ജും കവയത്രികളും ഉപയോഗിച്ച് ആദ്യം മുതൽ ഞങ്ങളുടെ കോൺഫിഗേഷൻ നിർമ്മിക്കാൻ ശ്രമിക്കാം. :)

പൊതുവായ ക്രമീകരണങ്ങളിൽ നിന്ന് ആരംഭിക്കാം. ആദ്യം, ആരുടെ പേരിൽ nginx പ്രവർത്തിക്കുമെന്ന് ഞങ്ങൾ ഉപയോക്താവിനെ സൂചിപ്പിക്കും (റൂട്ടായി പ്രവർത്തിക്കുന്നത് മോശമാണ്, എല്ലാവർക്കും അറിയാം :))

ഇനി നമുക്ക് nginx-നോട് എത്ര വർക്കർ പ്രോസസുകൾ ഉണ്ടാകണമെന്ന് പറയാം. സാധാരണഗതിയിൽ, നിങ്ങളുടെ സെർവറിലെ പ്രോസസർ കോറുകളുടെ എണ്ണത്തിന് തുല്യമായ നിരവധി പ്രക്രിയകൾ ഒരു നല്ല തിരഞ്ഞെടുപ്പാണ്, എന്നാൽ ഈ ക്രമീകരണം പരീക്ഷിക്കുന്നത് മൂല്യവത്താണ്. ഹാർഡ് ഡ്രൈവിൽ ഉയർന്ന ലോഡ് പ്രതീക്ഷിക്കുന്നുവെങ്കിൽ, ഓരോ ഫിസിക്കൽ ഹാർഡ് ഡ്രൈവിനുമായി നിങ്ങൾക്ക് ഒരു പ്രോസസ്സ് ചെയ്യാൻ കഴിയും, കാരണം എല്ലാ ജോലികളും അതിന്റെ പ്രകടനത്താൽ പരിമിതപ്പെടുത്തിയിരിക്കും.

Worker_processes 2;

പിശക് ലോഗുകൾ എവിടെ എഴുതണമെന്ന് നമുക്ക് വ്യക്തമാക്കാം. തുടർന്ന്, വ്യക്തിഗത വെർച്വൽ സെർവറുകൾക്കായി, ഈ പരാമീറ്റർ അസാധുവാക്കാൻ കഴിയും, അതിനാൽ സെർവർ സ്റ്റാർട്ടപ്പുമായി ബന്ധപ്പെട്ട "ഗ്ലോബൽ" പിശകുകൾ മാത്രമേ ഈ ലോഗിൽ ദൃശ്യമാകൂ.

Error_log /spool/logs/nginx/nginx.error_log അറിയിപ്പ്; # "അറിയിപ്പ്" അറിയിപ്പ് നില തീർച്ചയായും മാറ്റാവുന്നതാണ്

ഇപ്പോൾ വളരെ രസകരമായ "സംഭവങ്ങൾ" വിഭാഗം വരുന്നു. ഒരു വർക്കർ പ്രോസസ്സ് ഒരേസമയം പ്രോസസ്സ് ചെയ്യുന്ന പരമാവധി കണക്ഷനുകളും OS-ലെ ഇവന്റുകളെക്കുറിച്ചുള്ള അസമന്വിത അറിയിപ്പുകൾ സ്വീകരിക്കാൻ ഉപയോഗിക്കുന്ന രീതിയും ഇതിൽ നിങ്ങൾക്ക് സജ്ജമാക്കാൻ കഴിയും. തീർച്ചയായും, നിങ്ങളുടെ OS-ൽ ലഭ്യമായതും സമാഹരിക്കുന്ന സമയത്ത് ഉൾപ്പെടുത്തിയതുമായ രീതികൾ മാത്രമേ നിങ്ങൾക്ക് തിരഞ്ഞെടുക്കാനാകൂ.

ഈ ക്രമീകരണങ്ങൾ നിങ്ങളുടെ സെർവറിന്റെ പ്രകടനത്തിൽ കാര്യമായ സ്വാധീനം ചെലുത്തും. OS, ഹാർഡ്‌വെയർ എന്നിവയെ ആശ്രയിച്ച് അവ വ്യക്തിഗതമായി തിരഞ്ഞെടുക്കണം. എനിക്ക് കുറച്ച് പൊതു നിയമങ്ങൾ മാത്രമേ നൽകാൻ കഴിയൂ.

ഇവന്റുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നതിനുള്ള മൊഡ്യൂളുകൾ:
- തിരഞ്ഞെടുക്കലും വോട്ടെടുപ്പും സാധാരണയായി മന്ദഗതിയിലാവുകയും പ്രോസസർ ഭാരമായി ലോഡുചെയ്യുകയും ചെയ്യുന്നു, പക്ഷേ അവ മിക്കവാറും എല്ലായിടത്തും ലഭ്യമാണ്, മിക്കവാറും എല്ലായ്‌പ്പോഴും പ്രവർത്തിക്കുന്നു;
- kqueue, epoll - കൂടുതൽ കാര്യക്ഷമമാണ്, എന്നാൽ യഥാക്രമം FreeBSD, Linux 2.6 എന്നിവയിൽ മാത്രമേ ലഭ്യമാകൂ;
- rtsig വളരെ ഫലപ്രദമായ ഒരു രീതിയാണ്, വളരെ പഴയ ലിനക്സുകൾ പോലും പിന്തുണയ്ക്കുന്നു, പക്ഷേ ഇത് ധാരാളം കണക്ഷനുകളിൽ പ്രശ്നങ്ങൾ ഉണ്ടാക്കാം;
- /dev/poll - എനിക്കറിയാവുന്നിടത്തോളം, സോളാരിസ് പോലെയുള്ള കുറച്ചുകൂടി വിചിത്രമായ സിസ്റ്റങ്ങളിൽ ഇത് പ്രവർത്തിക്കുന്നു, അവിടെ അത് വളരെ ഫലപ്രദമാണ്;

worker_connections പരാമീറ്റർ:
- സേവിക്കുന്ന പരമാവധി ക്ലയന്റുകളുടെ എണ്ണം വർക്കർ_പ്രോസസ്സ് * വർക്കർ_കണക്ഷനുകൾക്ക് തുല്യമായിരിക്കും;
- ചിലപ്പോൾ ഏറ്റവും തീവ്രമായ മൂല്യങ്ങൾ പോലും 128 പ്രോസസ്സുകൾ, ഒരു പ്രോസസ്സിന് 128 കണക്ഷനുകൾ അല്ലെങ്കിൽ 1 പ്രോസസ്സ് പോലെ പോസിറ്റീവായി പ്രവർത്തിക്കും, എന്നാൽ worker_connections=16384 പാരാമീറ്റർ ഉപയോഗിച്ച്. എന്നിരുന്നാലും, പിന്നീടുള്ള സാഹചര്യത്തിൽ, നിങ്ങൾ മിക്കവാറും OS ട്യൂൺ ചെയ്യേണ്ടതുണ്ട്.

ഇവന്റുകൾ (
വർക്കർ_കണക്ഷനുകൾ 2048;
kqueue ഉപയോഗിക്കുക; # ഞങ്ങൾക്ക് BSD ഉണ്ട് :)
}

അടുത്ത വിഭാഗം ഏറ്റവും വലുതും രസകരമായ കാര്യങ്ങൾ ഉൾക്കൊള്ളുന്നതുമാണ്. ഇത് വെർച്വൽ സെർവറുകളുടെ വിവരണമാണ്, അവയ്‌ക്കെല്ലാം പൊതുവായ ചില പാരാമീറ്ററുകളും. ലോഗുകളിലേക്കുള്ള പാതകൾ പോലെ എല്ലാ കോൺഫിഗറുകളിലും ഉള്ള സ്റ്റാൻഡേർഡ് ക്രമീകരണങ്ങൾ ഞാൻ ഒഴിവാക്കും.

Http(
# താഴെയുള്ള എല്ലാ കോഡും ഈ വിഭാഗത്തിനുള്ളിലായിരിക്കും%)
# ...
}

ഈ വിഭാഗത്തിനുള്ളിൽ രസകരമായ ചില പാരാമീറ്ററുകൾ ഉണ്ടായിരിക്കാം.

സെൻഡ്ഫയൽ സിസ്റ്റം കോൾ Linux-ന് താരതമ്യേന പുതിയതാണ്. ആപ്ലിക്കേഷന്റെ വിലാസ സ്ഥലത്തേക്ക് പകർത്താതെ തന്നെ നെറ്റ്‌വർക്കിലേക്ക് ഡാറ്റ അയയ്‌ക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു. മിക്ക കേസുകളിലും, ഇത് സെർവർ പ്രകടനത്തെ ഗണ്യമായി മെച്ചപ്പെടുത്തുന്നു, അതിനാൽ എല്ലായ്‌പ്പോഴും sendfile ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നതാണ് നല്ലത്.

ഉപയോക്താവ് അതിൽ ഒന്നും അഭ്യർത്ഥിക്കുന്നില്ലെങ്കിൽ, Keepalive_timeout പാരാമീറ്റർ ഒരു Keepalive കണക്ഷൻ നിലനിർത്തുന്നതിനുള്ള പരമാവധി സമയത്തിന് ഉത്തരവാദിയാണ്. നിങ്ങളുടെ സൈറ്റ് അഭ്യർത്ഥനകൾ അയക്കുന്നതെങ്ങനെയെന്ന് പരിഗണിക്കുകയും ഈ ക്രമീകരണം ക്രമീകരിക്കുകയും ചെയ്യുക. AJAX സജീവമായി ഉപയോഗിക്കുന്ന സൈറ്റുകൾക്ക്, കണക്ഷൻ കൂടുതൽ നേരം നിലനിർത്തുന്നതാണ് നല്ലത്; ഉപയോക്താക്കൾ ദീർഘനേരം വായിക്കുന്ന സ്റ്റാറ്റിക് പേജുകൾക്ക്, കണക്ഷൻ നേരത്തെ തകർക്കുന്നതാണ് നല്ലത്. ഒരു നിഷ്‌ക്രിയ കീപലൈവ് കണക്ഷൻ നിലനിർത്തുന്നതിലൂടെ, വ്യത്യസ്തമായി ഉപയോഗിക്കാവുന്ന ഒരു കണക്ഷനാണ് നിങ്ങൾ എടുക്കുന്നതെന്ന് ഓർമ്മിക്കുക. :)

Keepalive_timeout 15;

പ്രത്യേകമായി, nginx പ്രോക്സി ക്രമീകരണങ്ങൾ ഹൈലൈറ്റ് ചെയ്യുന്നത് മൂല്യവത്താണ്. മിക്കപ്പോഴും, nginx ഒരു പ്രോക്സി സെർവറായി ഉപയോഗിക്കുന്നു, അതിനാൽ അവ വളരെ പ്രധാനമാണ്. പ്രത്യേകിച്ചും, ബാക്കെൻഡ് സെർവറിൽ നിന്ന് പ്രതീക്ഷിക്കുന്ന പ്രതികരണ വലുപ്പത്തിൽ കുറയാത്ത പ്രോക്സിഡ് അഭ്യർത്ഥനകൾക്കായി ബഫർ വലുപ്പം സജ്ജീകരിക്കുന്നത് യുക്തിസഹമാണ്. വേഗത കുറഞ്ഞ (അല്ലെങ്കിൽ, വളരെ വേഗതയുള്ള) ബാക്കെൻഡുകൾ ഉപയോഗിച്ച്, ബാക്കെൻഡിൽ നിന്നുള്ള പ്രതികരണത്തിനായി കാത്തിരിക്കുന്നതിനുള്ള സമയപരിധി മാറ്റുന്നത് അർത്ഥവത്താണ്. ഓർക്കുക, ഈ ടൈംഔട്ടുകൾ എത്രത്തോളം നീണ്ടുനിൽക്കുന്നുവോ, ബാക്കെൻഡ് മന്ദഗതിയിലാണെങ്കിൽ നിങ്ങളുടെ ഉപയോക്താക്കൾ പ്രതികരണത്തിനായി കാത്തിരിക്കും.

Proxy_buffers 8 64k;
proxy_intercept_errors on;
proxy_connect_timeout 1s;
proxy_read_timeout 3s;
proxy_send_timeout 3s;

ഒരു ചെറിയ തന്ത്രം. nginx ഒന്നിൽ കൂടുതൽ വെർച്വൽ ഹോസ്റ്റ് സേവിക്കുന്ന സാഹചര്യത്തിൽ, ക്ലയന്റ് അഭ്യർത്ഥനയിലെ ഹോസ്റ്റ് ഹെഡർ ഉപയോഗിച്ച് സെർവറിന് മറ്റൊരു ബദൽ കണ്ടെത്താൻ കഴിയാത്ത സന്ദർഭങ്ങളിൽ അഭ്യർത്ഥനകൾ പ്രോസസ്സ് ചെയ്യുന്ന ഒരു "സ്ഥിര വിർച്ച്വൽ ഹോസ്റ്റ്" സൃഷ്ടിക്കുന്നത് അർത്ഥമാക്കുന്നു.

# ഡിഫോൾട്ട് വെർച്വൽ ഹോസ്റ്റ്
സെർവർ(
80 ഡിഫോൾട്ട് കേൾക്കുക;
server_name localhost;
എല്ലാം നിഷേധിക്കുക;
}

ഇതിന് ശേഷം ഒന്നോ അതിലധികമോ "സെർവർ" വിഭാഗങ്ങൾ ഉണ്ടാകാം. അവ ഓരോന്നും ഒരു വെർച്വൽ ഹോസ്റ്റിനെ വിവരിക്കുന്നു (മിക്കപ്പോഴും, പേര് അടിസ്ഥാനമാക്കിയുള്ളത്). ഒരു ഹോസ്റ്റിംഗിലെ നിരവധി സൈറ്റുകളുടെ ഉടമകൾക്ക് അല്ലെങ്കിൽ ഹോസ്റ്റർമാർക്കായി, ഒരു നിർദ്ദേശം പോലെയുള്ള എന്തെങ്കിലും ഉണ്ടായിരിക്കാം

/spool/users/nginx/*.conf;

ബാക്കിയുള്ളവ മിക്കവാറും അവരുടെ വെർച്വൽ ഹോസ്റ്റിനെ പ്രധാന കോൺഫിഗറിൽ നേരിട്ട് വിവരിക്കും.

സെർവർ (
കേൾക്കുക 80;

# സെർവർ_നെയിം നിർദ്ദേശത്തിന് ഒരേ സമയം ഒന്നിലധികം പേരുകൾ വ്യക്തമാക്കാനാകുമെന്നത് ശ്രദ്ധിക്കുക.
server_name myserver.ru myserver.com;
access_log /spool/logs/nginx/myserver.access_log സമയം കഴിഞ്ഞു;
error_log /spool/logs/nginx/myserver.error_log മുന്നറിയിപ്പ്;
# ...

ഔട്ട്പുട്ടിനായി ഡിഫോൾട്ട് എൻകോഡിംഗ് സജ്ജമാക്കാം.

ചാർസെറ്റ് utf-8;

1 മെഗാബൈറ്റിൽ കൂടുതൽ ദൈർഘ്യമുള്ള ക്ലയന്റുകളിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ സ്വീകരിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നില്ലെന്ന് പറയാം.

Client_max_body_size 1m;

സെർവറിനായി നമുക്ക് SSI പ്രവർത്തനക്ഷമമാക്കാം കൂടാതെ SSI വേരിയബിളുകൾക്കായി 1 കിലോബൈറ്റിൽ കൂടുതൽ റിസർവ് ചെയ്യാൻ ആവശ്യപ്പെടാം.

സൈ ഓൺ;
ssi_value_length 1024;

അവസാനമായി, ഞങ്ങൾ രണ്ട് ലൊക്കേഷനുകൾ വിവരിക്കും, അവയിലൊന്ന് ബാക്കെൻഡിലേക്ക് നയിക്കും, പോർട്ട് 9999-ൽ പ്രവർത്തിക്കുന്ന അപ്പാച്ചെയിലേക്ക്, രണ്ടാമത്തേത് ലോക്കൽ ഫയൽ സിസ്റ്റത്തിൽ നിന്ന് സ്റ്റാറ്റിക് ഇമേജുകൾ അയയ്ക്കും. രണ്ട് ലൊക്കേഷനുകൾക്ക് ഇത് അർത്ഥമാക്കുന്നില്ല, പക്ഷേ അവയിൽ വലിയൊരു സംഖ്യയ്ക്ക് സെർവർ റൂട്ട് ഡയറക്‌ടറി സംഭരിക്കുന്ന ഒരു വേരിയബിൾ ഉടനടി നിർവ്വചിക്കുകയും തുടർന്ന് അത് ലൊക്കേഷൻ വിവരണങ്ങളിൽ ഉപയോഗിക്കുകയും ചെയ്യുന്നു.

ഏറ്റവും ജനപ്രിയമായ വെബ് സെർവറുകളിൽ ഒന്ന്

Nginx അതിന്റെ പ്രകടനം കാരണം വെബ്, പ്രോക്സി സെർവർ ഉപയോക്താക്കൾക്കിടയിൽ വളരെ ജനപ്രിയമാണ്. സെർവറിന് നിരവധി ഗുണങ്ങളുണ്ട്, പക്ഷേ ഇത് സജ്ജീകരിക്കുന്നത് ഒരു തുടക്കക്കാരന് ബുദ്ധിമുട്ടായിരിക്കും. കോൺഫിഗറേഷൻ ഫയലുകൾ, വാക്യഘടന, അടിസ്ഥാന Nginx പാരാമീറ്ററുകൾ സജ്ജീകരിക്കൽ എന്നിവ മനസ്സിലാക്കാൻ നിങ്ങളെ സഹായിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു.

ഡയറക്ടറി ശ്രേണി

എല്ലാ സെർവർ കോൺഫിഗറേഷൻ ഫയലുകളും /etc/nginx ഡയറക്ടറിയിലാണ് സ്ഥിതി ചെയ്യുന്നത്. കൂടാതെ, ഡയറക്‌ടറിക്കുള്ളിൽ നിരവധി ഫോൾഡറുകളും മോഡുലാർ കോൺഫിഗറേഷൻ ഫയലുകളും ഉണ്ട്.

cd /etc/nginx
ls -F
conf.d/ koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/win-utf
koi-utf naxsi_core.rules proxy_params sites-enabled/

നിങ്ങൾ അപ്പാച്ചെ ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ, സൈറ്റുകൾ പ്രവർത്തനക്ഷമമാക്കിയതും സൈറ്റുകൾ ലഭ്യമായതുമായ ഡയറക്‌ടറികൾ നിങ്ങൾക്ക് പരിചിതമായിരിക്കണം. അവർ സൈറ്റുകളുടെ കോൺഫിഗറേഷൻ നിർണ്ണയിക്കുന്നു. സൃഷ്ടിച്ച ഫയലുകൾ അവസാന ഡയറക്‌ടറിയിൽ സംഭരിച്ചിരിക്കുന്നു. കോൺഫിഗറേഷനുകൾ മാത്രം സംഭരിക്കുന്നതിന് സൈറ്റുകൾ പ്രവർത്തനക്ഷമമാക്കിയ ഫോൾഡർ ആവശ്യമാണ് സജീവമാക്കിയ പേജുകൾ. അവയെ ബന്ധിപ്പിക്കുന്നതിന് നിങ്ങൾക്ക് ആവശ്യമാണ് പ്രതീകാത്മക ലിങ്ക്ഫോൾഡറുകൾക്കിടയിൽ. കോൺഫിഗറേഷനുകൾ conf.d ഡയറക്ടറിയിലും സൂക്ഷിക്കാം. അതേ സമയം, Nginx സ്റ്റാർട്ടപ്പ് സമയത്ത്, .conf വിപുലീകരണമുള്ള ഓരോ ഫയലും വീണ്ടും വായിക്കും. കോൺഫിഗറേഷൻ ഫയലുകൾ എഴുതുമ്പോൾ, പിശകുകളില്ലാതെ കോഡ് ടൈപ്പ് ചെയ്ത് വാക്യഘടന പിന്തുടരുക. മറ്റെല്ലാ ഫയലുകളും /etc/nginx-ൽ സ്ഥിതി ചെയ്യുന്നു. കോൺഫിഗറേറ്ററിൽ നിർദ്ദിഷ്ട പ്രക്രിയകളെക്കുറിച്ചുള്ള വിവരങ്ങളും അധിക ഘടകങ്ങളും അടങ്ങിയിരിക്കുന്നു.

പ്രധാന Nginx കോൺഫിഗറേഷൻ ഫയൽ nginx.conf ആണ്.

ഇത് എല്ലാ കോൺഫിഗറേഷൻ ഫയലുകളും വായിക്കുന്നു, സെർവർ ആരംഭിക്കുമ്പോൾ ആവശ്യപ്പെടുന്ന ഒന്നായി അവയെ സംയോജിപ്പിക്കുന്നു. ഇതുപയോഗിച്ച് ഫയൽ തുറക്കുക:

sudo nano /etc/nginx/nginx.conf

ഇനിപ്പറയുന്ന വരികൾ സ്ക്രീനിൽ ദൃശ്യമാകും:

ഉപയോക്താവ് www-data;
തൊഴിലാളി_പ്രക്രിയകൾ 4;
pid /var/run/nginx.pid;
ഇവന്റുകൾ (
വർക്കർ_കണക്ഷനുകൾ 768;
#multi_accept on;
}
http(
. . .

ആദ്യത്തേത് Nginx നെക്കുറിച്ചുള്ള പൊതുവായ വിവരങ്ങളാണ്. www-data എന്ന പദപ്രയോഗം സെർവർ പ്രവർത്തിപ്പിക്കുന്ന ഉപയോക്താവിനെ സൂചിപ്പിക്കുന്നു. ആന്തരിക ഉപയോഗത്തിനായുള്ള PID പ്രോസസ്സുകൾ എവിടെയാണെന്ന് pid നിർദ്ദേശം കാണിക്കുന്നു. ഒരേസമയം Nginx-ന് എത്ര പ്രോസസ്സുകൾ പ്രവർത്തിപ്പിക്കാൻ കഴിയുമെന്ന് worker_processes ലൈൻ കാണിക്കുന്നു. കൂടാതെ, നിങ്ങൾക്ക് ഇവിടെ ലോഗുകൾ വ്യക്തമാക്കാൻ കഴിയും (ഉദാഹരണത്തിന്, പിശക് ലോഗ് നിർണ്ണയിക്കുന്നത് error_log നിർദ്ദേശം ഉപയോഗിച്ചാണ്). ഇവന്റ് വിഭാഗം ചുവടെയുണ്ട്. സെർവർ കണക്ഷനുകൾ കൈകാര്യം ചെയ്യാൻ ഇത് ആവശ്യമാണ്. അതിനു ശേഷം http ബ്ലോക്ക് ആണ്.

Nginx കോൺഫിഗറേഷൻ ഫയൽ ഘടന

ഫയൽ ഫോർമാറ്റിംഗ് ഘടന മനസ്സിലാക്കുന്നത് നിങ്ങളുടെ വെബ് സെർവർ കോൺഫിഗറേഷൻ നന്നായി മനസ്സിലാക്കാൻ സഹായിക്കും. ഇത് ഘടനാപരമായ ബ്ലോക്കുകളായി തിരിച്ചിരിക്കുന്നു. സ്വകാര്യ ബ്ലോക്കുകൾ ഉപയോഗിച്ചാണ് http ബ്ലോക്ക് കോൺഫിഗറേഷൻ വിശദാംശങ്ങൾ ലേയർ ചെയ്തിരിക്കുന്നത്. അവർ മാതാപിതാക്കളിൽ നിന്ന് സ്വത്ത് അവകാശമാക്കുന്നു, അതായത്. അവ സ്ഥിതിചെയ്യുന്നത്. ഈ ബ്ലോക്ക്മിക്ക സെർവർ കോൺഫിഗറേഷനുകളും സംഭരിക്കുന്നു. അവ സെർവർ ബ്ലോക്കുകളായി തിരിച്ചിരിക്കുന്നു, അതിനുള്ളിലാണ്.

നിങ്ങൾ Nginx സെർവർ കോൺഫിഗർ ചെയ്യുമ്പോൾ, കോൺഫിഗറേഷൻ ബ്ലോക്ക് കുറവാണെന്ന് ഓർക്കുക, കുറച്ച് ഘടകങ്ങൾക്ക് പ്രോപ്പർട്ടികൾ അവകാശമാക്കും, തിരിച്ചും. ഫയലിൽ അടങ്ങിയിരിക്കുന്നു ഒരു വലിയ സംഖ്യസെർവറിന്റെ പ്രവർത്തനത്തെ മാറ്റുന്ന ഓപ്ഷനുകൾ. ക്ലയന്റിലേക്ക് അയച്ച ഫയലുകൾക്കായി നിങ്ങൾക്ക് കംപ്രഷൻ സജ്ജമാക്കാൻ കഴിയും, ഉദാഹരണത്തിന്. ഇത് ചെയ്യുന്നതിന്, പാരാമീറ്ററുകൾ നൽകുക:

ജിസിപ്പ് ഓൺ;
gzip_disable "msie6";

ഒരേ പാരാമീറ്റർ എടുക്കാം എന്നത് ശ്രദ്ധിക്കുക വ്യത്യസ്ത അർത്ഥങ്ങൾവി വ്യത്യസ്ത ബ്ലോക്കുകൾ. ആദ്യം അത് മുകളിൽ സജ്ജമാക്കുക, തുടർന്ന് ആവശ്യമുള്ള തലത്തിൽ പാരാമീറ്റർ പുനർനിർവചിക്കുക. എങ്കിൽ അവസാന പ്രവർത്തനംഎക്സിക്യൂട്ട് ചെയ്തിട്ടില്ല, പ്രോഗ്രാം മൂല്യങ്ങൾ സ്വയമേവ സജ്ജീകരിക്കും.

nginx.conf ഫയലിന്റെ അവസാന വരികൾ ഇവയാണ്:

/etc/nginx/conf.d/*.conf;
/etc/nginx/sites-enabled/*;

ലൊക്കേഷനും സെർവർ ബ്ലോക്കുകളും ഈ ഫയലിന് പുറത്ത് സംഭരിച്ചിട്ടുണ്ടെന്ന് അവർ സൂചിപ്പിക്കുന്നു. അവർ URL ക്രമീകരണങ്ങളും നിർവചിക്കുന്നു നിർദ്ദിഷ്ട ഫയലുകൾ. ഒരു മോഡുലാർ കോൺഫിഗറേഷൻ ഘടന നിലനിർത്താൻ ഈ ഘടന ആവശ്യമാണ്. അതിനുള്ളിൽ നിങ്ങൾക്ക് വ്യത്യസ്ത സൈറ്റുകൾക്കായി പുതിയ ഡയറക്ടറികളും ഫയലുകളും സൃഷ്ടിക്കാൻ കഴിയും. കൂടാതെ, നിങ്ങൾക്ക് സമാന ഫയലുകൾ ഗ്രൂപ്പുചെയ്യാനാകും. പരിഗണനയ്ക്ക് ശേഷം, നിങ്ങൾക്ക് nginx.conf ഫയൽ അടയ്ക്കാം.

വെർച്വൽ ബ്ലോക്കുകൾ

അവ അപ്പാച്ചെയിലെ വെർച്വൽ ഹോസ്റ്റുകൾക്ക് സമാനമാണ്. സെർവർ സെക്ഷൻ ബ്ലോക്കുകളിൽ സെർവറിൽ സ്ഥിതി ചെയ്യുന്ന വ്യക്തിഗത സൈറ്റുകളുടെ സവിശേഷതകൾ ഉൾപ്പെടുന്നു. സൈറ്റുകളിൽ ലഭ്യമായ ഫോൾഡറിൽ നിങ്ങൾ ഡിഫോൾട്ട് സെർവർ ബ്ലോക്ക് ഫയൽ കണ്ടെത്തും. സൈറ്റുകൾ പരിപാലിക്കുമ്പോൾ ആവശ്യമായേക്കാവുന്ന ആവശ്യമായ ഡാറ്റ അതിനുള്ളിൽ നിങ്ങൾക്ക് കണ്ടെത്താനാകും.

cd സൈറ്റുകൾ-ലഭ്യം
സുഡോ നാനോ ഡിഫോൾട്ട്
സെർവർ(
റൂട്ട് /usr/share/nginx/www;
സൂചിക സൂചിക.html index.htm;
server_name localhost;
സ്ഥാനം/(
try_files $uri $uri/ /index.html;
}
സ്ഥാനം /ഡോക്/ (
അപരനാമം /usr/share/doc/;
ഓട്ടോഇൻഡക്സ് ഓണാണ്;
127.0.0.1 അനുവദിക്കുക;
എല്ലാം നിഷേധിക്കുക;
}
}

മുകളിലെ ഉദാഹരണത്തിൽ, അഭിപ്രായങ്ങൾ മനഃപൂർവ്വം നീക്കംചെയ്തു. സുഗമമായ ധാരണയ്ക്കായാണ് ഇത് ചെയ്തത്. സെർവർ ബ്ലോക്കുകൾക്കുള്ളിൽ ചുരുണ്ട ബ്രേസുകളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ക്രമീകരണങ്ങളുണ്ട്:

nginx.conf ഫയലിൽ എഴുതിയ http യുടെ അവസാനം ഉൾപ്പെടുത്തിയിരിക്കുന്ന നിർദ്ദേശം ഉപയോഗിച്ചാണ് ഈ ബ്ലോക്ക് സ്ഥാപിച്ചിരിക്കുന്നത്. റൂട്ട് ഡയറക്‌ടീവ് സൈറ്റ് ഉള്ളടക്കം സ്ഥിതി ചെയ്യുന്ന ഡയറക്ടറി നിർവചിക്കുന്നു. അതിൽ, ഉപയോക്താവ് ആവശ്യപ്പെടുന്ന ഫയലുകൾക്കായി പ്രോഗ്രാം തിരയും. സ്ഥിരസ്ഥിതി പാത ഇതാണ്: /usr/share/nginx/www. Nginx അർദ്ധവിരാമങ്ങൾ ഉപയോഗിച്ച് ലൈനുകളോ നിർദ്ദേശങ്ങളോ പരസ്പരം വേർതിരിക്കുന്നു. നിങ്ങൾ ഒരു വിരാമചിഹ്നം ഇട്ടില്ലെങ്കിൽ, നിരവധി വരികൾ ഒന്നായി വായിക്കപ്പെടും. ഒരു സൂചികയായി ഉപയോഗിക്കേണ്ട നിയമങ്ങൾ വ്യക്തമാക്കുന്നതിന്, സൂചിക നിർദ്ദേശം ഉപയോഗിക്കുക. അവ ലിസ്റ്റുചെയ്തിരിക്കുന്ന ക്രമത്തിൽ സെർവർ പരിശോധിക്കും. ലഭ്യമായ പേജുകളൊന്നും ഉപയോക്താവ് ആവശ്യപ്പെട്ടിട്ടില്ലെങ്കിൽ, index.html തിരികെ നൽകും. അത് ഇല്ലെങ്കിൽ, സെർവർ index.htm എന്ന് നോക്കും.

server_name റൂൾ

സെർവർ ബ്ലോക്ക് പ്രോസസ്സ് ചെയ്യേണ്ട ഡൊമെയ്ൻ നാമങ്ങളുടെ ഒരു ലിസ്റ്റ് ഇതിൽ ഉൾപ്പെടുന്നു. സ്‌പെയ്‌സുകളാൽ വേർതിരിക്കുന്ന അവയിൽ എത്ര വേണമെങ്കിലും നിങ്ങൾക്ക് നൽകാം. നിങ്ങൾ ഡൊമെയ്‌നിന്റെ അവസാനത്തിലോ തുടക്കത്തിലോ * ഇടുകയാണെങ്കിൽ, നിങ്ങൾക്ക് ഒരു മാസ്‌ക് ഉപയോഗിച്ച് ഒരു പേര് വ്യക്തമാക്കാൻ കഴിയും. പേരിന്റെ ഭാഗവുമായി നക്ഷത്രചിഹ്നം പൊരുത്തപ്പെടുന്നു. നിങ്ങൾ *.com.ua എന്ന് നൽകുകയാണെങ്കിൽ, ഇതിൽ വ്യക്തമാക്കിയ എല്ലാ വിലാസങ്ങളും ഉൾപ്പെടും ഡൊമെയ്ൻ സോൺ. വിലാസം നിരവധി നിർദ്ദേശങ്ങളുടെ വിവരണവുമായി പൊരുത്തപ്പെടുന്നുവെങ്കിൽ, അത് പൂർണ്ണമായും പൊരുത്തപ്പെടുന്ന ഒന്നിനോട് പ്രതികരിക്കും. പൊരുത്തങ്ങളൊന്നും ഇല്ലെങ്കിൽ, മുഖംമൂടിയുള്ള ഏറ്റവും നീളമുള്ള പേരായിരിക്കും ഉത്തരം. അല്ലെങ്കിൽ, പതിവ് എക്സ്പ്രഷൻ പൊരുത്തപ്പെടുത്തൽ നടത്തപ്പെടും. സാധാരണ പദപ്രയോഗങ്ങൾ ഉപയോഗിക്കുന്ന സെർവർ പേരുകൾ ടിൽഡിൽ (~) ആരംഭിക്കുന്നു.

ലൊക്കേഷൻ ബ്ലോക്കുകൾ

അടുത്ത വരിയിൽ നമുക്ക് ലൊക്കേഷൻ ബ്ലോക്ക് ഉണ്ടാകും. പ്രോസസ്സിംഗ് രീതി നിർണ്ണയിക്കാൻ ഇത് ആവശ്യമാണ് ചില അഭ്യർത്ഥനകൾ. ഉറവിടങ്ങൾ മറ്റേതെങ്കിലും ലൊക്കേഷൻ ബ്ലോക്കുകളുമായി പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ, പരാൻതീസിസിൽ വ്യക്തമാക്കിയ നിർദ്ദേശങ്ങൾ അവയ്ക്ക് ബാധകമാകും. ഈ ബ്ലോക്കുകളിൽ /doc/ പോലുള്ള ഒരു പാത്ത് ഉൾപ്പെട്ടേക്കാം. ഉറിയും ലൊക്കേഷനും തമ്മിൽ ഒരു സമ്പൂർണ്ണ പൊരുത്തം സ്ഥാപിക്കുന്നതിന്, = ചിഹ്നം ഉപയോഗിക്കുന്നു. ടിൽഡ് ഉപയോഗിക്കുന്നതിലൂടെ, നിങ്ങൾക്ക് സാധാരണ എക്സ്പ്രഷനുകൾ പൊരുത്തപ്പെടുത്താനാകും. ~ ഇട്ടുകൊണ്ട് നിങ്ങൾക്ക് കേസ് സെൻസിറ്റിവിറ്റി സജ്ജമാക്കാനും കഴിയും. നിങ്ങൾ ഒരു നക്ഷത്രചിഹ്നം ചേർത്താൽ, കേസ് പ്രശ്നമല്ല.

ഓർമ്മിക്കുക: അഭ്യർത്ഥന ലൊക്കേഷൻ ബ്ലോക്കുമായി പൂർണ്ണമായും പൊരുത്തപ്പെടുമ്പോൾ, അത് ഉപയോഗിക്കുകയും തിരയൽ നിർത്തുകയും ചെയ്യും. പൊരുത്തം അപൂർണ്ണമാകുമ്പോൾ, ലൊക്കേഷൻ നിർദ്ദേശങ്ങളുടെ പാരാമീറ്ററുകളുമായി URI താരതമ്യം ചെയ്യും. ബ്ലോക്ക് തിരഞ്ഞെടുക്കാൻ URI-യുമായി പൊരുത്തപ്പെടുന്ന ^~ ഉള്ള ഒരു ബ്ലോക്ക് ഉപയോഗിക്കുക. എങ്കിൽ ഈ ഓപ്ഷൻഉപയോഗിക്കരുത്, സെർവർ ഒപ്റ്റിമൽ പൊരുത്തം തിരഞ്ഞെടുക്കുകയും ഉപയോഗിച്ച് ഒരു തിരയൽ നടത്തുകയും ചെയ്യുന്നു പതിവ് ഭാവങ്ങൾ. അനുയോജ്യമായ ടെംപ്ലേറ്റുകളിൽ ഒന്ന് തിരഞ്ഞെടുക്കുന്നതിന് ഇത് ആവശ്യമാണ്. അനുയോജ്യമായ ഒരു പദപ്രയോഗം കണ്ടെത്തിയാൽ, അത് ഉപയോഗിക്കും. അല്ലെങ്കിൽ, മുമ്പത്തെ URI പൊരുത്തം പ്രയോഗിക്കും. എന്നിരുന്നാലും, Nginx പൂർണ്ണ മത്സരങ്ങളാണ് ഇഷ്ടപ്പെടുന്നതെന്ന് ഓർമ്മിക്കുക. അവ ഇല്ലെങ്കിൽ, അത് പതിവ് എക്സ്പ്രഷനുകൾക്കായി തിരയാൻ തുടങ്ങും, തുടർന്ന് URI വഴി. ^~ എന്ന ചിഹ്ന സംയോജനമാണ് തിരയൽ പാരിറ്റി വ്യക്തമാക്കുന്നത്.

try_files റൂൾ

ഫയലുകൾ പരിശോധിക്കാൻ കഴിയുന്ന വളരെ ഉപയോഗപ്രദമായ ഉപകരണമാണിത് നിർദ്ദിഷ്ട രീതിയിൽ. അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുന്നതിന് മാനദണ്ഡവുമായി പൊരുത്തപ്പെടുന്ന ആദ്യത്തേത് ഇത് ഉപയോഗിക്കുന്നു. നിങ്ങൾക്ക് ഉപയോഗിക്കാം അധിക ഓപ്ഷനുകൾസെർവർ അഭ്യർത്ഥനകൾ എങ്ങനെ നൽകുമെന്ന് വ്യക്തമാക്കാൻ. കോൺഫിഗറേറ്ററിന് ഈ ഡിഫോൾട്ട് ലൈൻ ഉണ്ട്:

try_files $uri $uri/ /index.html;

എന്താണ് ഇതിനർത്ഥം? ഒരു ലൊക്കേഷൻ ബ്ലോക്ക് നൽകുന്ന ഒരു അഭ്യർത്ഥന വന്നാൽ, സെർവർ ആദ്യം uri ഒരു ഫയലായി കണക്കാക്കാൻ ശ്രമിക്കും. $uri വേരിയബിൾ ആണ് ഇത് നൽകുന്നത്. പൊരുത്തങ്ങൾ ഇല്ലെങ്കിൽ, ഉറി ഒരു ഡയറക്ടറിയായി കണക്കാക്കും. ഒരു ട്രെയിലിംഗ് സ്ലാഷ് ചേർത്തുകൊണ്ട് നിങ്ങൾക്ക് അതിന്റെ അസ്തിത്വം പരിശോധിക്കാം: $uri/. ഫയലോ ഡയറക്ടറിയോ കണ്ടെത്താത്ത സാഹചര്യങ്ങളുണ്ട്. ഈ സാഹചര്യത്തിൽ, സ്ഥിരസ്ഥിതി ഫയൽ ലോഡ് ചെയ്യും - index.html. try_files റൂൾ അവസാന പാരാമീറ്റർ ഒരു ഫാൾബാക്ക് ആയി ഉപയോഗിക്കുന്നു. അതുകൊണ്ടാണ് ഈ ഫയൽസിസ്റ്റത്തിൽ ആയിരിക്കണം. എന്നിരുന്നാലും, പൊരുത്തങ്ങളൊന്നും കണ്ടെത്തിയില്ലെങ്കിൽ, Nginx ഒരു പിശക് പേജ് നൽകും. ഇത് സജ്ജീകരിക്കാൻ, = എന്നതും പിശക് കോഡും നൽകുക:

അധിക ഓപ്ഷനുകൾ

നിങ്ങൾ അപരനാമ നിയമം പ്രയോഗിക്കുകയാണെങ്കിൽ, റൂട്ട് ഡയറക്‌ടറിക്ക് പുറത്ത് ലൊക്കേഷൻ ബ്ലോക്കിന്റെ പേജുകൾ നിങ്ങൾക്ക് നൽകാനാകും, ഉദാഹരണത്തിന്. ഡോക്കിൽ നിന്നുള്ള ഫയലുകൾ ആവശ്യമുള്ളപ്പോൾ, അവ /usr/share/doc/ എന്നതിൽ നിന്ന് അഭ്യർത്ഥിക്കും. കൂടാതെ, നിർദ്ദിഷ്‌ട ലൊക്കേഷൻ ഡയറക്‌ടീവിനായി സെർവർ ഡയറക്‌ടറികൾ ലിസ്റ്റുചെയ്യാൻ ഓട്ടോഇൻഡക്‌സ് ഓൺ റൂൾ ആരംഭിക്കുന്നു. നിങ്ങൾ നിരസിക്കുകയും ലൈനുകൾ അനുവദിക്കുകയും ചെയ്യുകയാണെങ്കിൽ, നിങ്ങൾക്ക് ഡയറക്ടറികളിലേക്കുള്ള ആക്സസ് മാറ്റാൻ കഴിയും.

ഒരു ഉപസംഹാരമെന്ന നിലയിൽ, Nginx വളരെ ശക്തമാണെന്ന് പറയേണ്ടതാണ് മൾട്ടിഫങ്ഷണൽ ഉപകരണം. എന്നാൽ അതിന്റെ പ്രവർത്തനത്തിന്റെ തത്വം നന്നായി മനസ്സിലാക്കാൻ, അത് സമയവും പരിശ്രമവും എടുക്കും. കോൺഫിഗറേഷനുകൾ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് നിങ്ങൾ മനസ്സിലാക്കുകയാണെങ്കിൽ, പ്രോഗ്രാമിന്റെ എല്ലാ സവിശേഷതകളും നിങ്ങൾക്ക് പൂർണ്ണമായി ആസ്വദിക്കാനാകും.