అడ్మినిస్ట్రేటివ్ ప్యానెల్లు మరియు బ్యాకెండ్ సేవలను రక్షించడానికి ప్రాథమిక వినియోగదారు పేరు మరియు పాస్‌వర్డ్ ప్రామాణీకరణ ఒక సరళమైన మరియు సులభమైన మార్గం. మీ వెబ్‌సైట్‌లోని కొన్ని ప్రాంతాలను రక్షించడానికి Nginx ను కాన్ఫిగర్ చేయవచ్చు లేదా ఇతర సేవలను రక్షించడానికి రివర్స్ ప్రాక్సీగా కూడా ఉపయోగించవచ్చు.

HTTP ప్రామాణీకరణ ఎలా పని చేస్తుంది?

ప్రాథమిక HTTP ప్రామాణీకరణలో, సర్వర్‌లోని కొన్ని మార్గాలు నిరోధించబడ్డాయి మరియు వాటిని యాక్సెస్ చేయడానికి వినియోగదారు పేరు మరియు పాస్‌వర్డ్ అవసరం. ఉదాహరణకు, చాలా హోమ్ రౌటర్ల పరిపాలన ప్యానెల్లు ఈ విధంగా రక్షించబడతాయి; మీరు దీన్ని యాక్సెస్ చేయడానికి ప్రయత్నించినప్పుడు, బ్రౌజర్ ఆధారాలను అడుగుతూ ఒక డైలాగ్‌ను తెరుస్తుంది.

వినియోగదారు రక్షిత వనరును యాక్సెస్ చేయడానికి ప్రయత్నించినప్పుడు, సర్వర్ వినియోగదారుని పంపుతుంది WWW-Authenticate కలిసి శీర్షిక 401 Unauthorized ప్రత్యుత్తరం. క్లయింట్ తగిన వినియోగదారు పేరు మరియు పాస్‌వర్డ్‌ను నిల్వ చేస్తుంది Authorization శీర్షిక మరియు ఇది కీ ఫైల్‌తో సరిపోలితే, అవి కనెక్ట్ చేయడానికి అనుమతించబడతాయి.

ప్రాథమిక HTTP ప్రామాణీకరణకు కేబుల్ ద్వారా పాస్‌వర్డ్‌లను పంపడం అవసరం కాబట్టి, సర్వర్‌లో HTTPS / TLS ను ఏర్పాటు చేయడం అవసరం, లేకపోతే మధ్యలో ఎవరైనా పాస్‌వర్డ్‌ను స్పష్టంగా వాసన చూడవచ్చు. HTTPS కనెక్షన్‌ను గుప్తీకరిస్తుంది, ఇది ప్రసారానికి సురక్షితంగా చేస్తుంది. మీరు LetsEncrypt తో ఉచిత సర్టిఫికెట్‌ను సెటప్ చేయవచ్చు లేదా, మీరు ఒక ప్రైవేట్ సర్వర్‌ను రక్షించడానికి ప్రయత్నిస్తుంటే, ఒకదాన్ని సృష్టించి, మీరే సంతకం చేయండి.

ప్రాథమిక వినియోగదారు పేరు / పాస్‌వర్డ్ ప్రామాణీకరణ చాలా ప్రామాణీకరణ పథకాల్లో ఒకటి; OAuth 2.0 స్ట్రీమ్‌ల కోసం ఉపయోగించే బేరర్ టోకెన్‌లు మరొక సాధారణ నమూనా. మీరు JSON వెబ్ టోకెన్ మాడ్యూల్ ఉపయోగించి Nginx తో ఈ పథకాన్ని ఉపయోగించవచ్చు, కానీ పూర్తి సంస్థాపన వినియోగదారు పేరు / పాస్‌వర్డ్ ప్రామాణీకరణ కంటే చాలా క్లిష్టంగా ఉంటుంది.

పాస్వర్డ్ ఫైల్ను రూపొందించండి

మీరు ఉపయోగించవచ్చు htpasswd పాస్వర్డ్ ఫైళ్ళను రూపొందించడానికి. చాలా మటుకు ఇది ఇప్పటికే మీ సిస్టమ్‌లో ఇన్‌స్టాల్ చేయబడింది, అయితే అది కాకపోతే, మీరు దీన్ని ఇన్‌స్టాల్ చేయవచ్చు apache2-utils ప్యాకేజీ. (Nginx అపాచీ వలె అదే పాస్‌వర్డ్ ఆకృతిని ఉపయోగిస్తుంది):

sudo apt-get install apache2-utils

అమలు చేయడం ద్వారా క్రొత్త పాస్‌వర్డ్ ఫైల్‌ను రూపొందించండి htpasswd తో -c ఫ్లాగ్, ఈ సందర్భంలో, “అడ్మిన్” వినియోగదారు కోసం:

sudo htpasswd -c /etc/nginx/.htpasswd admin

పాస్‌వర్డ్‌ను నమోదు చేయమని మిమ్మల్ని అడుగుతారు, అది హాష్ చేయబడి నిల్వ చేయబడుతుంది /etc/nginx/.htpasswd. మీరు ఎక్కువ మంది వినియోగదారులను జోడించాలనుకుంటే, వదిలివేయండి -c క్రొత్త ఎంట్రీలను జోడించడానికి ఫ్లాగ్ చేయండి.

ప్రాథమిక HTTP ప్రామాణీకరణను ప్రారంభించండి

