ശരിയായ nginx കോൺഫിഗറേഷൻ. വെബ് സെർവർ Nginx, apache - അത് എന്താണ്, ഈ കോമ്പിനേഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നു. അന്നത്തെ നായകനെ കുറിച്ച്

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

Nginx? ഉദ്ദേശ്യം, സവിശേഷതകൾ, ക്രമീകരണ ഓപ്‌ഷനുകൾ - ഓരോ വെബ് ഡെവലപ്പർക്കും അവരുടെ ജോലി പരിശോധിക്കുന്നതിന് പരിചിതമായ കാര്യങ്ങൾ ഇവയാണ്.

nginx നെ കുറിച്ച് ഒരു വാക്ക് പറയാം

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

ആരംഭം, റീബൂട്ട്, ലോഗുകൾ

ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ എക്സിക്യൂട്ടബിൾ ഫയൽ പ്രവർത്തിക്കേണ്ടതുണ്ട്. nginx സെർവർ കോൺഫിഗർ ചെയ്യുന്നത് അത് പ്രവർത്തിക്കുമ്പോൾ മാത്രമേ സാധ്യമാകൂ. വിളിച്ച് നിയന്ത്രിച്ചു എക്സിക്യൂട്ടബിൾ ഫയൽ-s പാരാമീറ്റർ ഉപയോഗിച്ച്. ഇത് ചെയ്യുന്നതിന്, ഇനിപ്പറയുന്ന നൊട്ടേഷൻ ഉപയോഗിക്കുക:

nginx -s സിഗ്നൽ

ഈ സാഹചര്യത്തിൽ, നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന കമാൻഡുകൾ മാറ്റിസ്ഥാപിക്കാം (ഉപകരണം സമാരംഭിച്ച ഉപയോക്താവിൽ നിന്ന് വന്നിരിക്കണം):

  1. നിർത്തുക. ജോലി വേഗത്തിൽ അടച്ചുപൂട്ടാൻ ഉപയോഗിക്കുന്നു.
  2. വീണ്ടും ലോഡുചെയ്യുക. റീബൂട്ട് ചെയ്യുന്നതിന് കമാൻഡ് ആവശ്യമാണ് കോൺഫിഗറേഷൻ ഫയൽ. ഫയൽ പ്രവർത്തിക്കുമ്പോൾ മാറ്റങ്ങളൊന്നും പ്രയോഗിക്കില്ല എന്നതാണ് കാര്യം. അവ പ്രാബല്യത്തിൽ വരുന്നതിന്, ഒരു റീബൂട്ട് ആവശ്യമാണ്. ഈ സിഗ്നൽ ലഭിച്ചാലുടൻ, കോൺഫിഗറേഷൻ ഫയലിന്റെ വാക്യഘടനയുടെ കൃത്യത പരിശോധിക്കാൻ പ്രധാന പ്രക്രിയ ആരംഭിക്കുകയും നിർദ്ദേശങ്ങൾ അവിടെ പ്രയോഗിക്കാൻ ശ്രമിക്കുകയും ചെയ്യും. ഇത് പരാജയപ്പെടുകയാണെങ്കിൽ, അത് മാറ്റങ്ങൾ തിരികെ വരുത്തുകയും പഴയ ക്രമീകരണങ്ങളിൽ പ്രവർത്തിക്കുകയും ചെയ്യും. എല്ലാം വിജയകരമായി സംഭവിച്ചാൽ, പുതിയ തൊഴിലാളി പ്രക്രിയകൾ സമാരംഭിക്കും, പഴയവ അവസാനിപ്പിക്കാൻ ഒരു അഭ്യർത്ഥന അയയ്ക്കും.
  3. ഉപേക്ഷിക്കുക. ജോലി സുഗമമായി പൂർത്തിയാക്കാൻ ഉപയോഗിക്കുന്നു. നിലവിലെ അഭ്യർത്ഥനകൾ സേവനം പൂർത്തിയാകുന്നതുവരെ നിങ്ങൾ കാത്തിരിക്കേണ്ടി വന്നാൽ ഉപയോഗിക്കുന്നു.
  4. വീണ്ടും തുറക്കുക. ലോഗ് ഫയലുകൾ അടച്ച് തുറക്കുക.

യൂട്ടിലിറ്റികൾ ഉപയോഗിക്കുന്നു

Unix ടൂളുകൾ ഉപയോഗിച്ചും പ്രക്രിയകൾ ക്രമീകരിക്കാവുന്നതാണ് (കിൽ യൂട്ടിലിറ്റി ഒരു ഉദാഹരണമായി പരിഗണിക്കും). ഡാറ്റ ഉപയോഗിച്ച് നേരിട്ട് പ്രോസസ്സിലേക്ക് ഒരു സിഗ്നൽ അയയ്ക്കാൻ അവർ സാധാരണയായി ഒരു സംവിധാനം ഉപയോഗിക്കുന്നു. ഐഡി ഉപയോഗിച്ചാണ് അവ ലിങ്ക് ചെയ്തിരിക്കുന്നത്. ഈ ഡാറ്റ nginx.pid ഫയലിൽ സംഭരിച്ചിരിക്കുന്നു. പ്രോസസ്സ് നമ്പർ 134-ൽ ഞങ്ങൾക്ക് താൽപ്പര്യമുണ്ടെന്ന് പറയാം. തുടർന്ന് സുഗമമായ പൂർത്തീകരണത്തിന് ഞങ്ങൾ ഇനിപ്പറയുന്ന വിവരങ്ങൾ അയയ്ക്കേണ്ടതുണ്ട്:

കൊല്ലുക -കൾ 1628 വിട്ടു

എല്ലാവരുടെയും ഒരു ലിസ്റ്റ് കാണാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നുവെന്ന് പറയാം പ്രവർത്തിപ്പിക്കുന്ന ഫയലുകൾ. ഇതിനായി ഞങ്ങൾ ps യൂട്ടിലിറ്റി ഉപയോഗിക്കുന്നു. കമാൻഡ് ഇതുപോലെ കാണപ്പെടും:

ps -ax | grep nginx

അതായത്, നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, അധിക ഉപകരണങ്ങൾ ഉപയോഗിക്കുമ്പോൾ, അത് ഉപയോഗിക്കുന്നതായി സൂചിപ്പിച്ചിരിക്കുന്നു. ഇപ്പോൾ nginx കോൺഫിഗറേഷൻ എങ്ങനെ ചെയ്യപ്പെടുന്നു എന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാം.

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

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

സ്റ്റാറ്റിക് ഉള്ളടക്കം നൽകുന്നു

ഇത് ഏറ്റവും കൂടുതൽ ഒന്നാണ് പ്രധാനപ്പെട്ട ജോലികൾ, ഇത് nginx കോൺഫിഗറേഷന് മുമ്പായി വരുന്നു. സ്റ്റാറ്റിസ്റ്റിക്കൽ ഉള്ളടക്കം വിതരണം ചെയ്യുന്നതിലൂടെ ഞങ്ങൾ അർത്ഥമാക്കുന്നത് ചിത്രങ്ങളും HTML പേജുകളുമാണ് (ഡൈനാമിക് അല്ല). നമുക്ക് ഒരു nix nginx ക്ലസ്റ്റർ സജ്ജീകരിക്കാനുള്ള ഒറ്റത്തവണ ജോലി ആവശ്യമാണെന്ന് പറയാം. ചെയ്യാൻ ബുദ്ധിമുട്ടുണ്ടോ? ഇല്ല, നമുക്ക് ഒരു ഉദാഹരണം നോക്കാം. ഇത് ആരംഭിക്കുന്നതിന് മുമ്പ്, ചുമതലയുടെ വ്യവസ്ഥകൾ വിശദീകരിക്കേണ്ടത് ആവശ്യമാണ്. അതിനാൽ, അഭ്യർത്ഥനകളെ ആശ്രയിച്ച്, ഫയലുകൾ വ്യത്യസ്ത പ്രാദേശിക ഡയറക്ടറികളിൽ നിന്ന് വരും. അതിനാൽ, /data/www ൽ ഞങ്ങൾക്ക് HTML പ്രമാണങ്ങളുണ്ട്. കൂടാതെ /data/images ഡയറക്ടറിയിൽ ഇമേജുകൾ അടങ്ങിയിരിക്കുന്നു. ഈ സാഹചര്യത്തിൽ nginx-ന്റെ ഒപ്റ്റിമൽ കോൺഫിഗറേഷന് കോൺഫിഗറേഷൻ ഫയൽ എഡിറ്റ് ചെയ്യേണ്ടതുണ്ട്, അതിൽ നിങ്ങൾ http-നുള്ളിൽ സെർവർ ബ്ലോക്ക് കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട്. പിന്തുണയ്‌ക്കായി രണ്ട് സ്ഥലങ്ങളും ഉപയോഗിക്കും.

നടപ്പിലാക്കൽ: സെർവർ

അതിനാൽ, ആദ്യം നമ്മൾ ഡയറക്ടറികൾ സ്വയം സൃഷ്ടിക്കുകയും അവയിൽ ആവശ്യമായ വിപുലീകരണങ്ങളുള്ള ഫയലുകൾ സ്ഥാപിക്കുകയും വേണം (നിങ്ങൾ html-ലേക്ക് ഉള്ളടക്കം ചേർക്കേണ്ടതുണ്ട്). തുടർന്ന് കോൺഫിഗറേഷൻ ഫയൽ തുറക്കുക. സ്ഥിരസ്ഥിതിയായി, അതിൽ ഇതിനകം തന്നെ നിരവധി സെർവർ ബ്ലോക്കുകൾ അടങ്ങിയിരിക്കുന്നു, അവ കൂടുതലും അഭിപ്രായപ്പെടുന്നു. ഒപ്റ്റിമൽ ഫലങ്ങൾ നേടുന്നതിന്, എല്ലാ ഡിഫോൾട്ട് ഘടകങ്ങൾക്കും ഈ പ്രക്രിയ ചെയ്യണം. തുടർന്ന് ഇനിപ്പറയുന്ന കോഡ് ഉപയോഗിച്ച് ഞങ്ങൾ ഒരു പുതിയ സെർവർ ബ്ലോക്ക് ചേർക്കുന്നു:

കോൺഫിഗറേഷൻ ഫയലിന് അത്തരം നിരവധി ബ്ലോക്കുകളിൽ പ്രവർത്തിക്കാൻ കഴിയും. എന്നാൽ ഡാറ്റ ലഭിക്കുന്ന പേരുകളിലും പോർട്ടുകളിലും അവ വ്യത്യാസപ്പെട്ടിരിക്കണം.

നടപ്പിലാക്കൽ: സ്ഥലം

സെർവറിനുള്ളിൽ നിർവചിച്ചിരിക്കുന്നത്:

ലഭിച്ച ഡാറ്റ താരതമ്യം ചെയ്യുന്നതിനും പ്രോസസ്സ് ചെയ്ത അഭ്യർത്ഥനയിൽ നിന്ന് അത്തരമൊരു വിലാസം ഇവിടെയുണ്ടോ എന്ന് നോക്കുന്നതിനും "/" ചിഹ്നത്തിന്റെ സാന്നിധ്യം ആവശ്യമാണ്. പ്രശ്‌നങ്ങളൊന്നുമില്ലെങ്കിൽ, ഈ ലോക്കൽ സിസ്റ്റത്തിൽ സ്ഥിതിചെയ്യുന്ന ആവശ്യമായ ഫയലിലേക്കുള്ള പാത /ഡാറ്റ/www വ്യക്തമാക്കുക. നിരവധി ബ്ലോക്കുകളുള്ള ഒരു പൊരുത്തമുണ്ടെങ്കിൽ, ഏറ്റവും ദൈർഘ്യമേറിയ പ്രിഫിക്സുള്ള ഒന്ന് തിരഞ്ഞെടുത്തു. നൽകിയിരിക്കുന്ന ഉദാഹരണത്തിൽ, അതിന്റെ നീളം ഒന്നിന് തുല്യമാണ്, അതായത്, "എതിരാളികൾ" ഇല്ലെങ്കിൽ അത് പ്രത്യേകമായി ഉപയോഗിക്കും. ഇനി നമുക്ക് അത് മെച്ചപ്പെടുത്താം:

സ്ഥാനം /ചിത്രങ്ങൾ/ (

ഞങ്ങൾ ചിത്രങ്ങൾക്കായി തിരയുകയാണോ എന്ന് നിങ്ങൾക്ക് എങ്ങനെ പറയാൻ കഴിയും? ഇപ്പോൾ നമുക്ക് മുമ്പ് നിർമ്മിച്ച എല്ലാ സംഭവവികാസങ്ങളും സംയോജിപ്പിക്കാം, ഇപ്പോൾ കോൺഫിഗറേഷൻ ഇതുപോലെ കാണപ്പെടുന്നു:

സ്ഥാനം /ചിത്രങ്ങൾ/ (

ഇതൊരു വർക്കിംഗ് ഓപ്ഷനാണ്, ഇത് സ്റ്റാൻഡേർഡാണ്. നിങ്ങൾ വിലാസത്തിലേക്ക് പോയാൽ ഈ സെർവർ ഒരു പ്രശ്നവുമില്ലാതെ ലോക്കൽ കമ്പ്യൂട്ടറിൽ ആക്സസ് ചെയ്യാൻ കഴിയും: http://localhost/. ഇതെല്ലാം എങ്ങനെ പ്രവർത്തിക്കും?

ഉദാഹരണം എങ്ങനെ പ്രവർത്തിക്കുന്നു

അതിനാൽ, / ഇമേജുകൾ എന്ന് ആരംഭിക്കുന്ന അഭ്യർത്ഥനകൾ വരുമ്പോൾ, സെർവർ അനുബന്ധ ഡയറക്ടറിയിൽ നിന്ന് ഉപയോക്താവിന് ഫയലുകൾ അയയ്ക്കും. അത് ഇല്ലെങ്കിൽ, 404 പിശക് സൂചിപ്പിക്കുന്ന വിവരങ്ങൾ കൈമാറും. ഒരു ലോക്കൽ കമ്പ്യൂട്ടറിൽ nginx കോൺഫിഗർ ചെയ്‌തിട്ടുണ്ടെങ്കിൽ, http://localhost/images/example.png അഭ്യർത്ഥിക്കുമ്പോൾ, /data/images/ എന്ന സ്ഥാനമുള്ള ഒരു ഫയൽ നമുക്ക് ലഭിക്കും. ഉദാഹരണം.png. നിങ്ങൾ ഒരു പ്രതീകം "/" വ്യക്തമാക്കുകയാണെങ്കിൽ, തിരയൽ /ഡാറ്റ/www ഡയറക്‌ടറിയിൽ നടത്തും. എന്നാൽ ഞങ്ങൾ കോൺഫിഗറേഷൻ മാത്രം മാറ്റി. ഇത് പ്രവർത്തിക്കാൻ തുടങ്ങുന്നതിന്, അത് റീബൂട്ട് ചെയ്യേണ്ടതുണ്ട്. ഇത് ചെയ്യുന്നതിന്, nginx -s റീലോഡ് കമാൻഡ് ഉപയോഗിക്കുക. എപ്പോൾ കേസിൽ സാധാരണ പ്രവർത്തനംസാധ്യമല്ല, തുടർന്ന് നിങ്ങൾക്ക് /usr/local/nginx/logs ഡയറക്‌ടീവിൽ സ്ഥിതി ചെയ്യുന്ന error.log, access.log ഫയലുകളിൽ പ്രശ്നത്തിന്റെ കാരണം അന്വേഷിക്കാം.

ഒരു ലളിതമായ പ്രോക്സി സെർവർ സൃഷ്ടിക്കുന്നു

nginx - സെറ്റപ്പിനെക്കുറിച്ച് ഒരാൾക്ക് പറയാൻ കഴിയും ഈ വസ്തുവിന്റെപതിവ് ഉപയോഗങ്ങളിൽ ഒന്നാണ് (കൂടാതെ, വളരെ എളുപ്പമാണ്). അഭ്യർത്ഥനകൾ സ്വീകരിക്കുകയും അവ ആവശ്യമായ സൈറ്റുകളിലേക്ക് റീഡയറക്‌ടുചെയ്യുകയും ചെയ്യുന്ന ഒരു സെർവറിന്റെ തത്വം ഇത് ഉപയോഗിക്കുന്നു. ഇതിനുശേഷം, അവരിൽ നിന്ന് ഒരു പ്രതികരണം പ്രതീക്ഷിക്കുന്നു, അത് ചുമതല ഏൽപ്പിച്ച ആളിലേക്ക് അവരെ നയിക്കുന്നു. അതിനാൽ അടിസ്ഥാന പോയിന്റ് സൃഷ്ടിക്കുന്നതിനുള്ള ഒരു ഉദാഹരണം നോക്കാം. ഇത് ഉപയോക്തൃ അഭ്യർത്ഥനകൾ കൈകാര്യം ചെയ്യുകയും അവർക്ക് പ്രാദേശിക ഡയറക്ടറിയിൽ നിന്നുള്ള ചിത്രങ്ങൾ നൽകുകയും ചെയ്യും. അതിനാൽ, http ബ്ലോക്കിലേക്ക് ഞങ്ങൾ ഇനിപ്പറയുന്ന ഉള്ളടക്കമുള്ള മറ്റൊരു സെർവർ ചേർക്കുന്നു:

ഇപ്പോൾ ഞാൻ നിങ്ങൾക്കായി ഇത് മനസ്സിലാക്കട്ടെ: ഒരു ലളിതമായ സെർവർ സൃഷ്ടിക്കുന്നു. അത് കേൾക്കും, നിങ്ങൾ കേൾക്കുക എന്ന് വ്യക്തമാക്കിയില്ലെങ്കിൽ, സെർവർ 80-ൽ പ്രവർത്തിക്കും. /data/up1 ഡയറക്‌ടറിയിലേക്ക് നിർദ്ദേശിച്ചിരിക്കുന്ന ലോക്കൽ ഫയൽ സിസ്റ്റത്തിനുള്ളിലെ എല്ലാ അഭ്യർത്ഥനകളും പ്രദർശിപ്പിക്കും (തീർച്ചയായും, ഇതിന് മുമ്പ് ഇത് സൃഷ്ടിക്കേണ്ടതുണ്ട്). അത് പരിശോധിക്കാൻ, നിങ്ങൾ index.html ഫയൽ അവിടെ സ്ഥാപിക്കേണ്ടതുണ്ട്. സെർവർ സന്ദർഭത്തിൽ റൂട്ട് ഡയറക്‌ടീവ് സ്ഥാപിക്കുന്നതിലൂടെ, ഏത് സാഹചര്യത്തിലും നമുക്ക് ലൊക്കേഷൻ ഉപയോഗിക്കാം (ഇത് ആക്‌സസ് നിയന്ത്രണങ്ങൾ നീക്കം ചെയ്യുന്നതിനാൽ). ഇപ്പോൾ ഞങ്ങൾ ഒരു പ്രോക്സി സെർവർ സൃഷ്ടിക്കാൻ പ്രവർത്തിക്കുന്നു. ഇത് പ്രവർത്തിക്കുന്നതിന്, ഞങ്ങൾക്ക് പ്രോക്‌സി_പാസ് നിർദ്ദേശം ആവശ്യമാണ്, അതിനായി പ്രോട്ടോക്കോൾ, പേര്, ഒബ്‌ജക്റ്റ് പോർട്ട് എന്നിവ പാരാമീറ്ററുകളായി വ്യക്തമാക്കും (എങ്കിൽ പ്രാദേശിക കണക്ഷൻഇത് http://localhost:8080) പോലെ കാണപ്പെടും. നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന ഫലം ലഭിക്കും:

proxy_pass http://localhost:8080;

സ്ഥാനം /ചിത്രങ്ങൾ/ (

നിങ്ങൾ കോഡ് നോക്കുകയും അത് വിശകലനം ചെയ്യുകയും ചെയ്താൽ, രണ്ടാമത്തെ ലൊക്കേഷൻ ബ്ലോക്ക് മാറ്റിയതായി നിങ്ങൾ ശ്രദ്ധിച്ചേക്കാം. അതിനാൽ, ഈ സാഹചര്യത്തിൽ ഇത് സാധാരണ ഇമേജ് വിപുലീകരണങ്ങളുമായി പ്രവർത്തിക്കാൻ കഴിയും. ഇത് ഇതുപോലെ അല്പം വ്യത്യസ്തമായി പ്രദർശിപ്പിക്കാം:

സ്ഥാനം ~ \.(gif|jpg|png)$ (

റൂട്ട് / ഡാറ്റ / ഇമേജുകൾ;

അവസാന പ്രോക്സി സെർവർ കോൺഫിഗറേഷൻ ഇതുപോലെ കാണപ്പെടുന്നു:

proxy_pass http://localhost:8080/;

സ്ഥാനം ~ \.(gif|jpg|png)$ (

റൂട്ട് / ഡാറ്റ / ഇമേജുകൾ;

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

2004 മുതൽ പൊതുവായി ലഭ്യമായ ഒരു വെബ് സെർവറും ഇമെയിൽ പ്രോക്സിയുമാണ് Nginx. പ്രോജക്റ്റിന്റെ വികസനം 2002 ൽ ആരംഭിച്ചു; റഷ്യൻ ഭാഷയിൽ പേര് എഞ്ചിൻ-എക്സ് എന്ന് തോന്നുന്നു. പ്രശസ്ത പ്രോഗ്രാമർ ഇഗോർ സിസോവിന്റെ സൃഷ്ടിയായതിനാൽ, Nginx യഥാർത്ഥത്തിൽ റാംബ്ലർ കമ്പനിയെ ഉദ്ദേശിച്ചുള്ളതാണ്. യുണിക്സ് പോലുള്ള ഗ്രൂപ്പിൽ പെടുന്ന ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾക്കായി ഇത് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു. OpenBSD, FreeBSD, Linux, Mac OS X, Solaris എന്നിവയിൽ അസംബ്ലി വിജയകരമായി പരീക്ഷിച്ചു. ഓൺ മൈക്രോസോഫ്റ്റ് പ്ലാറ്റ്ഫോംബൈനറി അസംബ്ലി പതിപ്പ് 0.7.52 ന്റെ വരവോടെ Windows Nginx പ്രവർത്തിക്കാൻ തുടങ്ങി.

2011 മാർച്ചിലെ സ്ഥിതിവിവരക്കണക്കുകൾ സൂചിപ്പിക്കുന്നത് Nginx നൽകുന്ന സൈറ്റുകളുടെ എണ്ണം ഇതിനകം 22 ദശലക്ഷം കടന്നിരിക്കുന്നു എന്നാണ്. ഇന്ന്, റാംബ്ലർ, ബെഗൺ, യാൻഡെക്സ്, സോഴ്സ്ഫോർജ്.നെറ്റ്, വേർഡ്പ്രസ്സ്.കോം, vkontakte.ru തുടങ്ങിയ അറിയപ്പെടുന്ന പ്രോജക്റ്റുകൾ Nginx ഉപയോഗിക്കുന്നു. lighttpd-യ്‌ക്കൊപ്പം, മറ്റൊരു വെബ് സെർവറിന്റെ അധികാരത്തിന് കീഴിൽ പ്രവർത്തിക്കുന്ന ഒരു "അസുഖകരമായ" വെബ് ആപ്ലിക്കേഷൻ സൃഷ്ടിച്ച സ്റ്റാറ്റിക് ഉള്ളടക്കം നൽകുന്നതിന് Nginx ഉപയോഗിക്കുന്നു.
എന്നാൽ ഞങ്ങൾ കാട്ടിലേക്ക് ആഴ്ന്നിറങ്ങും മുമ്പ് പ്രവർത്തന സവിശേഷതകൾ Nginx - ഒരു വെബ് സെർവർ പൊതുവെ എന്താണെന്നും പ്രത്യേകിച്ച് ഒരു പ്രോക്സി സെർവർ എന്താണെന്നും ഓർമ്മിക്കുന്നത് ഉപയോഗപ്രദമാകും.

വെബ് സെർവറും പ്രോക്സി സെർവറും

വെബ് സെർവർവെബ് ബ്രൗസറുകളിൽ നിന്നും മറ്റ് ക്ലയന്റുകളിൽ നിന്നും HTTP അഭ്യർത്ഥനകൾ സ്വീകരിക്കുകയും അവയ്ക്ക് HTTP പ്രതികരണങ്ങൾ നൽകുകയും ചെയ്യുന്ന ഒരു സെർവറാണ്. രണ്ടാമത്തേത് സാധാരണയായി പ്രതിനിധീകരിക്കുന്നു HTML പേജ്, മീഡിയ സ്ട്രീം, ചിത്രം, ഫയൽ, മറ്റ് ഡാറ്റ. ഒരു വെബ് സെർവർ എന്നാണ് മനസ്സിലാക്കുന്നത് സോഫ്റ്റ്വെയർ, വെബ് സെർവർ ഫംഗ്‌ഷനുകൾ, ഹാർഡ്‌വെയർ എന്നിവ നിർവഹിക്കുന്നു. HTTP പ്രോട്ടോക്കോൾ വഴിയാണ് ഡാറ്റയുടെയും അഭ്യർത്ഥിച്ച വിവരങ്ങളുടെയും കൈമാറ്റം നടത്തുന്നത്.

പട്ടികയിൽ ചേർക്കുക അധിക പ്രവർത്തനങ്ങൾവെബ് സെർവറുകളിൽ ഇവ ഉൾപ്പെടുന്നു: ഉപയോക്താക്കളുടെ അംഗീകാരവും പ്രാമാണീകരണവും, ഉറവിടങ്ങളിലേക്കുള്ള അവരുടെ ആക്‌സസ് ലോഗ് ചെയ്യൽ, ക്ലയന്റുകളുമായുള്ള സുരക്ഷിത ആശയവിനിമയത്തിനുള്ള HTTPS പിന്തുണയും മറ്റുള്ളവയും. Unix പോലുള്ള ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിൽ ഏറ്റവും സാധാരണയായി ഉപയോഗിക്കുന്ന വെബ് സെർവർ Apache ആണ്. Nginx നിലവിൽ ക്ലയന്റ് മുൻഗണനകളുടെ പട്ടികയിൽ മൂന്നാം സ്ഥാനത്താണ്.

പ്രോക്സി സെര്വര്തിരയൽ ചോദ്യങ്ങൾ പരിഹരിക്കാൻ ഉപഭോക്താക്കളെ അനുവദിക്കുന്നു നെറ്റ്വർക്ക് സേവനങ്ങൾഒരു പരോക്ഷ രൂപത്തിൽ. അതായത്, ക്ലയന്റ് അഭ്യർത്ഥനകൾ മറ്റ് സെർവറുകളിലേക്ക് റീഡയറക്‌ടുചെയ്യുന്നതിൽ സവിശേഷമായ ഒരു സെർവറാണിത്. ഒരു പ്രോക്‌സി സെർവറിലേക്ക് കണക്‌റ്റ് ചെയ്‌ത് മറ്റൊരു സെർവറിൽ സ്ഥിതിചെയ്യുന്ന ഒരു ഉറവിടം അഭ്യർത്ഥിക്കുന്നതിലൂടെ, ക്ലയന്റിന് അജ്ഞാതത്വം നിലനിർത്താനും നെറ്റ്‌വർക്ക് ആക്രമണങ്ങളിൽ നിന്ന് കമ്പ്യൂട്ടറിനെ പരിരക്ഷിക്കാനും അവസരമുണ്ട്. പ്രോക്‌സി സെർവർ ക്ലയന്റിന് അഭ്യർത്ഥിച്ച ഡാറ്റ അതിന്റെ സ്വന്തം കാഷെയിൽ നിന്നോ (ഒരെണ്ണം ഉണ്ടെങ്കിൽ) നിന്നോ അല്ലെങ്കിൽ ലഭിച്ചതിൽ നിന്നോ നൽകുന്നു നിർദ്ദിഷ്ട സെർവർ. IN ചില കേസുകളിൽ(മുകളിലുള്ള ലക്ഷ്യങ്ങൾ കൈവരിക്കുന്നതിന്), ക്ലയന്റ് അഭ്യർത്ഥന പോലെ സെർവർ പ്രതികരണം പ്രോക്സി സെർവറിന് പരിഷ്കരിക്കാനാകും.

ഏറ്റവും ലളിതമായ പ്രോക്സി സെർവർ നെറ്റ്‌വർക്ക് അഡ്രസ് ട്രാൻസ്ലേറ്റർ അല്ലെങ്കിൽ NAT ആണ്. 2000-ൽ, വിൻഡോസ് വിതരണത്തിൽ പ്രോക്സി NAT നിർമ്മിച്ചു. പ്രോക്സി സെർവറുകൾക്ക്, ഏതൊരു പ്രതിഭാസത്തെയും പോലെ, നാണയത്തിന്റെ രണ്ട് വശങ്ങളുണ്ട്, അതായത്, അവ നല്ലതും ചീത്തയും ഉപയോഗിക്കാൻ കഴിയും. ഉദാഹരണത്തിന്, അവരുടെ സഹായത്തോടെ, ഓൺലൈനിൽ അവരുടെ അവിഹിത പ്രവർത്തനങ്ങൾക്ക് ഉപരോധം ഭയക്കുന്നവർ അവരുടെ ഐപി വിലാസങ്ങൾ മറയ്ക്കുന്നു...

Nginx പ്രവർത്തന ശ്രേണി:

  • ഇൻഡെക്സ് ഫയലുകളുടെ സെർവർ മെയിന്റനൻസ്, സ്റ്റാറ്റിക് അന്വേഷണങ്ങൾ, തുറന്ന ഫയലുകളുടെ കാഷെ ഡിസ്ക്രിപ്റ്ററുകൾ സൃഷ്ടിക്കൽ, ഫയലുകളുടെ ലിസ്റ്റ്;
  • ത്വരിതപ്പെടുത്തിയ പ്രോക്സിയിംഗ്, പ്രാഥമിക ലോഡ് വിതരണം, തെറ്റ് സഹിഷ്ണുത;
  • ത്വരിതപ്പെടുത്തിയ പ്രോക്സിയിംഗും FastCGI സമയത്തും കാഷിംഗ് പിന്തുണ;
  • FastCGI (ത്വരിതപ്പെടുത്തിയ), മെംകാഷ്ഡ് സെർവറുകൾക്കുള്ള പിന്തുണ;
  • മോഡുലാരിറ്റി, ഫിൽട്ടറുകൾ, റെസ്യൂമിംഗ് (ബൈറ്റ്-റേഞ്ചുകൾ), കംപ്രഷൻ (ജിസിപ്പ്) എന്നിവയുൾപ്പെടെ;
  • HTTP പ്രാമാണീകരണം, ചങ്ക് ചെയ്ത പ്രതികരണങ്ങൾ, SSI ഫിൽട്ടർ;
  • FastCGI അല്ലെങ്കിൽ SSI ഫിൽട്ടറിലെ ഒരു പ്രോക്സി വഴി പ്രോസസ്സ് ചെയ്ത പേജിലെ നിരവധി സബ്ക്വറികളുടെ സമാന്തര നിർവ്വഹണം;
  • StartTLS, SSL പിന്തുണ;
  • ബിൽറ്റ്-ഇൻ പേൾ പിന്തുണയ്ക്കാനുള്ള കഴിവ്;
  • ലളിതമായ പ്രാമാണീകരണം (ഉപയോക്തൃ/പാസ്, ലോഗിൻ);
  • ഒരു ബാഹ്യ പ്രാമാണീകരണ സെർവർ (HTTP) ഉപയോഗിച്ച് IMAP/POP3 ബാക്കെൻഡിലേക്കുള്ള ഉപയോക്താവിന്റെ സെർവർ റീഡയറക്ഷൻ (IMAP/POP3 പ്രോക്സി).

ഈ പദാവലി പരിചയമില്ലാത്തവർക്ക്, Nginx പ്രവർത്തനത്തിന്റെ വിവരണം വളരെ അവ്യക്തമായി തോന്നിയേക്കാം. എന്നാൽ വഴികൾ വരുമ്പോൾ പ്രത്യേക ഉപയോഗംഈ വെബ് സെർവർ - ഇത് ക്രമേണ ചിതറാൻ തുടങ്ങും.

വാസ്തുവിദ്യയും കോൺഫിഗറേഷനും

Nginx-ലെ വർക്കർ പ്രോസസ്സുകൾ ഒരേസമയം ഒന്നിലധികം കണക്ഷനുകൾ നൽകുന്നു, അവർക്ക് OS (ഓപ്പറേറ്റിംഗ് സിസ്റ്റം) epoll (Linux), തിരഞ്ഞെടുത്ത് kqueue (FreeBSD) കോളുകൾ നൽകുന്നു. ക്ലയന്റിൽ നിന്ന് ലഭിച്ച ഡാറ്റ ഒരു സ്റ്റേറ്റ് മെഷീൻ ഉപയോഗിച്ച് പാഴ്‌സ് ചെയ്യുന്നു. കോൺഫിഗറേഷൻ വ്യക്തമാക്കിയ മൊഡ്യൂളുകളുടെ ഒരു ശൃംഖല ഉപയോഗിച്ചാണ് പാഴ്‌സ് ചെയ്‌ത അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുന്നത്. ക്ലയന്റിനോടുള്ള പ്രതികരണം ബഫറുകളിൽ ജനറേറ്റുചെയ്യുന്നു, അത് ഫയലിന്റെ ഒരു വിഭാഗത്തിലേക്ക് ചൂണ്ടിക്കാണിക്കാനോ മെമ്മറിയിൽ ഡാറ്റ സംഭരിക്കാനോ കഴിയും. ക്ലയന്റിലേക്കുള്ള ഡാറ്റ കൈമാറ്റത്തിന്റെ ക്രമം നിർണ്ണയിക്കുന്നത് ബഫറുകൾ ഗ്രൂപ്പുചെയ്‌തിരിക്കുന്ന ശൃംഖലകളാണ്.

ഘടനാപരമായി, HTTP ആണ് Nginx സെർവർവെർച്വൽ സെർവറുകളായി തിരിച്ചിരിക്കുന്നു, അവ ലൊക്കേഷനായി തിരിച്ചിരിക്കുന്നു. കണക്ഷനുകൾ സ്വീകരിക്കുന്നതിനുള്ള പോർട്ടുകളും വിലാസങ്ങളും ഉപയോഗിച്ച് ഒരു വെർച്വൽ സെർവർ അല്ലെങ്കിൽ നിർദ്ദേശം വ്യക്തമാക്കാൻ കഴിയും. ലൊക്കേഷനായി, നിങ്ങൾക്ക് കൃത്യമായ URI, ഒരു URI-യുടെ ഭാഗം അല്ലെങ്കിൽ ഒരു സാധാരണ പദപ്രയോഗം എന്നിവ വ്യക്തമാക്കാൻ കഴിയും പ്രവർത്തന മാനേജ്മെന്റ്മെമ്മറി പൂൾ ചെയ്തിരിക്കുന്നു, ഇത് മുൻകൂട്ടി തിരഞ്ഞെടുത്ത മെമ്മറി ബ്ലോക്കുകളുടെ ഒരു ശ്രേണിയാണ്. ആദ്യം കുളത്തിനായി അനുവദിച്ച ഒരു ബ്ലോക്കിന് 1 മുതൽ 16 കിലോബൈറ്റ് വരെ നീളമുണ്ട്. ഇത് പ്രദേശങ്ങളായി തിരിച്ചിരിക്കുന്നു - അധിനിവേശവും ആളില്ലാത്തതും. രണ്ടാമത്തേത് പൂരിപ്പിക്കുമ്പോൾ, ഒരു പുതിയ ബ്ലോക്കിന്റെ രൂപീകരണം വഴി ഒരു പുതിയ വസ്തുവിന്റെ അലോക്കേഷൻ ഉറപ്പാക്കുന്നു.

ക്ലയന്റുകളുടെ ഐപി വിലാസം അനുസരിച്ച് ഭൂമിശാസ്ത്രപരമായ വർഗ്ഗീകരണം ഒരു പ്രത്യേക മൊഡ്യൂൾ ഉപയോഗിച്ച് Nginx-ൽ നടത്തുന്നു. ഏറ്റവും കുറഞ്ഞ മെമ്മറിയിൽ ഐപി വിലാസങ്ങൾ ഉപയോഗിച്ച് വേഗത്തിൽ പ്രവർത്തിക്കാൻ റാഡിക്സ് ട്രീ സിസ്റ്റം നിങ്ങളെ അനുവദിക്കുന്നു.

Nginx ന്റെ പ്രയോജനങ്ങൾ

Nginx വളരെ വേഗത്തിൽ കണക്കാക്കപ്പെടുന്നു HTTP സെർവർ. അപ്പാച്ചെ അല്ലെങ്കിൽ അതിനോടൊപ്പം, അഭ്യർത്ഥന പ്രോസസ്സിംഗ് വേഗത്തിലാക്കാനും സെർവറിലെ ലോഡ് കുറയ്ക്കാനും Nginx ഉപയോഗിക്കുന്നു. എന്നതാണ് വസ്തുത വലിയ അവസരങ്ങൾ, അപ്പാച്ചെയുടെ മോഡുലാർ ആർക്കിടെക്ചറിൽ അന്തർലീനമായത്, മിക്ക ഉപയോക്താക്കൾക്കും ആവശ്യമില്ല. ക്ലെയിം ചെയ്യപ്പെടാത്ത ഈ പ്രവർത്തനത്തിന് പണം നൽകുന്നതിന് ഗണ്യമായ ചിലവ് വരും. സിസ്റ്റം ഉറവിടങ്ങൾ. സാധാരണ സൈറ്റുകൾ, ഒരു ചട്ടം പോലെ, സ്ക്രിപ്റ്റുകൾക്ക് പകരം സ്റ്റാറ്റിക് ഫയലുകളുടെ (ചിത്രങ്ങൾ, സ്റ്റൈൽ ഫയലുകൾ, ജാവാസ്ക്രിപ്റ്റ്) വ്യക്തമായ "ആധിപത്യം" ആണ്. ഈ ഫയലുകൾ ഒരു റിസോഴ്സ് വിസിറ്ററിന് കൈമാറാൻ പ്രത്യേക പ്രവർത്തനങ്ങളൊന്നും ആവശ്യമില്ല, കാരണം ചുമതല വളരെ ലളിതമാണ്. അത്തരം അഭ്യർത്ഥനകൾ പ്രോസസ്സ് ചെയ്യുന്നതിനുള്ള വെബ് സെർവർ Nginx പോലെ ലളിതവും ഭാരം കുറഞ്ഞതുമായിരിക്കണം എന്നാണ് ഇതിനർത്ഥം.

Nginx ഉപയോഗിക്കുന്നതിനുള്ള വഴികൾ

ഒരു പ്രത്യേക പോർട്ടിൽ/IP.ഡൗൺലോഡ് ചെയ്യുന്നതിനുള്ള ഇമേജുകളോ ഫയലുകളോ ഉപയോഗിച്ച് റിസോഴ്‌സ് പൂരിതമാണെങ്കിൽ, Nginx ഒരു പ്രത്യേക പോർട്ടിലോ ഐപിയിലോ കോൺഫിഗർ ചെയ്യാനും അതിലൂടെ സ്റ്റാറ്റിക് ഉള്ളടക്കം വിതരണം ചെയ്യാനും കഴിയും. എന്നിരുന്നാലും, ഇത് ചെയ്യുന്നതിന്, സൈറ്റിലെ ലിങ്കുകൾ മാറ്റുന്നതിൽ നിങ്ങൾ കുറച്ച് ടിങ്കർ ചെയ്യേണ്ടിവരും. സ്റ്റാറ്റിക് ഫയലുകളിലേക്ക് ധാരാളം അഭ്യർത്ഥനകൾ ഉണ്ടെങ്കിൽ, അത് സൃഷ്ടിക്കുന്നതിൽ അർത്ഥമുണ്ട് പ്രത്യേക സെർവർഅതിൽ Nginx ഇൻസ്റ്റാൾ ചെയ്യുക.

ത്വരിതപ്പെടുത്തിയ പ്രോക്സിയിംഗ്. ഈ ഓപ്ഷൻ ഉപയോഗിച്ച്, എല്ലാ സന്ദർശക അഭ്യർത്ഥനകളും ആദ്യം Nginx-ലേക്ക് പോകുന്നു. Nginx സ്റ്റാറ്റിക് ഫയലുകൾക്കായുള്ള അഭ്യർത്ഥനകൾ (ഉദാഹരണത്തിന്, ഒരു ഇമേജ്, ലളിതമായ HTML, JavaScript അല്ലെങ്കിൽ CSS ഫയൽ) സ്വതന്ത്രമായി പ്രോസസ്സ് ചെയ്യുന്നു. ഒരു ഉപയോക്താവ് ഒരു പ്രത്യേക സ്ക്രിപ്റ്റ് ആക്സസ് ചെയ്യുകയാണെങ്കിൽ, അവൻ അപ്പാച്ചെ ഡിപ്പാർട്ട്മെന്റിലേക്ക് അഭ്യർത്ഥന റീഡയറക്ട് ചെയ്യും. സൈറ്റ് കോഡ് ഉപയോഗിച്ച് പരിവർത്തനങ്ങളൊന്നും വരുത്തേണ്ട ആവശ്യമില്ല.

സെർവറിൽ നിന്ന് സന്ദർശകനിലേക്കുള്ള ചാനൽ മന്ദഗതിയിലാണെങ്കിൽ, തിരിച്ചും Nginx ഉപയോഗിക്കുന്നുനൽകാൻ കഴിയും അധിക പ്രഭാവം. പ്രോസസ്സിംഗിനായി അപ്പാച്ചെയിലേക്ക് സന്ദർശകനിൽ നിന്ന് ലഭിച്ച അഭ്യർത്ഥന Nginx പാസാക്കുന്നു. അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്ത ശേഷം, അപ്പാച്ചെ Nginx-ലേക്ക് പേജ് ഫോർവേഡ് ചെയ്യുകയും നേട്ടത്തിന്റെ ബോധത്തോടെ കണക്ഷൻ അടയ്ക്കുകയും ചെയ്യുന്നു. Nginx ഇപ്പോൾ ഒരു ഉപയോക്താവിന് ആവശ്യമുള്ളിടത്തോളം ഒരു പേജ് അയയ്ക്കാൻ കഴിയും, പ്രായോഗികമായി സിസ്റ്റം ഉറവിടങ്ങൾ ഉപയോഗിക്കാതെ. അപ്പാച്ചെ വർക്ക്അവന്റെ സ്ഥാനത്ത് അന്യായമായി അനുഗമിക്കുമായിരുന്നു ഉയർന്ന ലോഡ്ഏതാണ്ട് നിഷ്ക്രിയമായി പ്രവർത്തിക്കുമ്പോൾ ഓർമ്മയ്ക്കായി. വഴിയിൽ, Nginx-നുള്ള ഈ ഉപയോഗ കേസിന് മറ്റൊരു പേരുണ്ട്: "ഫ്രണ്ട് ടു അപ്പാച്ചെ".

Nginx പ്ലസ് FastCGI.സൈറ്റ് സ്ക്രിപ്റ്റുകൾ എഴുതിയിരിക്കുന്ന ഭാഷയുടെ വ്യാഖ്യാതാവ് FastCGI സാങ്കേതികവിദ്യയെ പിന്തുണയ്ക്കുന്നുവെങ്കിൽ അപ്പാച്ചെ ആവശ്യമില്ല. അത്തരം ഭാഷകളിൽ, ഉദാഹരണത്തിന്, PHP, Perl എന്നിവയും മറ്റുള്ളവയും ഉൾപ്പെടുന്നു. എന്നിരുന്നാലും, ഈ സാഹചര്യത്തിൽ നിങ്ങൾ സ്ക്രിപ്റ്റ് കോഡുകൾ പരിഷ്ക്കരിക്കേണ്ടി വന്നേക്കാം.

ഇൻറർനെറ്റിൽ Nginx എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും കോൺഫിഗർ ചെയ്യാമെന്നും വിശദമായ നിരവധി മെറ്റീരിയലുകൾ ഉണ്ട്. Nginx-നെ കുറിച്ച് അതിന്റെ ഡവലപ്പർ Igor Sysoev-ന്റെ വെബ്സൈറ്റിൽ നിന്ന് നിങ്ങൾക്ക് കൂടുതലറിയാൻ കഴിയും.

മറ്റുള്ളവരും). നിലവിലുള്ള പതിപ്പ്,0.6.x, വിശ്വാസ്യതയുടെ കാര്യത്തിൽ സ്ഥിരതയുള്ളതായി കണക്കാക്കുന്നു, കൂടാതെ 0.7 ബ്രാഞ്ചിൽ നിന്നുള്ള റിലീസുകൾ അസ്ഥിരമായി കണക്കാക്കുന്നു. ചില മൊഡ്യൂളുകളുടെ പ്രവർത്തനക്ഷമത മാറുമെന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്, അതിന്റെ ഫലമായി നിർദ്ദേശങ്ങളും മാറിയേക്കാം, അതിനാൽ പിന്നോക്ക അനുയോജ്യതപതിപ്പ് 1.0.0-ന് മുമ്പുള്ള nginx-ൽ ഉറപ്പില്ല.

എന്തുകൊണ്ടാണ് nginx വളരെ മികച്ചത്, ഉയർന്ന ലോഡ് പ്രോജക്റ്റുകളുടെ അഡ്മിനിസ്ട്രേറ്റർമാർ ഇത് വളരെയധികം ഇഷ്ടപ്പെടുന്നത് എന്തുകൊണ്ട്? എന്തുകൊണ്ട് അപ്പാച്ചെ മാത്രം ഉപയോഗിച്ചുകൂടാ?

എന്തുകൊണ്ടാണ് അപ്പാച്ചെ മോശമായത്?

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

  1. സ്ഥിരതയുള്ള. സെർവർ ഒരു ലിസണിംഗ് സോക്കറ്റ് തുറന്ന് ഒരു കണക്ഷൻ ദൃശ്യമാകുന്നതിനായി കാത്തിരിക്കുന്നു (കാത്തിരിക്കുമ്പോൾ അത് തടഞ്ഞ അവസ്ഥയിലാണ്). ഒരു കണക്ഷൻ വരുമ്പോൾ, സെർവർ അതേ സന്ദർഭത്തിൽ അത് പ്രോസസ്സ് ചെയ്യുകയും കണക്ഷൻ അടയ്ക്കുകയും വീണ്ടും കണക്ഷനായി കാത്തിരിക്കുകയും ചെയ്യുന്നു. വ്യക്തമായും, ഇത് ഏറ്റവും അകലെയാണ് ഏറ്റവും മികച്ച മാർഗ്ഗം, പ്രത്യേകിച്ചും ഒരു ക്ലയന്റുമായി പ്രവർത്തിക്കുമ്പോൾ വളരെ സമയമെടുക്കുകയും ധാരാളം കണക്ഷനുകൾ ഉണ്ടാകുകയും ചെയ്യുന്നു. കൂടാതെ, സീരിയൽ മോഡലിന് കൂടുതൽ ദോഷങ്ങളുമുണ്ട് (ഉദാഹരണത്തിന്, ഒന്നിലധികം പ്രോസസ്സറുകൾ ഉപയോഗിക്കാനുള്ള കഴിവില്ലായ്മ), കൂടാതെ യഥാർത്ഥ വ്യവസ്ഥകൾഇത് പ്രായോഗികമായി ഉപയോഗിക്കുന്നില്ല.
  2. മൾട്ടി-പ്രോസസ് (മൾട്ടി-ത്രെഡഡ്). സെർവർ ഒരു ലിസണിംഗ് സോക്കറ്റ് തുറക്കുന്നു. ഒരു കണക്ഷൻ വരുമ്പോൾ, അത് അത് സ്വീകരിക്കുന്നു, അതിനുശേഷം അത് സൃഷ്ടിക്കുന്നു (അല്ലെങ്കിൽ മുൻകൂട്ടി സൃഷ്ടിച്ചവയുടെ ഒരു പൂളിൽ നിന്ന് എടുക്കുന്നു) കണക്ഷനുമായി ആവശ്യമുള്ളിടത്തോളം പ്രവർത്തിക്കാൻ കഴിയുന്ന ഒരു പുതിയ പ്രോസസ്സ് അല്ലെങ്കിൽ ത്രെഡ്, ജോലി പൂർത്തിയാകുമ്പോൾ, അവസാനിപ്പിക്കുക അല്ലെങ്കിൽ കുളത്തിലേക്ക് മടങ്ങുക. പ്രധാന ത്രെഡ്അതിനിടയിൽ, ഒരു പുതിയ കണക്ഷൻ സ്വീകരിക്കാൻ തയ്യാറാണ്. ഇതാണ് ഏറ്റവും കൂടുതൽ ജനപ്രിയ മോഡൽ, ഇത് നടപ്പിലാക്കാൻ താരതമ്യേന എളുപ്പമുള്ളതിനാൽ, ഓരോ ക്ലയന്റിലും സങ്കീർണ്ണവും സമയമെടുക്കുന്നതുമായ കണക്കുകൂട്ടലുകൾ നടത്താൻ അനുവദിക്കുന്നു, കൂടാതെ ലഭ്യമായ എല്ലാ പ്രോസസ്സറുകളും ഉപയോഗിക്കുന്നു. അപ്പാച്ചെ വെബ് സെർവർ ആണ് ഇതിന്റെ ഉപയോഗത്തിന് ഉദാഹരണം. എന്നിരുന്നാലും, ഈ സമീപനത്തിന് ദോഷങ്ങളുമുണ്ട്: ഒരു വലിയ സംഖ്യയിൽ ഒരേസമയം കണക്ഷനുകൾധാരാളം ത്രെഡുകൾ (അല്ലെങ്കിൽ, അതിലും മോശമായ, പ്രക്രിയകൾ) സൃഷ്ടിക്കപ്പെടുന്നു, കൂടാതെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം സന്ദർഭ സ്വിച്ചുകളിൽ ധാരാളം വിഭവങ്ങൾ ചെലവഴിക്കുന്നു. ക്ലയന്റുകൾ ഉള്ളടക്കം സ്വീകരിക്കാൻ വളരെ മന്ദഗതിയിലാകുമ്പോൾ ഇത് വളരെ മോശമാണ്. ഇത് നൂറുകണക്കിന് ത്രെഡുകളിലോ പ്രോസസ്സുകളിലോ വേഗത കുറഞ്ഞ ക്ലയന്റുകളിലേക്ക് ഡാറ്റ അയയ്‌ക്കുന്ന തിരക്കിലാണ്, ഇത് OS ഷെഡ്യൂളറിൽ അധിക ലോഡ് സൃഷ്‌ടിക്കുകയും തടസ്സങ്ങളുടെ എണ്ണം വർദ്ധിപ്പിക്കുകയും ധാരാളം മെമ്മറി ഉപയോഗിക്കുകയും ചെയ്യുന്നു.
  3. നോൺ-ബ്ലോക്കിംഗ് സോക്കറ്റുകൾ/സ്റ്റേറ്റ് മെഷീൻ. സെർവർ ഒരു ത്രെഡിനുള്ളിൽ പ്രവർത്തിക്കുന്നു, പക്ഷേ നോൺ-ബ്ലോക്കിംഗ് സോക്കറ്റുകളും ഒരു പോളിംഗ് മെക്കാനിസവും ഉപയോഗിക്കുന്നു. ആ. സെർവർ, അനന്തമായ ലൂപ്പിന്റെ ഓരോ ആവർത്തനത്തിലും, എല്ലാ സോക്കറ്റുകളിൽ നിന്നും സെലക്ട്() കോൾ ഉപയോഗിച്ച് ഡാറ്റ സ്വീകരിക്കാൻ/അയയ്ക്കാൻ തയ്യാറായ ഒന്ന് തിരഞ്ഞെടുക്കുന്നു. സോക്കറ്റ് തിരഞ്ഞെടുത്ത ശേഷം, സെർവർ അതിലേക്ക് ഡാറ്റ അയയ്‌ക്കുകയോ വായിക്കുകയോ ചെയ്യുന്നു, പക്ഷേ സ്ഥിരീകരണത്തിനായി കാത്തിരിക്കുന്നില്ല, പക്ഷേ പ്രാരംഭ അവസ്ഥയിലേക്ക് പോയി മറ്റൊരു സോക്കറ്റിൽ ഒരു ഇവന്റിനായി കാത്തിരിക്കുന്നു അല്ലെങ്കിൽ പ്രോസസ്സ് ചെയ്യുമ്പോൾ ഇവന്റ് സംഭവിച്ച അടുത്തത് പ്രോസസ്സ് ചെയ്യുന്നു മുമ്പത്തേത്. ഈ മോഡൽഇത് പ്രോസസറും മെമ്മറിയും വളരെ കാര്യക്ഷമമായി ഉപയോഗിക്കുന്നു, പക്ഷേ നടപ്പിലാക്കാൻ വളരെ സങ്കീർണ്ണമാണ്. കൂടാതെ, ഈ മോഡലിനുള്ളിൽ, ഒരു സോക്കറ്റിൽ ഇവന്റ് പ്രോസസ്സിംഗ് വളരെ വേഗത്തിൽ സംഭവിക്കണം - അല്ലാത്തപക്ഷം നിരവധി ഇവന്റുകൾ ക്യൂവിൽ കുമിഞ്ഞുകൂടും, ഒടുവിൽ അത് കവിഞ്ഞൊഴുകുകയും ചെയ്യും. nginx പ്രവർത്തിക്കുന്ന മോഡലാണിത്. കൂടാതെ, ഒന്നിലധികം തൊഴിലാളി പ്രക്രിയകൾ പ്രവർത്തിപ്പിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു (തൊഴിലാളികൾ എന്ന് വിളിക്കപ്പെടുന്നവ), അതായത്. ഒന്നിലധികം പ്രോസസ്സറുകൾ ഉപയോഗിക്കാം.

അതിനാൽ നമുക്ക് സങ്കൽപ്പിക്കാം ഇനിപ്പറയുന്ന സാഹചര്യം: 256 Kbit/s ചാനലുള്ള 200 ക്ലയന്റുകളെ 1 Gbit/s ചാനലുള്ള ഒരു HTTP സെർവറുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു:

അപ്പാച്ചെയുടെ കാര്യത്തിൽ എന്താണ് സംഭവിക്കുന്നത്? താരതമ്യേന വേഗത്തിൽ ഉള്ളടക്കം സൃഷ്‌ടിക്കുന്ന 200 ത്രെഡുകൾ/പ്രക്രിയകൾ സൃഷ്‌ടിക്കപ്പെട്ടു (ഇത് പോലെയായിരിക്കാം ചലനാത്മക പേജുകൾ, കൂടാതെ ഡിസ്കിൽ നിന്ന് വായിക്കുന്ന സ്റ്റാറ്റിക് ഫയലുകൾ), എന്നാൽ അത് സാവധാനം ക്ലയന്റുകൾക്ക് കൈമാറുന്നു. ഓപ്പറേറ്റിംഗ് സിസ്റ്റംഒരു കൂട്ടം ത്രെഡുകളും I/O ലോക്കുകളും നേരിടാൻ നിർബന്ധിതരായി.

ഈ സാഹചര്യത്തിൽ, ഓരോ കണക്ഷനിലും Nginx കുറഞ്ഞ OS റിസോഴ്സുകളും മെമ്മറിയും ഒരു ഓർഡർ ചെലവഴിക്കുന്നു. എന്നിരുന്നാലും, ഇവിടെ ഒരു പരിമിതിയുണ്ട് നെറ്റ്വർക്ക് മോഡൽ nginx: ഇത് സൃഷ്ടിക്കാൻ കഴിയില്ല ചലനാത്മക ഉള്ളടക്കംനിങ്ങളുടെ ഉള്ളിൽ, കാരണം ഇത് nginx-നുള്ളിലെ തടസ്സങ്ങളിലേക്ക് നയിക്കും. സ്വാഭാവികമായും, ഒരു പരിഹാരമുണ്ട്: nginx-ന് അത്തരം അഭ്യർത്ഥനകൾ (ഉള്ളടക്കം സൃഷ്ടിക്കുന്നതിന്) മറ്റേതെങ്കിലും വെബ് സെർവറിലേക്കോ (ഉദാഹരണത്തിന്, അതേ Apache) അല്ലെങ്കിൽ ഒരു FastCGI സെർവറിലേക്കോ പ്രോക്സി ചെയ്യാൻ കഴിയും.

nginx കോമ്പിനേഷന്റെ പ്രവർത്തന സംവിധാനം “പ്രധാന” സെർവറായും അപ്പാച്ചെ ഡൈനാമിക് ഉള്ളടക്കം സൃഷ്ടിക്കുന്നതിനുള്ള സെർവറായും പരിഗണിക്കാം:

Nginx ക്ലയന്റിൽ നിന്നുള്ള കണക്ഷൻ സ്വീകരിക്കുകയും അതിൽ നിന്നുള്ള മുഴുവൻ അഭ്യർത്ഥനയും വായിക്കുകയും ചെയ്യുന്നു. nginx മുഴുവൻ അഭ്യർത്ഥനയും വായിക്കാത്തത് വരെ, അത് "പ്രോസസ്സിങ്ങിന്" സമർപ്പിക്കില്ല എന്നത് ഇവിടെ ശ്രദ്ധിക്കേണ്ടതാണ്. ഇക്കാരണത്താൽ, മിക്കവാറും എല്ലാ ഫയൽ ഡൗൺലോഡ് പുരോഗതി സൂചകങ്ങളും സാധാരണയായി "തകരുന്നു" - എന്നിരുന്നാലും, അവ ഉപയോഗിച്ച് അവ പരിഹരിക്കാൻ സാധിക്കും മൂന്നാം കക്ഷി മൊഡ്യൂൾ upload_progress (ഇതിന് ആപ്ലിക്കേഷന്റെ മാറ്റം ആവശ്യമാണ്).

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

ഈ സ്കീമിനെ ഫ്രണ്ട്‌എൻഡ് + ബാക്കെൻഡ് എന്ന് വിളിക്കുന്നു, ഇത് പലപ്പോഴും ഉപയോഗിക്കുന്നു.

ഇൻസ്റ്റലേഷൻ

കാരണം nginx ജനപ്രീതി നേടാൻ തുടങ്ങിയിരിക്കുന്നു, ബൈനറി പാക്കേജുകളിൽ ചില പ്രശ്നങ്ങളുണ്ട്, അതിനാൽ ഇത് സ്വയം കംപൈൽ ചെയ്യാൻ തയ്യാറാകുക. സാധാരണയായി ഇതിൽ പ്രശ്‌നങ്ങളൊന്നുമില്ല, നിങ്ങൾ കമാൻഡിന്റെ ഔട്ട്‌പുട്ട് ശ്രദ്ധാപൂർവ്വം വായിക്കേണ്ടതുണ്ട്./configure --help കൂടാതെ നിങ്ങൾക്ക് ആവശ്യമുള്ള കംപൈലേഷൻ ഓപ്ഷനുകൾ തിരഞ്ഞെടുക്കുക, ഉദാഹരണത്തിന് ഇവ:

./കോൺഫിഗർ ചെയ്യുക\
--prefix=/opt/nginx-0.6.x \ # ഇൻസ്റ്റലേഷൻ പ്രിഫിക്സ്
--conf-path=/etc/nginx/nginx.conf \ # കോൺഫിഗറേഷൻ ഫയലിന്റെ സ്ഥാനം
—pid-path=/var/run/nginx.pid \ # ... കൂടാതെ pid ഫയലും
—user=nginx \ # ഉപയോക്തൃനാമം ഏത് nginx ന് കീഴിൽ പ്രവർത്തിക്കും
—with-http_ssl_module —with-http_gzip_static_module —with-http_stub_status_module \ # ആവശ്യമുള്ളവയുടെ ലിസ്റ്റ്
—without-http_ssi_module —without-http_userid_module —without-http_autoindex_module —without-http_geo_module —without-http_referer_module —without-http_memcached_module —without-http_modulezone മൊഡ്യൂളുകളും.

കോൺഫിഗറേഷനുശേഷം, നിങ്ങൾ സ്റ്റാൻഡേർഡ് മേക്ക് && മെയ്ക് ഇൻസ്റ്റാൾ പ്രവർത്തിപ്പിക്കണം, അതിനുശേഷം നിങ്ങൾക്ക് nginx ഉപയോഗിക്കാം.

കൂടാതെ, ജെന്റൂവിൽ നിങ്ങൾക്ക് സ്റ്റാൻഡേർഡ് പോർട്ട്സ് ട്രീയിൽ നിന്ന് ഒരു ഇബിൽഡ് ഉപയോഗിക്കാം; RHEL/CentOS-ൽ epel repository (ഇതിൽ nginx 0.6.x അടങ്ങിയിരിക്കുന്നു) അല്ലെങ്കിൽ 0.7 പതിപ്പിനുള്ള srpm, ഇവിടെ നിന്ന് ഡൗൺലോഡ് ചെയ്യാം: http://blogs.mail.ru/community/nginx; Debian-ൽ നിങ്ങൾക്ക് അസ്ഥിരമായ ബ്രാഞ്ചിൽ നിന്ന് nginx പാക്കേജ് ഉപയോഗിക്കാം.

കോൺഫിഗറേഷൻ ഫയൽ

nginx കോൺഫിഗറേഷൻ ഫയൽ വളരെ സൗകര്യപ്രദവും അവബോധജന്യവുമാണ്. ഇതിനെ സാധാരണയായി nginx.conf എന്ന് വിളിക്കുന്നു, സമാഹരിക്കുന്ന സമയത്ത് ലൊക്കേഷൻ അസാധുവാക്കപ്പെട്ടില്ലെങ്കിൽ $പ്രിഫിക്‌സ്/conf/ എന്നതിൽ ഇത് സ്ഥിതിചെയ്യുന്നു. മുകളിൽ സൂചിപ്പിച്ച എല്ലാ പാക്കേജുകളുടെയും ഡെവലപ്പർമാർ ചെയ്യുന്നതുപോലെ, ഇത് /etc/nginx/-ൽ ഇടാൻ ഞാൻ ആഗ്രഹിക്കുന്നു.

കോൺഫിഗറേഷൻ ഫയലിന്റെ ഘടന ഇപ്രകാരമാണ്:

ഉപയോക്താവ് nginx; # ഉപയോക്തൃനാമം, ആരുടെ അവകാശങ്ങൾ nginx പ്രവർത്തിക്കും
തൊഴിലാളി_പ്രക്രിയകൾ 1; # തൊഴിലാളി പ്രക്രിയകളുടെ എണ്ണം
ഇവന്റുകൾ (
<…># ഈ ബ്ലോക്ക് ഉപയോഗിക്കുന്ന പോളിംഗ് മെക്കാനിസവും (ചുവടെ കാണുക) സാധ്യമായ പരമാവധി കണക്ഷനുകളും വ്യക്തമാക്കുന്നു
}

Http(
<глобальные директивы http-сервера, например настройки таймаутов и т.п.>;
<почти все из них можно переопределить для отдельного виртуального хоста или локейшена>;

സെർവറുകളുടെ # വിവരണം (ഇതിനെയാണ് അപ്പാച്ചെയിൽ വിർച്ച്വൽ ഹോസ്റ്റ് എന്ന് വിളിക്കുന്നത്)
സെർവർ (
# സെർവർ വിലാസവും പേരും
കേൾക്കുക *:80;
സെർവർ_നാമം aaa.bbb;

<Директивы сервера. Здесь обычно указывают расположение докуменов (root), редиректы и переопределяют глобальные настройки>;

# ഇങ്ങനെയാണ് നിങ്ങൾക്ക് ഒരു ലൊക്കേഷൻ നിർവചിക്കാൻ കഴിയുക, അതിനായി കൂടുതൽ ആഗോള തലങ്ങളിൽ വ്യക്തമാക്കിയ മിക്കവാറും എല്ലാ നിർദ്ദേശങ്ങളും നിങ്ങൾക്ക് അസാധുവാക്കാനാകും
സ്ഥാനം /abcd/ (
<директивы>;
}
# കൂടാതെ, നിങ്ങൾക്ക് ഒരു സാധാരണ എക്‌സ്‌പ്രഷൻ ഉപയോഗിച്ച് ലൊക്കേഷൻ ഉണ്ടാക്കാം, ഉദാഹരണത്തിന് ഇതുപോലെ:
സ്ഥാനം ~ \.php$ (
<директивы>;
}
}

# മറ്റൊരു സെർവർ
സെർവർ (
കേൾക്കുക *:80;
server_name ccc.bbb;

<директивы>
}
}

ഓരോ നിർദ്ദേശവും ഒരു അർദ്ധവിരാമത്തിൽ അവസാനിക്കണം എന്നത് ശ്രദ്ധിക്കുക.
റിവേഴ്സ് പ്രോക്സിയിംഗും FastCGI

അതിനാൽ, മുകളിൽ ഞങ്ങൾ ഫ്രണ്ട്‌എൻഡ് + ബാക്കെൻഡ് സ്കീമിന്റെ ഗുണങ്ങൾ നോക്കി, കോൺഫിഗറേഷൻ ഫയലിന്റെ ഇൻസ്റ്റാളേഷൻ, ഘടന, വാക്യഘടന എന്നിവ കണ്ടെത്തി, ഇപ്പോൾ nginx-ൽ റിവേഴ്സ് പ്രോക്സിയിംഗ് എങ്ങനെ നടപ്പിലാക്കാമെന്ന് നോക്കാം.

അത് വളരെ ലളിതമാണ്! ഉദാഹരണത്തിന് ഇതുപോലെ:

സ്ഥാനം/(
proxy_pass http://1.2.3.4:8080;
}

ഈ ഉദാഹരണത്തിൽ, ലൊക്കേഷനിലേക്ക് വരുന്ന എല്ലാ അഭ്യർത്ഥനകളും 1.2.3.4, പോർട്ട് 8080 എന്ന സെർവറിലേക്ക് പ്രോക്സി ചെയ്യപ്പെടും. ഇത് അപ്പാച്ചെ അല്ലെങ്കിൽ മറ്റേതെങ്കിലും http സെർവർ ആകാം.

എന്നിരുന്നാലും, ആപ്ലിക്കേഷൻ പരിഗണിക്കുമെന്ന വസ്തുതയുമായി ബന്ധപ്പെട്ട നിരവധി സൂക്ഷ്മതകളുണ്ട്, ഒന്നാമതായി, എല്ലാ അഭ്യർത്ഥനകളും ഒരേ ഐപി വിലാസത്തിൽ നിന്നാണ് വരുന്നത് (ഉദാഹരണത്തിന്, ഒരു DDoS ആക്രമണത്തിനോ പാസ്‌വേഡ് ഊഹിക്കാനോ ഉള്ള ശ്രമമായി ഇത് കണക്കാക്കാം) രണ്ടാമതായി, ഇത് ഹോസ്റ്റ് 1.2.3.4, പോർട്ട് 8080 എന്നിവയിൽ പ്രവർത്തിക്കുന്നുവെന്ന് കരുതുക (അതനുസരിച്ച്, തെറ്റായ റീഡയറക്‌ടുകൾ സൃഷ്ടിക്കുക സമ്പൂർണ്ണ ലിങ്കുകൾ). ആപ്ലിക്കേഷൻ മാറ്റിയെഴുതാതെ തന്നെ ഈ പ്രശ്‌നങ്ങൾ ഒഴിവാക്കാൻ, ഇനിപ്പറയുന്ന കോൺഫിഗറേഷൻ സുലഭമാണെന്ന് ഞാൻ കാണുന്നു:
Nginx കേൾക്കുന്നു ഫ്രണ്ട് എൻഡ്പോർട്ട് 80 ൽ.

ബാക്കെൻഡ് (അപാച്ചെ എന്ന് പറയാം) nginx-ന്റെ അതേ ഹോസ്റ്റിലാണ് സ്ഥിതി ചെയ്യുന്നതെങ്കിൽ, അത് പോർട്ട് 80-ൽ 127.0.0.1-ലോ മറ്റൊരു ആന്തരിക IP വിലാസത്തിലോ "ശ്രദ്ധിക്കുന്നു".

ഈ കേസിലെ nginx കോൺഫിഗറേഷൻ ഇതുപോലെ കാണപ്പെടുന്നു:

സെർവർ (
കേൾക്കുക 4.3.2.1:80;
# ഹോസ്റ്റും എക്സ്-റിയൽ-ഐപി തലക്കെട്ടും സജ്ജമാക്കുക: ബാക്കെൻഡിലേക്ക് അയച്ച ഓരോ അഭ്യർത്ഥനയ്ക്കും
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header ഹോസ്റ്റ് $host:$proxy_port;
# അല്ലെങ്കിൽ “proxy_set_header Host $host;” ആപ്ലിക്കേഷൻ എല്ലാ ലിങ്കുകളിലും:80 ചേർക്കുകയാണെങ്കിൽ
}

സന്ദർശകരുടെ IP വിലാസങ്ങൾ വേർതിരിക്കാൻ അപ്ലിക്കേഷന് വേണ്ടി, നിങ്ങൾ mod_extract_forwarded മൊഡ്യൂൾ ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട് (അത് Apache സെർവർ നടപ്പിലാക്കിയതാണെങ്കിൽ), അല്ലെങ്കിൽ X--ൽ നിന്ന് ഉപയോക്താവിന്റെ IP വിലാസത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ എടുക്കുന്നതിനായി ആപ്ലിക്കേഷൻ പരിഷ്‌ക്കരിക്കുക. യഥാർത്ഥ-IP HTTP തലക്കെട്ട്.

FastCGI ഉപയോഗിക്കുന്നതാണ് മറ്റൊരു ബാക്കെൻഡ് ഓപ്ഷൻ. ഈ സാഹചര്യത്തിൽ, nginx കോൺഫിഗറേഷൻ ഇതുപോലെ കാണപ്പെടും:

സെർവർ (
<…>

php സ്ക്രിപ്റ്റുകൾക്കായുള്ള അഭ്യർത്ഥനകൾ പോകുന്ന # ലൊക്കേഷൻ
സ്ഥാനം ~ .php$ (
fastcgi_pass 127.0.0.1:8888; # fastcgi സെർവറിന്റെ വിലാസവും പോർട്ടും നിർണ്ണയിക്കുക,
fastcgi_index index.php; #... സൂചിക ഫയൽ

# കൂടാതെ ഫാസ്റ്റ്‌സിജി സെർവറിലേക്ക് കൈമാറേണ്ട ചില പാരാമീറ്ററുകൾ, അതുവഴി ഏത് സ്‌ക്രിപ്റ്റ് എക്‌സിക്യൂട്ട് ചെയ്യണമെന്നും ഏത് പാരാമീറ്ററുകൾ ഉപയോഗിച്ചും അത് മനസ്സിലാക്കും:
fastcgi_param SCRIPT_FILENAME /usr/www/html$fastcgi_script_name; # സ്ക്രിപ്റ്റ് പേര്
fastcgi_param QUERY_STRING $query_string; # അന്വേഷണ സ്ട്രിംഗ്
# കൂടാതെ അഭ്യർത്ഥന പാരാമീറ്ററുകൾ:
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
}

# പതിവ് എക്സ്പ്രഷനുകളുള്ള ലൊക്കേഷനുകൾക്ക് ഉയർന്ന “മുൻഗണന” ഉള്ളതിനാൽ, എല്ലാ നോൺ-പിഎച്ച്പി അഭ്യർത്ഥനകളും ഇവിടെ വരും.

സ്ഥാനം/(
റൂട്ട് /var/www/html/
}

സ്റ്റാറ്റിക്സ്

ബാക്കെൻഡ് കുറച്ച് ലോഡ് ചെയ്യുന്നതിന്, സ്റ്റാറ്റിക് ഫയലുകൾ nginx വഴി മാത്രം നൽകുന്നതാണ് നല്ലത് - ഇത് ഈ ടാസ്‌ക്കിനെ നന്നായി നേരിടുന്നു, കാരണം ഓരോ അഭ്യർത്ഥനയിലും ഇത് വളരെ കുറച്ച് വിഭവങ്ങൾ ചെലവഴിക്കുന്നു (ഒരു പുതിയ പ്രോസസ്സ് സൃഷ്ടിക്കേണ്ട ആവശ്യമില്ല, കൂടാതെ Nginx പ്രോസസ്സ് സാധാരണയായി കുറച്ച് മെമ്മറി ഉപയോഗിക്കുകയും നിരവധി കണക്ഷനുകൾക്ക് സേവനം നൽകുകയും ചെയ്യും).

കോൺഫിഗറേഷൻ ഫയലിൽ ഇത് ഇതുപോലെ കാണപ്പെടുന്നു:

സെർവർ (
കേൾക്കുക *:80;
server_name myserver.com;

സ്ഥാനം/(
പ്രോക്സി_പാസ്


">http://127.0.0.1:80;

}

# എല്ലാ സ്റ്റാറ്റിക് ഫയലുകളും / ഫയലുകളിലാണെന്ന് കരുതുക
സ്ഥാനം /ഫയലുകൾ/ (
റൂട്ട് /var/www/html/; # fs-ലേക്കുള്ള പാത സൂചിപ്പിക്കുക
14d കാലഹരണപ്പെടുന്നു; # ചേർക്കുക തലക്കെട്ട് കാലഹരണപ്പെടുന്നു:
error_page 404 = @back; # കൂടാതെ ഫയൽ കണ്ടെത്തിയില്ലെങ്കിൽ, @back എന്ന പേരുള്ള സ്ഥലത്തേക്ക് ഞങ്ങൾ അത് അയയ്ക്കുന്നു
}

ഫയലുകളൊന്നും കണ്ടെത്താത്ത / ഫയലുകളിൽ നിന്നുള്ള # അഭ്യർത്ഥനകൾ ബാക്കെൻഡിലേക്ക് അയയ്‌ക്കുന്നു, ഒന്നുകിൽ അതിന് സൃഷ്‌ടിക്കാനാകും ആവശ്യമായ ഫയൽ, അല്ലെങ്കിൽ കാണിക്കുക മനോഹരമായ സന്ദേശംപിശകിനെക്കുറിച്ച്
സ്ഥാനം @ബാക്ക് (
പ്രോക്സി_പാസ്
"ശീർഷകം="http://127.0.0.1:80;

">http://127.0.0.1:80;

}

എല്ലാ സ്റ്റാറ്റിക്സും ഒരു നിർദ്ദിഷ്ട ഡയറക്ടറിയിൽ സ്ഥാപിച്ചിട്ടില്ലെങ്കിൽ, ഒരു സാധാരണ എക്സ്പ്രഷൻ ഉപയോഗിക്കുക:

സ്ഥാനം ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf |js)$ (
# മുകളിലുള്ളതിന് സമാനമായി, നിർദ്ദിഷ്ട സഫിക്സുകളിലൊന്നിൽ അവസാനിക്കുന്ന എല്ലാ അഭ്യർത്ഥനകളും മാത്രമേ ഈ സ്ഥാനത്തേക്ക് പോകൂ
റൂട്ട് /var/www/html/;
error_page 404 = @back;
}

നിർഭാഗ്യവശാൽ, ഫയലുകൾക്കൊപ്പം nginx അസിൻക്രണസ് വർക്ക് നടപ്പിലാക്കുന്നില്ല. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, I/O പ്രവർത്തനങ്ങളിൽ nginx തൊഴിലാളിയെ തടഞ്ഞിരിക്കുന്നു. അതിനാൽ നിങ്ങൾക്ക് ധാരാളം ഉണ്ടെങ്കിൽ സ്റ്റാറ്റിക് ഫയലുകൾകൂടാതെ, പ്രത്യേകിച്ചും അവ വ്യത്യസ്ത ഡിസ്കുകളിൽ നിന്ന് വായിക്കുകയാണെങ്കിൽ, പ്രവർത്തന പ്രക്രിയകളുടെ എണ്ണം വർദ്ധിപ്പിക്കുന്നത് നല്ലതാണ് (ഡിസ്കിലെ മൊത്തം തലകളുടെ എണ്ണത്തേക്കാൾ 2-3 മടങ്ങ് കൂടുതലുള്ള ഒരു സംഖ്യയിലേക്ക്). ഇത് തീർച്ചയായും, OS- ൽ ലോഡ് വർദ്ധിപ്പിക്കുന്നു, എന്നാൽ മൊത്തത്തിലുള്ള പ്രകടനം വർദ്ധിക്കുന്നു. സാധാരണ അളവിലുള്ള സ്റ്റാറ്റിക് ഉപയോഗിച്ച് പ്രവർത്തിക്കാൻ (വളരെയല്ല ഒരു വലിയ സംഖ്യതാരതമ്യേന ചെറിയ ഫയലുകൾ: CSS, JavaScript, ഇമേജുകൾ) ഒന്നോ രണ്ടോ വർക്ക്ഫ്ലോകൾ മതി.

തുടരും

ലിങ്കുകൾ

nginx നെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾ ഇവിടെ നിങ്ങൾക്ക് കണ്ടെത്താം:

സ്റ്റാറ്റിക് ഉള്ളടക്കമുള്ള ഒരു സൈറ്റ് നൽകുന്ന ഒരു വെർച്വൽ ഹോസ്റ്റ് സജ്ജീകരിക്കുന്നത് ഇന്ന് നമ്മൾ നോക്കും. അതായത്, CGI, Perl, PHP അല്ലെങ്കിൽ മറ്റെന്തെങ്കിലും ഇല്ല. ലേഖനത്തിൽ പരാമർശിച്ചിരിക്കുന്ന എല്ലാ ഉദാഹരണങ്ങളും പരാമർശിക്കുകയും അതിനെതിരെ പരീക്ഷിക്കുകയും ചെയ്തിട്ടുണ്ട് ഡെബിയൻ ലിനക്സ് 5.0 ലെന്നി. മറ്റ് സിസ്റ്റങ്ങളുടെ ഉടമകൾ ഇത് ഒരു തരത്തിലും ആശയക്കുഴപ്പത്തിലാക്കരുത്, കാരണം കോൺഫിഗറേഷൻ ഫയലുകളിലേക്കുള്ള പാതകൾ മാത്രമേ മാറ്റാൻ കഴിയൂ, അതേസമയം അവയുടെ ഉള്ളടക്കങ്ങൾ Nginx പ്രവർത്തിക്കുന്ന ഏത് സിസ്റ്റത്തിനും ബാധകമാണ്.

കോൺഫിഗറേഷൻ ഫയലുകൾ സംഭരിക്കുന്നതിനുള്ള രീതി

മുമ്പത്തെ ലേഖനത്തിൽ നിന്ന് നിങ്ങൾ ഓർക്കുന്നതുപോലെ, നിങ്ങൾക്ക് Nginx കോൺഫിഗറേഷൻ ഫയലുകളിൽ നിർദ്ദേശം ഉപയോഗിക്കാം ഉൾപ്പെടുന്നു, പ്രധാന കോൺഫിഗറേഷൻ ഫയലിൽ മറ്റ് ഫയലുകളുടെ ഉള്ളടക്കങ്ങൾ ഉൾപ്പെടുത്താം. ഈ സമീപനം അഡ്മിനിസ്ട്രേറ്റർമാർക്ക് അധിക സെർവർ കോൺഫിഗറേഷൻ ഫ്ലെക്സിബിലിറ്റി നൽകുന്നു, ഇത് പലപ്പോഴും സമയവും പരിശ്രമവും ലാഭിക്കുന്നു.

നിങ്ങൾ ശ്രദ്ധിച്ചാൽ, പ്രധാന കോൺഫിഗറേഷൻ ഫയലിൽ /etc/nginx/nginx.confവെർച്വൽ സെർവറുകളുടെ കോൺഫിഗറേഷനെ കുറിച്ച് ഒരു വാക്കുമില്ല. സെർവർ ഡോക്യുമെന്റ് റൂട്ട് എവിടെയാണ് സ്ഥിതിചെയ്യുന്നത്, ഇൻകമിംഗ് കണക്ഷനുകൾക്കായി സെർവർ ഏത് പോർട്ടിൽ ശ്രദ്ധിക്കണം തുടങ്ങിയ കാര്യങ്ങളെക്കുറിച്ച് ഒന്നും പറഞ്ഞിട്ടില്ല. എന്നിരുന്നാലും, കോൺഫിഗറേഷൻ ഫയലിലെ അവസാന വരി ഇനിപ്പറയുന്നതാണ്:

/etc/nginx/sites-enabled/* ഉൾപ്പെടുത്തുക;

അതായത്, കാറ്റലോഗിൽ നിന്ന് /etc/nginx/sites-enabledഎല്ലാ ഫയലുകളുടെയും ഉള്ളടക്കങ്ങൾ വായിക്കുകയും പ്രയോഗിക്കുകയും ചെയ്യുന്നു നിലവിലെ കോൺഫിഗറേഷൻസെർവർ. സൂചിപ്പിച്ച ഡയറക്‌ടറിയിലേക്ക് നോക്കുമ്പോൾ, നിങ്ങൾ അവിടെ ഒരു ഫയൽ കാണും സ്ഥിരസ്ഥിതി, ഇത് ഫയലിലേക്കുള്ള ഒരു പ്രതീകാത്മക ലിങ്കാണ് /etc/nginx/sites-available/default. കൂടാതെ വളരെ സൗകര്യപ്രദമായ സമീപനം: നിങ്ങൾ പെട്ടെന്ന് ചില വെർച്വൽ ഹോസ്റ്റ് പ്രവർത്തനരഹിതമാക്കേണ്ടതുണ്ട്, നിങ്ങൾ ഇല്ലാതാക്കുക പ്രതീകാത്മക ലിങ്ക്, എന്നാൽ ഫയൽ അങ്ങോട്ടും ഇങ്ങോട്ടും നീക്കാൻ വിഷമിക്കരുത്.

ഒരു വെർച്വൽ സെർവർ സൃഷ്ടിക്കുന്നു

"പരീക്ഷണത്തിന്റെ പരിശുദ്ധി"ക്കായി, വിതരണത്തോടൊപ്പം നൽകിയിട്ടുള്ള പ്രതീകാത്മക ലിങ്ക് നീക്കംചെയ്യാൻ ഞാൻ നിർദ്ദേശിക്കുന്നു /etc/nginx/sites-enabled/defaultവൃത്തിയുള്ള സ്ലേറ്റ് ഉപയോഗിച്ച് ആരംഭിക്കുക.

ഒരു ഫയൽ സൃഷ്ടിക്കുക /etc/nginx/sites-available/myvhostഇനിപ്പറയുന്ന ഉള്ളടക്കത്തോടൊപ്പം:

സെർവർ (ശ്രവിക്കുക 80; server_name myvhost; access_log /var/log/nginx/myvhost.log; ലൊക്കേഷൻ / (root /var/www/myvhost/; index index.htm index.html; autoindex on; ) )

Nginx-ലെ ഒരു വെർച്വൽ സെർവറിന്റെ ഏറ്റവും ലളിതമായ കോൺഫിഗറേഷനാണിത്. ഇപ്പോൾ ക്രമത്തിൽ ഉപയോഗിക്കുന്ന പാരാമീറ്ററുകളെക്കുറിച്ച്.

ആദ്യ ഓപ്ഷൻ സെർവർ, പിന്തുടരുന്നു ബ്രേസ്, ഒരു പുതിയ വിഭാഗം ആരംഭിക്കുന്നു. വിഭാഗങ്ങളിലാണ് സെർവർകൂടാതെ Nginx-ലെ എല്ലാ വെർച്വൽ സെർവറുകളുടെയും കോൺഫിഗറേഷനുകൾ വിവരിക്കുന്നു.

ഓപ്ഷൻ കേൾക്കുകകണക്ഷനുകൾക്കായി ഞങ്ങളുടെ വെർച്വൽ സെർവർ ശ്രദ്ധിക്കേണ്ട പോർട്ട് നമ്പർ ഞങ്ങൾ Nginx-നോട് പറയുന്നു. ഈ ഓപ്ഷന്റെ ഡിഫോൾട്ട് മൂല്യം 80 , നൽകിയിരിക്കുന്ന ഉദാഹരണത്തിൽ മൂല്യം വ്യക്തതയ്ക്കായി മാത്രം നിർവചിച്ചിരിക്കുന്നു. കൂടാതെ, ഈ ഓപ്ഷൻ ഉപയോഗിച്ച്, നിങ്ങൾക്ക് പോർട്ട് നമ്പർ മാത്രമല്ല, "അറ്റാച്ചുചെയ്യാൻ" ആഗ്രഹിക്കുന്ന നെറ്റ്‌വർക്ക് ഇന്റർഫേസിന്റെ വിലാസവും വ്യക്തമാക്കാൻ കഴിയും. ഈ സെർവർ. ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന രണ്ട് ഉദാഹരണങ്ങൾ പോർട്ട് 8080-ൽ സിസ്റ്റത്തിൽ ലഭ്യമായ എല്ലാ TCP/IP ഇന്റർഫേസുകളിലും സെർവറിനെ "ഹാംഗ്" ചെയ്യുന്നു:

കേൾക്കുക 8080 കേൾക്കുക *:8080

ഇനിപ്പറയുന്ന ഉദാഹരണം ഒരു വെർച്വൽ സെർവറിനെ ഒരു നിർദ്ദിഷ്‌ടവുമായി ബന്ധപ്പെടുത്തുന്നു നെറ്റ്വർക്ക് ഇന്റർഫേസ് IP വിലാസം 192.168.0.1 ഉപയോഗിച്ച്, പോർട്ട് 8080-ൽ ഇൻകമിംഗ് കണക്ഷനുകൾ കേൾക്കുന്നു:

192.168.0.1:8080 കേൾക്കുക

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

സെർവർ (... കേൾക്കുക 80; server_name example-1.com ... ) സെർവർ (... കേൾക്കുക 80; server_name example-2.com ...)

server_name ഓപ്ഷന് ഒന്നിൽ കൂടുതൽ പരാമീറ്ററുകൾ ഉണ്ടാകാം, അതിനാൽ നിങ്ങളുടെ സെർവറിന് അപരനാമങ്ങൾ നിർവചിക്കാം, ഉദാഹരണത്തിന്:

സെർവർ_നാമം ഉദാഹരണം-1.com www.example-1.com www1.example-1.com

സെർവർ നാമത്തിലെ പ്രതീകങ്ങളുടെ ഏതെങ്കിലും ക്രമം മാറ്റിസ്ഥാപിക്കുന്നതിന് നിങ്ങൾക്ക് നക്ഷത്രചിഹ്ന പ്രതീകം ഉപയോഗിക്കാനും കഴിയും:

Server_name example-1.com *.example-1.com

പരാമീറ്റർ ഉപയോഗിച്ച് ആക്സസ്_ലോഗ്ൽ ഞങ്ങൾ കണ്ടുമുട്ടി. ഈ പരാമീറ്ററിന്റെ മൂല്യം സെർവർ ഉള്ളടക്ക ആക്സസ് ലോഗ് ഫയലിന്റെ സ്ഥാനവും ഫോർമാറ്റും നിർണ്ണയിക്കുന്നു.

ഓപ്ഷൻ സ്ഥാനംഒരു പ്രത്യേക കുറിപ്പിൽ പരിഗണന അർഹിക്കുന്നു, അതിനാൽ ഈ ലേഖനത്തിൽ ഒരു സ്റ്റാറ്റിക് വെബ് സെർവർ കോൺഫിഗർ ചെയ്യുന്നതിന് പര്യാപ്തമായ പരിധി വരെ അതിന്റെ അർത്ഥവും കഴിവുകളും ഞങ്ങൾ ചെറുതായി സ്പർശിക്കും. ലൊക്കേഷൻ ഓപ്‌ഷൻ ഉപയോഗിക്കുന്നത്, ക്ലയന്റിൽനിന്ന് ലഭിക്കുന്ന URI മൂല്യത്തെ ആശ്രയിച്ച് സെർവറിന്റെ സ്വഭാവം ഇഷ്‌ടാനുസൃതമാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. അതിനാൽ വിഭാഗം സെർവർ URI-യുടെ ഭാഗത്തെ അടിസ്ഥാനമാക്കി കോൺഫിഗറേഷൻ വിവരിക്കുന്ന നിരവധി നെസ്റ്റഡ് ലൊക്കേഷൻ വിഭാഗങ്ങൾ അടങ്ങിയിരിക്കാം. ലേഖനത്തിന്റെ തുടക്കത്തിൽ നൽകിയിരിക്കുന്ന ഉദാഹരണത്തിൽ, ഒരു ലൊക്കേഷൻ മാത്രമേ നിർവചിച്ചിട്ടുള്ളൂ, അത് ക്ലയന്റിൽ നിന്ന് ലഭിക്കുന്ന ഏത് യുആർഐയുമായി പൊരുത്തപ്പെടും, കാരണം ഏതൊരു യുആർഐയിലും ഫോർവേഡ് സ്ലാഷ് പ്രതീകം അടങ്ങിയിരിക്കുന്നു.

ഉദാഹരണത്തിന്, ഒരു യുആർഐയിൽ ഒരു സബ്‌സ്‌ട്രിംഗ് കണ്ടെത്തുമ്പോൾ അത് ഉറപ്പാക്കേണ്ടതുണ്ടെങ്കിൽ /ചിത്രങ്ങൾ/, Nginx സെർവറിന്റെ റൂട്ട് ഡയറക്‌ടറി ആക്‌സസ് ചെയ്‌തില്ല, പക്ഷേ ഡയറക്‌ടറിയിലെ ഫയലുകൾക്കായി നോക്കി /mnt/server2/var/www/images/, നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന രണ്ട് സ്ഥാനങ്ങൾ നിർവചിക്കാം:

സ്ഥാനം / ( root /var/www/myvhost/; ) സ്ഥാനം /images/ ( root /mnt/server2/var/www/;)

മുകളിലെ ലൊക്കേഷൻ ഉദാഹരണങ്ങൾ ഒരു URI സ്‌ട്രിംഗിനുള്ളിലെ ഒരു സബ്‌സ്‌ട്രിംഗിനായുള്ള തിരയൽ ഉപയോഗിക്കുന്നു. അതായത് സബ്സ്ട്രിംഗ് /ചിത്രങ്ങൾ/എന്നതുപോലെ കണ്ടെത്തും http://server/images/, ഒപ്പം http://server/my/images/. തിരയൽ നടത്താൻ നിങ്ങൾക്ക് Nginx ആവശ്യമുണ്ടെങ്കിൽ കൃത്യമായകത്തിടപാടുകൾ, ഇതിനായി നിങ്ങൾക്ക് ചിഹ്നം ഉപയോഗിക്കാം "=" , ഇത് ഈ രീതിയിൽ തിരയാൻ സെർവറിനെ പ്രേരിപ്പിക്കുന്നു:

സ്ഥാനം = /ചിത്രങ്ങൾ/ (റൂട്ട് /mnt/server2/var/www/; )

കൂടാതെ നിങ്ങൾ ചെയ്യേണ്ട സബ്‌സ്ട്രിംഗ് നിങ്ങൾക്ക് നിർവചിക്കാം ആരംഭിക്കുക URI. ഈ ആവശ്യത്തിനായി, രണ്ട് ചിഹ്നങ്ങളുടെ ഒരു നിർമ്മാണം ഉപയോഗിക്കുന്നു "^~" :

സ്ഥാനം ^~ /ചിത്രങ്ങൾ/ (... )

നന്നായി പതിവ് ഭാവങ്ങൾ, തീർച്ചയായും, പിന്തുണയ്ക്കുകയും ലൊക്കേഷൻ വിവരിക്കുമ്പോൾ കൂടുതൽ വഴക്കം നൽകുകയും ചെയ്യുന്നു. ഇനിപ്പറയുന്ന ലൊക്കേഷൻ അവസാനം ഗ്രാഫിക് ഫയൽ നാമങ്ങൾ അടങ്ങിയ എല്ലാ URI-കളുമായും പൊരുത്തപ്പെടും (കേസ് സെൻസിറ്റീവ്):

സ്ഥാനം ~* \.(gif|jpg|jpeg)$ ( ... )

ഒരേ കാര്യം, എന്നാൽ കേസ് സെൻസിറ്റീവ്:

സ്ഥാനം ~ \.(gif|jpg|jpeg)$ ( ... )

Nginx-ലെ ലൊക്കേഷൻ ഓപ്ഷനുകളുടെ പ്രോസസ്സിംഗ് ക്രമത്തെക്കുറിച്ച് കുറച്ച്. ഒറ്റനോട്ടത്തിൽ പലരും വിചാരിച്ചേക്കാവുന്നതിന് വിപരീതമായി, കോൺഫിഗറേഷൻ ഫയലിൽ ലൊക്കേഷനുകൾ ഏത് ക്രമത്തിലാണ് നിർവചിച്ചിരിക്കുന്നത് എന്നത് (തീർച്ചയായും പതിവ് എക്സ്പ്രഷനുകൾ ഒഴികെ) പ്രശ്നമല്ല. നിങ്ങൾ അവ എങ്ങനെ സ്വാപ്പ് ചെയ്താലും ഫലം ഒന്നുതന്നെയായിരിക്കും. ആവശ്യമായ ലൊക്കേഷനായി തിരയുമ്പോൾ, Nginx ഇനിപ്പറയുന്ന അൽഗോരിതം പിന്തുടരുന്നു:

  1. ആരംഭിക്കുന്ന ഒരു നിയമത്തിനായുള്ള തിരയലുകൾ "=" . ഇത്തരമൊരു നിയമം കണ്ടെത്തിയാലുടൻ കൂടുതൽ തിരച്ചിൽ നിർത്തും.
  2. "പതിവ്" നിയമങ്ങൾക്കായി ഒരു തിരയൽ നടത്തുന്നു, അതായത്, നോൺ-റെഗുലർ എക്സ്പ്രഷനുകൾ. എന്ന് തുടങ്ങുന്ന ഒരു നിയമം അവരുടെ ഇടയിൽ കണ്ടെത്തിയാൽ "^~" , കൂടുതൽ തിരച്ചിൽ നിർത്തും.
  3. കോൺഫിഗറേഷൻ ഫയലിൽ ദൃശ്യമാകുന്ന ക്രമത്തിലാണ് റെഗുലർ എക്സ്പ്രഷനുകൾ പ്രോസസ്സ് ചെയ്യുന്നത്.
  4. പോയിന്റ് 3 പ്രകാരം ഒരു പൊരുത്തം കണ്ടെത്തിയാൽ, ഈ ലൊക്കേഷൻ ഉപയോഗിക്കും, അല്ലാത്തപക്ഷം പോയിന്റ് 2-ൽ കണ്ടെത്തിയ സ്ഥാനം ഉപയോഗിക്കും.

ഓപ്ഷൻ റൂട്ട്അതിന്റെ മൂല്യം ഫയൽ സിസ്റ്റത്തിലെ വെർച്വൽ സെർവർ ഡോക്യുമെന്റുകളുടെ റൂട്ടിലേക്കുള്ള പാത നിർവചിക്കുന്നു.

ഓപ്ഷൻ ഉപയോഗിച്ച് സൂചികഡയറക്‌ടറിയിലേക്ക് ആക്‌സസ്സ് ആവശ്യപ്പെട്ടിട്ടുണ്ടെങ്കിൽ Nginx ക്ലയന്റുകൾക്ക് "നൽകുന്ന" സൂചിക പ്രമാണ ഫയലുകളുടെ പേരുകൾ നിങ്ങൾക്ക് നിർവചിക്കാം. ഡയറക്‌ടറിയിൽ അത്തരം ഫയൽ ഇല്ലെങ്കിൽ, ഈ ലൊക്കേഷനായി ഓപ്‌ഷൻ അപ്രാപ്‌തമാക്കിയിരിക്കുന്നു ഓട്ടോഇൻഡക്സ്, അപ്പോൾ ക്ലയന്റിന് പ്രതികരണമായി ഒരു HTTP കോഡ് ലഭിക്കും 403 , ആക്സസ് നിരസിച്ചതായി സൂചിപ്പിക്കുന്നു.

ഓപ്ഷൻ ഓട്ടോഇൻഡക്സ്അഭ്യർത്ഥിച്ച സൂചിക ഫയൽ ഡയറക്ടറിയിൽ കണ്ടെത്തിയില്ലെങ്കിൽ Nginx-ന്റെ പെരുമാറ്റം കോൺഫിഗർ ചെയ്യുന്നു. മുകളിലെ ഉദാഹരണത്തിലെന്നപോലെ ഓട്ടോഇൻഡക്സ് ഓപ്ഷന്റെ മൂല്യം ആണെങ്കിൽ "ഓൺ", തുടർന്ന് സെർവർ ഡയറക്ടറിയുടെ ഉള്ളടക്കങ്ങൾ ക്ലയന്റിലേക്ക് ഫയലുകളുടെ ഒരു HTML ലിസ്റ്റിന്റെ രൂപത്തിൽ തിരികെ നൽകും. ഡിഫോൾട്ടായി, ഓട്ടോഇൻഡക്‌സ് പ്രവർത്തനരഹിതമാണ്, അതിനാൽ എല്ലാവർക്കും കാണാനായി നിർണായക വിവരങ്ങൾ അശ്രദ്ധമായി പോസ്റ്റ് ചെയ്യാതിരിക്കാൻ അത് ശ്രദ്ധിക്കുക.

സെർവർ പുനരാരംഭിക്കുന്നു

ഇപ്പോൾ കോൺഫിഗറേഷൻ ഫയൽ തയ്യാറാണ്, നിങ്ങൾ ഡയറക്ടറിയിൽ നിന്ന് അതിലേക്ക് ഒരു പ്രതീകാത്മക ലിങ്ക് ഉണ്ടാക്കേണ്ടതുണ്ട് /etc/nginx/sites-enabled/അതിനാൽ Nginx പുനരാരംഭിക്കുമ്പോൾ, അതിന്റെ ഉള്ളടക്കങ്ങൾ അതിന്റെ കോൺഫിഗറേഷനിൽ ഉൾപ്പെടുത്തും:

# ln -s /etc/nginx/sites-available/myvhost /etc/nginx/sites-enabled/myvhost

# mkdir /var/www/myvhost

സെർവർ പുനരാരംഭിക്കുക മാത്രമാണ് അവശേഷിക്കുന്നത്:

# /etc/init.d/nginx പുനരാരംഭിക്കുക

കൂടാതെ, എല്ലാ ക്രമീകരണങ്ങളും പിശകുകളില്ലാതെ പൂർത്തിയാക്കിയിട്ടുണ്ടെങ്കിൽ, നിങ്ങൾക്ക് ആദ്യത്തേതിലേക്ക് കണക്റ്റുചെയ്യാനാകും വെർച്വൽ സെർവർ Nginx ഒരു വെബ് ബ്രൗസർ ഉപയോഗിച്ച് സെർവർ റൂട്ട് ഡയറക്‌ടറിയിൽ ഫയലുകളുടെ ശൂന്യമായ സൂചിക കാണുക. ഡയറക്‌ടറിയിൽ രണ്ട് സ്റ്റാറ്റിക് html ഫയലുകൾ സ്ഥാപിക്കാൻ ശ്രമിക്കുക /var/www/myshostതുടർന്ന് നിങ്ങളുടെ ബ്രൗസറിൽ നിന്ന് അവ ആക്‌സസ് ചെയ്യുക.

അടുത്ത ലേഖനത്തിൽ നമ്മൾ Nginx-ലെ SSL സെർവർ കോൺഫിഗറേഷൻ നോക്കും.