మీరు ఉపయోగించడం ద్వారా nginx లోని ఏదైనా మార్గాన్ని రక్షించవచ్చు auth_basic ఒక ప్రదేశంలో నిర్దేశకం. ఉదాహరణకు, పాస్‌వర్డ్ రక్షించడానికి /admin, మీరు ఈ స్థాన బ్లాక్‌ను సర్వర్ బ్లాక్ లోపల మీ ప్రధాన nginx కాన్ఫిగరేషన్ ఫైల్‌లో ఉంచారు (సాధారణంగా ఇది ఉంటుంది /etc/nginx/nginx.conf):

location /admin {
  try_files $uri $uri/ =404;
  auth_basic "Restricted Content";
  auth_basic_user_file /etc/nginx/.htpasswd;
}

ది auth_basic_user_file డైరెక్టివ్ మొదటి దశలో సృష్టించబడిన పాస్వర్డ్ ఫైల్ను సూచించాలి. మీరు ప్రత్యేకంగా ఏదైనా పేరు పెట్టవలసిన అవసరం లేదు, కాబట్టి మీరు వేర్వేరు మార్గాల కోసం వేర్వేరు పాస్‌వర్డ్ ఫైల్‌లను సృష్టించవచ్చు.

Nginx మీ కోసం మిగిలిన వాటిని నిర్వహించాలి. మార్పులను వర్తింపచేయడానికి పున art ప్రారంభించండి:

sudo service nginx restart

మరియు, మీ బ్రౌజర్‌లో రక్షిత మార్గాన్ని తనిఖీ చేయండి. మీరు పాస్‌వర్డ్‌ను స్వీకరించాలి మరియు మీరు దానిని అందించలేకపోతే యాక్సెస్‌ను తిరస్కరించాలి.

ప్రాక్సీ ప్రామాణీకరణను ఉపయోగిస్తోంది

ప్రాథమిక ప్రామాణీకరణ యొక్క సాధారణ ఉపయోగ సందర్భం విలోమ ప్రాక్సీ nginx తో బాహ్య వనరు యొక్క రక్షణ. ఇది సంపూర్ణంగా పనిచేస్తుంది auth_basicమరియు రెండింటినీ కలిపి ఉపయోగించడం చాలా సులభం:

location / {
  #//turn on auth for this location
  auth_basic "Restricted Content";
  auth_basic_user_file /etc/nginx/.htpasswd;

  #//normal proxy configuration
  proxy_http_version 1.1;
  proxy_pass_request_headers on;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Accept-Encoding "";

  proxy_pass https://;
  proxy_redirect default;
}

వినియోగదారు ప్రామాణీకరించే ముందు ప్రాక్సీకి ఏదైనా ఎంట్రీని తిరస్కరించడం ద్వారా ఇది పనిచేస్తుంది. ప్రామాణీకరించబడిన తర్వాత, nginx సాధారణంగా పనిచేస్తుంది.

అయితే, మీరు సర్వర్‌లోని రివర్స్ ప్రాక్సీ వెనుక ప్రామాణీకరించాలనుకుంటే, కాన్ఫిగరేషన్ మరింత క్లిష్టంగా ఉంటుంది. బదులుగా, వెబ్ సర్వర్‌లో మీ ఇన్‌పుట్‌ను ప్రాక్సీ చేయడానికి మీకు nginx అవసరం, ఉదాహరణకు, ఒక డేటాబేస్ను ప్రశ్నించవచ్చు లేదా సాధారణ పాస్‌వర్డ్ ఫైల్ కంటే క్లిష్టమైన తనిఖీలను చేయవచ్చు.

శీర్షికలను మరింత నేరుగా సవరించడానికి మీరు హెడర్-మరిన్ని మాడ్యూల్‌ను ఉపయోగించాల్సి ఉంటుంది:

location / {
  proxy_http_version 1.1;
  proxy_pass_request_headers on;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Accept-Encoding "";

  proxy_pass https://;
  proxy_redirect default;

  more_set_input_headers 'Authorization: $http_authorization';
  more_set_headers -s 401 'WWW-Authenticate: Basic realm="your_server.com"';
}

ప్రాక్సీ కాన్ఫిగరేషన్ తప్పిపోయిన వాస్తవం తప్ప అదే auth_basic ఎందుకంటే మేము nginx తో ప్రామాణీకరించడం ఇష్టం లేదు. ది more_set_input_headers డైరెక్టివ్ ఇక్కడ మ్యాజిక్ చేస్తోంది మరియు ఫైల్‌ను చేర్చడానికి వెబ్ సర్వర్‌తో కమ్యూనికేట్ చేసినప్పుడు హెడర్‌ను సెట్ చేస్తుంది $http_authorization క్లయింట్ నుండి పొందిన వేరియబుల్. ఈ విధంగా వినియోగదారు పేరు మరియు పాస్‌వర్డ్ nginx ద్వారా బ్యాకెండ్‌కు పంపబడతాయి.

తదుపరి పంక్తి మరింత క్లిష్టంగా ఉంటుంది; శీర్షికలను సెట్ చేసే సాధారణ మార్గం ఓవర్రైట్ చేస్తుంది realm nginx గుండా వెళ్ళినప్పుడు వేరియబుల్, ఇది అనువైనది కాదు. ఉపయోగించి more_set_headers దీన్ని ఉంచుతుంది మరియు కస్టమర్‌కు సరైన సమాచారాన్ని చూపుతుంది.

Source link