Erlang 21

httpd




erlang

httpd

मॉड्यूल

httpd

मॉड्यूल सारांश

HTTP सर्वर API

विवरण

RFC 2616 में परिभाषित HTTP 1.1 अनुपालन वेब सर्वर का कार्यान्वयन। वेब सर्वर प्रारंभ विकल्प, प्रशासनिक कार्य और एक इरलांग कॉलबैक एपीआई प्रदान करता है।

जानकारी का प्रकार

इस मॉड्यूल में एक से अधिक बार उपयोग की जाने वाली परिभाषाएँ टाइप करें:

boolean() = true | false

string() = ASCII अक्षरों की सूची

path() = string() फ़ाइल या निर्देशिका पथ का प्रतिनिधित्व करता है

ip_address() = {N1,N2,N3,N4} % IPv4 | {K1,K2,K3,K4,K5,K6,K7,K8} % IPv6

hostname() = string() एक मेजबान का प्रतिनिधित्व करता है, उदाहरण के लिए, "foo.bar.com"

property() = atom()

Erlang http सर्वर सेवा शुरू / बंद

Inets एप्लिकेशन शुरू करते समय या डायनेमिक रूप से रनटाइम में Inets एप्लिकेशन एपीआई inets:start(httpd, ServiceConfig) को कॉल करके प्रारंभ करने के लिए एक वेब सर्वर को कॉन्फ़िगर किया जा सकता है inets:start(httpd, ServiceConfig) या inets:start(httpd, ServiceConfig, How) , inets(3) देखें inets(3) । विन्यास विकल्प, जिसे गुण भी कहा जाता है, इस प्रकार हैं:

फ़ाइल गुण

जब वेब सर्वर को एप्लिकेशन प्रारंभ समय पर शुरू किया जाता है, तो संपत्तियों को एक कॉन्फ़िगरेशन फ़ाइल से प्राप्त किया जाना चाहिए जिसमें एक नियमित एर्लांग संपत्ति सूची हो सकती है, जो कि [{Option, Value}] , जहां Option = property() और Option = property() और Value = term() , एक पूर्ण विराम के बाद, या पीछे की संगतता के लिए, एक अपाचे जैसी कॉन्फ़िगरेशन फ़ाइल। यदि वेब सर्वर को रनटाइम पर गतिशील रूप से शुरू किया जाता है, तो एक फ़ाइल को अभी भी निर्दिष्ट किया जा सकता है, लेकिन संपूर्ण संपत्ति सूची भी।

{proplist_file, पथ ()}

यदि यह गुण परिभाषित किया गया है, तो Inets को इस फ़ाइल में परिभाषित अन्य सभी गुणों को खोजने की उम्मीद है। फ़ाइल में अनिवार्य गुणों के तहत सूचीबद्ध सभी गुण शामिल होने चाहिए।

{फ़ाइल पथ()}

यदि यह गुण परिभाषित किया गया है, तो Inets इस फ़ाइल में परिभाषित अन्य सभी गुणों को खोजने की उम्मीद करता है, जो अपाचे-जैसे सिंटैक्स का उपयोग करता है। फ़ाइल में अनिवार्य गुणों के तहत सूचीबद्ध सभी गुण शामिल होने चाहिए। अपाचे की तरह सिंटेक्स संपत्ति है, जिसे एक शब्द के रूप में लिखा गया है जहां प्रत्येक नया शब्द एक पूंजी के साथ शुरू होता है, उसके बाद एक सफेद-स्थान, उसके बाद मूल्य, एक नई रेखा होती है।

उदाहरण:

{server_root, "/urs/local/www"} -> ServerRoot /usr/local/www

प्रत्येक संपत्ति के लिए कुछ अपवादों को प्रलेखित किया जाता है जो अलग-अलग व्यवहार करते हैं, और विशेष मामले {directory, {path(), PropertyList}} और {security_directory, {Dir, PropertyList}} को निम्न रूप में दर्शाया जाता है:

	  
<Directory Dir>
 <Properties handled as described above> 
</Directory>
         
ध्यान दें

गुण proplist_file और file परस्पर अनन्य हैं। इसके अलावा अपाचे जैसे विकल्पों के रूप में नए गुणों का समर्थन नहीं किया जा सकता है, यह एक विरासत विशेषता है।

अनिवार्य गुण

{पोर्ट, पूर्णांक ()}

HTTP सर्वर जिस पोर्ट को सुनता है। यदि शून्य को पोर्ट के रूप में निर्दिष्ट किया जाता है, तो एक मनमाना उपलब्ध पोर्ट चुना जाता है और httpd:info/2 फ़ंक्शन httpd:info/2 का उपयोग यह निर्धारित करने के लिए किया जा सकता है कि किस पोर्ट को चुना गया था।

{server_name, string ()}

आपके सर्वर का नाम, आम तौर पर एक पूरी तरह से योग्य डोमेन नाम।

{server_root, पाथ ()}

सर्वर की होम डायरेक्टरी को परिभाषित करता है, जहां लॉग फाइल, और इसी तरह, स्टोर किया जा सकता है। अन्य गुणों में निर्दिष्ट सापेक्ष पथ इस निर्देशिका को संदर्भित करते हैं।

{document_root, path ()}

HTTP सर्वर पर उपलब्ध दस्तावेज़ों के लिए शीर्ष निर्देशिका को परिभाषित करता है।

संचार गुण

{bind_address, ip_address () | होस्टनाम () | कोई भी}

डिफ़ॉल्ट any any अपाचे जैसी कॉन्फ़िगरेशन फ़ाइल में * चिह्नित है।

{प्रोफ़ाइल, परमाणु ()}

HTTP सर्वर की विशिष्ट पहचान करने के लिए bind_address और port साथ उपयोग किया जाता है। यह एक वर्चुअलाइज्ड वातावरण में उपयोगी हो सकता है, जहां एक से अधिक सर्वर हो सकते हैं जिसमें एक ही bind_address और पोर्ट होता है। यदि यह गुण स्पष्ट रूप से सेट नहीं है, तो यह माना जाता है कि bind_address और port विशिष्ट रूप से HTTP सर्वर की पहचान करता है।

{सॉकेट_टाइप, ip_comm | {ip_comm, config :: proplist ()} | {निबंध, कॉन्फिगर :: प्रॉपलिस्ट ()}

ip_comm कॉन्फ़िगरेशन विकल्पों के लिए, gen_tcp:listen/2 देखें gen_tcp:listen/2 , httpd द्वारा आंतरिक रूप से उपयोग किए जाने वाले कुछ विकल्प सेट नहीं किए जा सकते हैं।

SSL कॉन्फ़िगरेशन विकल्पों के लिए, ssl:listen/2

डिफ़ॉल्ट ip_comm

{ipfamily, inet | inet6}

डिफ़ॉल्ट inet , विरासत विकल्प inet6fb4 अब समझ में नहीं आता है और inet में अनुवादित किया जाएगा।

{minimal_bytes_per_second, पूर्णांक ()}

यदि दिया जाता है, तो कनेक्शन के लिए प्रति सेकंड न्यूनतम बाइट सेट करता है।

यदि मान अप्रकाशित है, तो सॉकेट उस कनेक्शन के लिए बंद हो जाता है।

विकल्प "धीमे DoS" हमलों के जोखिम को कम करने के लिए अच्छा है।

Erlang वेब सर्वर एपीआई मॉड्यूल

{मॉड्यूल, [परमाणु ()]}

अनुरोधों को संभालते समय HTTP सर्वर का उपयोग करने वाले मॉड्यूल को परिभाषित करता है। डिफ़ॉल्ट [mod_alias, mod_auth, mod_esi, mod_actions, mod_cgi, mod_dir, mod_get, mod_head, mod_log, mod_disk_log] । ध्यान दें कि कुछ mod -मॉडल दूसरों पर निर्भर हैं, इसलिए ऑर्डर पूरी तरह से मनमाना नहीं हो सकता है। विवरण के लिए उपयोगकर्ता गाइड में Inets Web Server Modules देखें।

गुणों को सीमित करें

{अनुकूलित, परमाणु ()}

HTTP सर्वर व्यवहार को निष्क्रिय करने के लिए कॉलबैक मॉड्यूल HTTPd_custom_api देखें

{disable_chunked_transfer_encoding_send, बूलियन ()}

HTTP / 1.1 क्लाइंट को एक प्रतिक्रिया भेजते समय आपको chunked ट्रांसफर-एन्कोडिंग को अक्षम करने की अनुमति देता है। डिफ़ॉल्ट false

{Keep_alive, बूलियन ()}

सर्वर को निर्देश देता है कि जब क्लाइंट HTTP / 1.1 अनुपालन का दावा करता है तो लगातार कनेक्शन का उपयोग करें या नहीं। डिफ़ॉल्ट true

{Keep_alive_timeout, पूर्णांक ()}

कनेक्शन बंद करने से पहले क्लाइंट से बाद में अनुरोध के लिए सेकंड की संख्या प्रतीक्षा करता है। डिफ़ॉल्ट 150

{max_body_size, पूर्णांक ()}

HTTP अनुरोध के संदेश निकाय का आकार सीमित करता है। डिफ़ॉल्ट कोई सीमा नहीं है।

{max_clients, पूर्णांक ()}

समर्थित एक साथ अनुरोधों की संख्या को सीमित करता है। डिफ़ॉल्ट 150

{max_header_size, पूर्णांक ()}

HTTP अनुरोध के संदेश हेडर का आकार सीमित करता है। डिफ़ॉल्ट 10240

{max_content_length, पूर्णांक ()}

आने वाले अनुरोध में अधिकतम सामग्री-लंबाई, बाइट्स में। 413 से अधिक की सामग्री का अनुरोध स्थिति के साथ किया जाता है। डिफ़ॉल्ट 100000000 (100 एमबी) है।

{max_uri_size, पूर्णांक ()}

HTTP अनुरोध URI के आकार को सीमित करता है। डिफ़ॉल्ट कोई सीमा नहीं है।

{max_keep_alive_request, पूर्णांक ()}

एक ग्राहक एक कनेक्शन पर कर सकते हैं कि अनुरोधों की संख्या। जब सर्वर ने max_keep_alive_requests द्वारा परिभाषित अनुरोधों की संख्या पर प्रतिक्रिया दी है, तो सर्वर कनेक्शन बंद कर देता है। पंक्तिबद्ध अनुरोध होने पर भी सर्वर इसे बंद कर देता है। डिफ़ॉल्ट कोई सीमा नहीं है।

{max_client_body_chunk, पूर्णांक ()}

Mod_esi कॉलबैक को वितरित करने के लिए एक HTTP PUT या POST बॉडी डेटा की चैंकिंग को लागू करता है। ध्यान दें कि यह mod_cgi के लिए समर्थित नहीं है। डिफ़ॉल्ट कोई सीमा नहीं है ei पूरे शरीर को एक इकाई के रूप में वितरित किया जाता है, जो कि बहुत मेमोरी खपत हो सकती है। mod_esi(3)

प्रशासनिक गुण

{mime_types, [{MimeType, Extension}] | पथ ()}

MimeType = string() और Extension = string() । क्लाइंट को डिलीट की गई फाइलें RFC 1590 के अनुसार MIME टाइप की जाती हैं। फ़ाइल प्रत्यय फ़ाइल डिलीवरी से पहले MIME प्रकारों में मैप किए जाते हैं। फ़ाइल प्रत्यय और MIME प्रकारों के बीच मानचित्रण को Apache जैसी फ़ाइल के रूप में या सीधे संपत्ति सूची में निर्दिष्ट किया जा सकता है। इस तरह की फ़ाइल follwoing की तरह दिख सकती है:

# MIME type	Extension  
text/html	html htm
text/plain	asc txt

डिफ़ॉल्ट [{"html", "पाठ / html"}, {"htm", "पाठ / html"}] है।

{mime_type, string ()}

जब सर्वर को एक दस्तावेज़ प्रकार प्रदान करने के लिए कहा जाता है जो MIME प्रकार सेटिंग्स द्वारा निर्धारित नहीं किया जा सकता है, तो सर्वर इस डिफ़ॉल्ट प्रकार का उपयोग करता है।

{server_admin, string ()}

सर्वर द्वारा वापस किए गए किसी भी त्रुटि संदेश में शामिल किए जाने वाले सर्वर व्यवस्थापक के ईमेल-पते को परिभाषित करता है।

{server_tokens, कोई नहीं | ठेस | प्रमुख | नाबालिग | न्यूनतम | os | पूर्ण | {निजी, स्ट्रिंग ()}

सर्वर हेडर के मूल्य के रूप को परिभाषित करता है।

उदाहरण: Inets के संस्करण को मान Inets है, सर्वर हेडर स्ट्रिंग सर्वर-टोकन के विभिन्न मूल्यों के लिए निम्नानुसार देख सकता है:

none

""% A सर्वर: हेडर उत्पन्न नहीं होगा

prod

"Inets"

major

"Inets / 5"

minor

"Inets / 5.8"

minimal

"Inets / 5.8.1"

os

"इनलेट्स / 5.8.1 (यूनिक्स)"

full

"इनसेट / 5.8.1 (यूनिक्स / लिनक्स) ओटीपी / आर 15 बी"

{private, "foo/bar"}

"Foo / बार"

डिफ़ॉल्ट रूप से, मान पहले जैसा है, जो कि minimal

{log_format, सामान्य | संयुक्त}

यदि लॉग लॉग को common लॉग प्रारूप या विस्तारित सामान्य लॉग प्रारूप के अनुसार लिखा जाना है, तो परिभाषित करता है। common प्रारूप एक लाइन इस तरह दिख रही है: remotehost rfc931 authuser [date] "request" status bytes

यहाँ:

remotehost
रिमोट।
rfc931
क्लाइंट का दूरस्थ उपयोगकर्ता नाम ( RFC 931 )।
authuser
प्रमाणीकरण के लिए उपयोग किया जाने वाला उपयोगकर्ता नाम।
[date]
अनुरोध का दिनांक और समय ( RFC 1123 )।
"request"
क्लाइंट ( RFC 1945 ) की ओर से अनुरोध लाइन।
status
HTTP स्थिति कोड क्लाइंट को वापस आ गया ( RFC 1945 )।
bytes
हस्तांतरित दस्तावेज़ की सामग्री-लंबाई।

combined प्रारूप इस तरह दिखने वाली एक पंक्ति है: remotehost rfc931 authuser [date] "request" status bytes "referer" "user_agent"

पहले के अलावा:

"referer"
URL अनुरोध करने से पहले क्लाइंट जिस पर था (यदि यह निर्धारित नहीं किया जा सकता है, तो इस क्षेत्र में एक शून्य चिह्न रखा गया है)।
"user_agent"
ग्राहक जिस सॉफ़्टवेयर का उपयोग करने का दावा करता है (यदि यह निर्धारित नहीं किया जा सकता है, तो इस क्षेत्र में एक शून्य चिह्न रखा गया है)।

यह mod_log और mod_disk_log द्वारा लिखे गए प्रवेश लॉग को प्रभावित करता है।

{error_log_format, सुंदर | कॉम्पैक्ट}

डिफ़ॉल्ट pretty । यदि त्रुटि लॉग का अर्थ सीधे मानव द्वारा पढ़ा जाना है, तो pretty सबसे अच्छा विकल्प है।

pretty पास इसके अनुरूप एक प्रारूप है:

io:format("[~s] ~s, reason: ~n ~p ~n~n", [Date, Msg, Reason]).

compact इसके अनुरूप एक प्रारूप है:

io:format("[~s] ~s, reason: ~w ~n", [Date, Msg, Reason]).

यह mod_log और mod_disk_log द्वारा लिखित त्रुटि लॉग को प्रभावित करता है।

URL उपनाम गुण - mod_alias की आवश्यकता है

{उपनाम, {उपनाम, RealName}}

Alias = string() और RealName = string() alias document_root स्थान के बजाय स्थानीय फ़ाइल सिस्टम में संग्रहीत करने की अनुमति देता है। Url-path के साथ शुरू होने वाले पथ का URL उदाहरण के लिए, निर्देशिका-फ़ाइल नाम से शुरू होने वाली स्थानीय फ़ाइलों पर मैप किया जाता है:

{alias, {"/image", "/ftp/pub/image"}}

Http://your.server.org/image/foo.gif पर पहुंच फ़ाइल /ftp/pub/image/foo.gif को संदर्भित करेगी।

{re_write, {Re, प्रतिस्थापन}}

Re = string() और Replacement = string() re_write दस्तावेज़ को स्थानीय फ़ाइल सिस्टम में document_root स्थान के बजाय संग्रहीत करने की अनुमति देता है। URL फिर से लिखे गए हैं re:replace/3 स्थानीय फ़ाइल सिस्टम में एक पथ बनाने के re:replace/3 , उदाहरण के लिए:

{re_write, {"^/[~]([^/]+)(.*)$", "/home/\\1/public\\2"}}

Http://your.server.org/~bob/foo.gif का उपयोग फ़ाइल /home/bob/public/foo.gif फ़ाइल को संदर्भित करेगा। अपाचे जैसी कॉन्फ़िगरेशन फ़ाइल में, Re को Replacement से एक सिंगल स्पेस के साथ अलग किया जाता है, और जैसा कि अपेक्षित बैकस्लैश को बैकस्लैश से बचने की आवश्यकता नहीं होती है, वही उदाहरण बन जाएगा:

ReWrite ^/[~]([^/]+)(.*)$ /home/\1/public\2

Replacement में अनुगामी स्थान से सावधान रहें। यदि आपके पास Re , उपयोग, उदाहरण के लिए, वर्ण एन्कोडिंग \040 में एक स्थान होना चाहिए, तो re(3) देखें re(3)

{directory_index, [string ()]}

अगर कोई क्लाइंट निर्देशिका नाम के अंत में / a का उपयोग करके निर्देशिका का अनुरोध करता है, तो निर्देशिका_इंडेक्स संसाधनों की एक सूची निर्दिष्ट करता है। file निर्देशिका में एक फ़ाइल का नाम दर्शाती है। कई फाइलें दी जा सकती हैं, उदाहरण के लिए, सर्वर जिस स्थिति में पहली बार वापस आता है, उदाहरण के लिए:

{directory_index, ["index.html", "welcome.html"]}

यदि अनुक्रमणिका है तो http://your.server.org/docs/ पर पहुंचें http://your.server.org/docs/index.html या http://your.server.org/docs/welcome.html। html मौजूद नहीं है।

CGI गुण - mod_cgi की आवश्यकता है

{script_alias, {उपनाम, RealName}}

Alias = string() और RealName = string() । संपत्ति alias के समान व्यवहार करें, सिवाय इसके कि वे लक्ष्य निर्देशिका को भी CGI लिपियों के रूप में चिह्नित करें। यूआरएल-पथ के साथ शुरू होने वाले मार्ग उदाहरण के लिए निर्देशिका-फ़ाइल नाम से शुरू होने वाली स्क्रिप्ट पर मैप किए जाते हैं:

{script_alias, {"/cgi-bin/", "/web/cgi-bin/"}}

Http://your.server.org/cgi-bin/foo का उपयोग करने से सर्वर स्क्रिप्ट / वेब / cgi-bin / foo को चलाएगा।

{script_re_write, {Re, प्रतिस्थापन}}

Re = string() और Replacement = string() । प्रॉपर्टी re_write के समान व्यवहार करें, सिवाय इसके कि वे सीजीआई स्क्रिप्ट वाले लक्ष्य निर्देशिका को भी चिह्नित करें। यूआरएल-पथ के साथ शुरू होने वाले मार्ग उदाहरण के लिए निर्देशिका-फ़ाइल नाम से शुरू होने वाली स्क्रिप्ट पर मैप किए जाते हैं:

{script_re_write, {"^/cgi-bin/(\\d+)/", "/web/\\1/cgi-bin/"}}

Http://your.server.org/cgi-bin/17/foo पर पहुंच के कारण सर्वर स्क्रिप्ट / वेब / 17 / cgi-bin / foo को चलाएगा।

{script_nocache, बूलियन ()}

यदि script_nocache सही पर सेट true , तो डिफ़ॉल्ट रूप से HTTP सर्वर पृष्ठ को कैशिंग करने से प्रॉक्सी को रोकने के लिए आवश्यक शीर्ष लेख फ़ील्ड जोड़ता है। आम तौर पर यह पसंद किया जाता है। false करने के लिए डिफ़ॉल्ट।

{script_time, पूर्णांक ()}

सेकंड में समय वेब सर्वर स्क्रिप्ट से डेटा के प्रत्येक भाग के बीच प्रतीक्षा करता है। यदि सीजीआई स्क्रिप्ट टाइमआउट से पहले कोई डेटा नहीं देती है, तो क्लाइंट से कनेक्शन बंद हो जाता है। डिफ़ॉल्ट 15

{क्रिया, {MimeType, CgiScript}} - के लिए mod_action की आवश्यकता होती है

MimeType = string() और CgiScript = string() । जब भी एक निश्चित MIME प्रकार की फ़ाइल का अनुरोध किया जाता है, तो कार्रवाई एक CGI स्क्रिप्ट को सक्रिय करने वाली action जोड़ती है। यह मानक CGI PATH_INFO और PATH_TRANSLATED पर्यावरण चर का उपयोग करके अनुरोधित दस्तावेज़ का URL और फ़ाइल पथ प्रचारित करता है।

उदाहरण:

{action, {"text/plain", "/cgi-bin/log_and_deliver_text"}}
{स्क्रिप्ट, {मेथड, CgiScript}} - के लिए mod_action की आवश्यकता होती है

Method = string() और CgiScript = string() । जब भी किसी फ़ाइल को एक निश्चित HTTP विधि का उपयोग करने का अनुरोध किया जाता है, तो स्क्रिप्ट एक CGI स्क्रिप्ट को सक्रिय करने वाली एक क्रिया को जोड़ता है। विधि या तो GET या POST है, जैसा कि RFC 1945 में परिभाषित किया RFC 1945 । यह मानक CGI PATH_INFO और PATH_TRANSLATED पर्यावरण चर का उपयोग करके अनुरोधित दस्तावेज़ का URL और फ़ाइल पथ प्रचारित करता है।

उदाहरण:

{script, {"PUT", "/cgi-bin/put"}}

ईएसआई गुण - mod_esi की आवश्यकता है

{erl_script_alias, {URLPath, [AllowedModule]}}

URLPath = string() और AllowedModule = atom() erl_script_alias erl योजना स्क्रिप्ट के रूप में url-path से मेल खाते सभी URL को चिह्नित करता है। एक मिलान URL को एक विशिष्ट मॉड्यूल और फ़ंक्शन में मैप किया जाता है, उदाहरण के लिए:

{erl_script_alias, {"/cgi-bin/example", [httpd_example]}}

Http://your.server.org/cgi-bin/example/httpd_example:yahoo का अनुरोध httpd_example: yahoo / 3 या, यदि मौजूद नहीं है, तो httpd_example: yahoo / 2 और http: // आपका होगा। server.org/cgi-bin/example/other:yahoo को निष्पादित करने की अनुमति नहीं दी जाएगी।

{erl_script_nocache, बूलियन ()}

यदि erl_script_nocache सही पर सेट true , तो सर्वर पृष्ठ पर कैशिंग से प्रॉक्सी को रोकने से HTTP हेडर फ़ील्ड जोड़ता है। यह आम तौर पर गतिशील सामग्री के लिए एक अच्छा विचार है, क्योंकि सामग्री अक्सर प्रत्येक अनुरोध के बीच भिन्न होती है। डिफ़ॉल्ट false

{erl_script_timeout, पूर्णांक ()}

यदि erl_script_timeout सेकंड में समय सेट करता है, तो सर्वर mod_esi:deliver/2 माध्यम से वितरित किए जाने वाले प्रत्येक डेटा के बीच इंतजार करता है mod_esi:deliver/2 । डिफ़ॉल्ट 15 । यह केवल उन स्क्रिप्ट्स के लिए प्रासंगिक है जो erl योजना का उपयोग करती हैं।

{eval_script_alias, {URLPath, [AllowedModule]}}

URLPath = string() और AllowedModule = atom() erl_script_alias रूप में ही लेकिन स्क्रिप्ट के लिए eval योजना का उपयोग कर। यह केवल पश्चगामी संगतता के लिए समर्थित है। निष्कासन योजना को हटा दिया गया है।

लॉग गुण - mod_log की आवश्यकता है

{error_log, पथ ()}

सर्वर त्रुटियों को लॉग करने के लिए उपयोग की जाने वाली त्रुटि लॉग फ़ाइल का फ़ाइल नाम परिभाषित करता है। यदि फ़ाइल नाम स्लैश (/) से शुरू नहीं होता है, तो इसे server_root सापेक्ष माना जाता है।

{Security_log, पथ ()}

सुरक्षा घटनाओं को लॉग करने के लिए उपयोग की जाने वाली प्रवेश लॉग फ़ाइल का फ़ाइल नाम परिभाषित करता है। यदि फ़ाइल नाम स्लैश (/) से शुरू नहीं होता है, तो इसे server_root सापेक्ष माना जाता है।

{transfer_log, पथ ()}

आने वाले अनुरोधों को लॉग करने के लिए उपयोग की जाने वाली प्रवेश फ़ाइल का फ़ाइल नाम निर्धारित करता है। यदि फ़ाइल नाम स्लैश (/) से शुरू नहीं होता है, तो इसे server_root सापेक्ष माना जाता है।

डिस्क लॉग गुण - mod_disk_log की आवश्यकता है

{disk_log_format, आंतरिक | बाहरी}

लॉग फ़ाइलों के फ़ाइल स्वरूप को परिभाषित करता है। विवरण के लिए disk_log देखें। यदि आंतरिक फ़ाइल स्वरूप का उपयोग किया जाता है, तो लॉग फ़ाइल क्रैश के बाद मरम्मत की जाती है। जब एक लॉग फ़ाइल की मरम्मत की जाती है, तो डेटा गायब हो सकता है। जब बाहरी फ़ाइल स्वरूप का उपयोग किया जाता है, तो लॉग फ़ाइल के टूटने पर httpd प्रारंभ नहीं होता है। डिफ़ॉल्ट external

{error_disk_log, पथ ()}

सर्वर डिस्क लॉग करने के लिए उपयोग की जाने वाली ( disk_log(3) ) त्रुटि लॉग फ़ाइल का फ़ाइल नाम परिभाषित करता है। यदि फ़ाइल नाम स्लैश (/) से शुरू नहीं होता है, तो इसे server_root सापेक्ष माना जाता है।

{error_disk_log_size, {MaxBytes, MaxFiles}}

MaxBytes = integer() और MaxFiles = integer() disk_log(3) के गुणों को परिभाषित करता है ( disk_log(3) ) त्रुटि लॉग फ़ाइल। यह फ़ाइल टाइप रैप लॉग की है और अधिकतम बाइट्स प्रत्येक फ़ाइल के लिए लिखी गई है और पहली फ़ाइल को छोटा और पुन: उपयोग करने से पहले अधिकतम फ़ाइलों का उपयोग किया जाता है।

{Security_disk_log, पथ ()}

( disk_log(3) ) एक्सेस लॉग फाइल के फाइलनाम को आने वाली सुरक्षा घटनाओं को परिभाषित करता है, जो कि प्रमाणित अनुरोध है। यदि फ़ाइल नाम स्लैश (/) से शुरू नहीं होता है, तो इसे server_root सापेक्ष माना जाता है।

{Security_disk_log_size, {MaxBytes, MaxFiles}}

MaxBytes = integer() और MaxFiles = integer() disk_log(3) एक्सेस लॉग फ़ाइल के गुणों को परिभाषित करता है। यह फ़ाइल टाइप रैप लॉग की है और अधिकतम बाइट्स प्रत्येक फ़ाइल के लिए लिखी गई है और पहली फ़ाइल को छोटा और पुन: उपयोग करने से पहले अधिकतम फ़ाइलों का उपयोग किया जाता है।

{transfer_disk_log, पथ ()}

आवक अनुरोधों के लॉग फ़ाइल फ़ाइल ( disk_log(3) ) के फ़ाइल नाम को परिभाषित करता है। यदि फ़ाइल नाम स्लैश (/) से शुरू नहीं होता है, तो इसे server_root सापेक्ष माना जाता है।

{transfer_disk_log_size, {MaxBytes, MaxFiles}}

MaxBytes = integer() और MaxFiles = integer() disk_log(3) एक्सेस लॉग फ़ाइल के गुणों को परिभाषित करता है। यह फ़ाइल टाइप रैप लॉग की है और अधिकतम बाइट्स प्रत्येक फ़ाइल के लिए लिखी गई है और पहली फ़ाइल को छोटा और पुन: उपयोग करने से पहले अधिकतम फ़ाइलों का उपयोग किया जाता है।

प्रमाणीकरण गुण - mod_auth की आवश्यकता है

{निर्देशिका, {पथ (), [{संपत्ति (), शब्द ()}}}}

निर्देशिका के लिए गुण निम्नानुसार हैं:

{allow_from, सभी | [RegxpHostString]}

उदाहरण के लिए, मेजबानों के एक सेट को दी गई निर्देशिका तक पहुँच को परिभाषित करता है:

{allow_from, ["123.34.56.11", "150.100.23"]}

होस्ट 123.34.56.11 और 150.100.23 सबनेट पर सभी मशीनों को एक्सेस की अनुमति है।

{deny_from, सभी | [RegxpHostString]}

किसी दिए गए निर्देशिका तक पहुँच से वंचित रहने के लिए मेजबानों के एक सेट को परिभाषित करता है,

{deny_from, ["123.34.56.11", "150.100.23"]}

होस्ट 123.34.56.11 और 150.100.23 सबनेट पर सभी मशीनों को एक्सेस की अनुमति नहीं है।

{od_type, सादा | dets | mnesia}

प्रमाणीकरण डेटाबेस का प्रकार सेट करता है जो निर्देशिका के लिए उपयोग किया जाता है। विभिन्न तरीकों के बीच महत्वपूर्ण अंतर यह है कि जब मानेसिया और डेट्स का उपयोग किया जाता है तो गतिशील डेटा को बचाया जा सकता है। इस संपत्ति को Apache- जैसी कॉन्फ़िगरेशन फ़ाइलों में AuthDbType कहा जाता है।

{od_user_file, पथ ()}

उपयोगकर्ता प्रमाणीकरण के लिए उपयोगकर्ताओं और पासवर्डों की सूची वाली फ़ाइल का नाम सेट करता है। फ़ाइलनाम या तो निरपेक्ष हो सकता है या server_root सापेक्ष हो सकता है। यदि सादा संग्रहण विधि का उपयोग करते हैं, तो यह फ़ाइल एक सादा पाठ फ़ाइल होती है, जिसमें प्रत्येक पंक्ति में एक उपनिवेश के बाद एक यूज़रनेम होता है, उसके बाद नॉन-एन्क्रिप्टेड पासवर्ड होता है। यदि उपयोगकर्ता नाम दोहराए जाते हैं, तो व्यवहार अपरिभाषित है।

उदाहरण:

ragnar:s7Xxv7
edward:wwjau8 

यदि Dets संग्रहण विधि का उपयोग किया जाता है, तो उपयोगकर्ता डेटाबेस Dets द्वारा बनाए रखा जाता है और उसे हाथ से संपादित नहीं किया जाना चाहिए। उपयोगकर्ता डेटाबेस बनाने / संपादित करने के लिए मॉड्यूल mod_auth में एपीआई कार्यों का उपयोग करें। इस निर्देश की उपेक्षा की जाती है यदि मानेसिया भंडारण विधि का उपयोग किया जाता है। सुरक्षा कारणों से, सुनिश्चित करें कि वेब सर्वर के डॉक्यूमेंट ट्री के बाहर auth_user_file संग्रहीत है। यदि इसे उस निर्देशिका में रखा जाता है जिसे वह संरक्षित करता है, तो ग्राहक इसे डाउनलोड कर सकते हैं।

{od_group_file, पथ ()}

उपयोगकर्ता प्रमाणीकरण के लिए उपयोगकर्ता समूहों की सूची वाली फ़ाइल का नाम सेट करता है। फ़ाइलनाम या तो निरपेक्ष हो सकता है या server_root सापेक्ष हो सकता है। यदि सादा संग्रहण विधि का उपयोग किया जाता है, तो समूह फ़ाइल एक सादा पाठ फ़ाइल होती है, जहाँ प्रत्येक पंक्ति में एक समूह का नाम होता है जिसमें एक बृहदान्त्र होता है, जिसके बाद सदस्य उपयोगकर्ता नाम रिक्त स्थान द्वारा अलग किए जाते हैं।

उदाहरण:

group1: bob joe ante

यदि Dets संग्रहण विधि का उपयोग किया जाता है, तो समूह डेटाबेस Dets द्वारा बनाए रखा जाता है और उसे हाथ से संपादित नहीं किया जाना चाहिए। समूह डेटाबेस बनाने / संपादित करने के लिए मॉड्यूल mod_auth लिए API का उपयोग करें। इस निर्देश की उपेक्षा की जाती है यदि मानेसिया भंडारण विधि का उपयोग किया जाता है। सुरक्षा कारणों के लिए, सुनिश्चित करें कि वेब सर्वर के डॉक्यूमेंट ट्री के बाहर auth_group_file संग्रहीत है। यदि इसे उस निर्देशिका में रखा जाता है जिसे वह संरक्षित करता है, तो ग्राहक इसे डाउनलोड कर सकते हैं।

{dif_name, string ()}

एक डायरेक्टरी के लिए प्राधिकरण क्षेत्र (ऑक्टो-डोमेन) का नाम सेट करता है। यह स्ट्रिंग क्लाइंट को सूचित करती है कि किस यूज़रनेम और पासवर्ड का उपयोग करना है।

{dif_access_password, string ()}

यदि "NoPassword" के अलावा अन्य पर सेट है, तो पासवर्ड सभी API कॉल के लिए आवश्यक है। यदि पासवर्ड "DummyPassword" पर सेट है, तो पासवर्ड को किसी भी अन्य एपीआई कॉल से पहले बदल दिया जाना चाहिए। प्रमाणिक डेटा को सुरक्षित करने के लिए, वेब सर्वर शुरू होने के बाद पासवर्ड को बदलना होगा। अन्यथा यह कॉन्फ़िगरेशन फ़ाइल में स्पष्ट पाठ में लिखा गया है।

{requ_user, [string ()]}

गुप्त पासवर्ड का उपयोग करके किसी दिए गए निर्देशिका तक पहुंच प्रदान करने के लिए उपयोगकर्ताओं को परिभाषित करता है।

{आवश्यकता_ग्रुप, [स्ट्रिंग ()]}

गुप्त पासवर्ड का उपयोग करके किसी दिए गए निर्देशिका तक पहुंच प्रदान करने के लिए उपयोगकर्ताओं को परिभाषित करता है।

Htaccess प्रमाणीकरण गुण - mod_htaccess की आवश्यकता है

{access_files, [पथ ()]}

उन फ़ाइलनामों को निर्दिष्ट करता है जो एक्सेस फ़ाइलों के लिए उपयोग किए जाते हैं। जब कोई अनुरोध आता है, तो इस पैरामीटर द्वारा निर्दिष्ट नामों के साथ फ़ाइलों के बाद अनुरोधित परिसंपत्ति के मार्ग में प्रत्येक निर्देशिका की खोज की जाती है। यदि ऐसी कोई फ़ाइल मिलती है, तो फ़ाइल पार्स हो जाती है और इसमें निर्दिष्ट प्रतिबंध अनुरोध पर लागू होते हैं।

सुरक्षा गुण - mod_security की आवश्यकता है

{security_directory, {पथ (), [{संपत्ति (), शब्द ()}]}}

सुरक्षा निर्देशिका के लिए गुण निम्नानुसार हैं:

{data_file, पाथ ()}

सुरक्षा डेटा फ़ाइल का नाम। फ़ाइल नाम या तो निरपेक्ष हो सकता है या server_root सापेक्ष हो सकता है। मॉड्यूल mod_security लिए लगातार डेटा संग्रहीत करने के लिए इस फ़ाइल का उपयोग किया जाता है।

{max_retries, पूर्णांक ()}

उपयोगकर्ता द्वारा अवरोधित किए जाने से पहले उपयोगकर्ता को प्रमाणित करने के लिए अधिकतम प्रयास निर्दिष्ट करता है। यदि कोई उपयोगकर्ता ब्लॉक करते समय सफलतापूर्वक प्रमाणित होता है, तो उपयोगकर्ता को सर्वर से 403 (निषिद्ध) प्रतिक्रिया मिलती है। यदि उपयोगकर्ता अवरुद्ध होने के दौरान विफल प्रयास करता है, तो सुरक्षा कारणों से सर्वर 401 (अनधिकृत) देता है। डिफ़ॉल्ट 3 । अनंत पर सेट किया जा सकता है।

{block_time, पूर्णांक ()}

निर्दिष्ट करता है कि उपयोगकर्ता कितने मिनट अवरुद्ध है। इस समय के बीत जाने के बाद, उपयोगकर्ता स्वचालित रूप से पहुंच प्राप्त कर लेता है। डिफ़ॉल्ट 60

{fail_expire_time, पूर्णांक ()}

निर्दिष्ट करता है कि विफल उपयोगकर्ता प्रमाणीकरण मिनटों की संख्या को याद किया जाता है। यदि कोई उपयोगकर्ता इस समय के बीत जाने के बाद प्रमाणित करता है, तो पिछली विफल प्रमाणीकरणों को भुला दिया जाता है। डिफ़ॉल्ट 30

{dif_timeout, पूर्णांक ()}
निर्दिष्ट करता है कि एक सफल उपयोगकर्ता प्रमाणीकरण सेकंड की संख्या को याद किया जाता है। यह समय बीत जाने के बाद, प्रमाणीकरण अब रिपोर्ट नहीं किया गया है। डिफ़ॉल्ट 30

निर्यात

जानकारी (Pid) ->
जानकारी (पीआईडी, गुण) -> [{विकल्प, मूल्य}]

प्रकार

HTTP सर्वर के बारे में जानकारी प्राप्त करता है। जब केवल पीड के साथ बुलाया जाता है, तो सभी गुण प्राप्त होते हैं। जब विशिष्ट गुणों की सूची के साथ कहा जाता है, तो वे प्राप्त होते हैं। उपलब्ध गुण सर्वर के प्रारंभ विकल्प के समान हैं।

ध्यान दें

पीआईडी inets:start/[2,3] से लौटाया गया पिड है inets:start/[2,3] । फॉर्म inets:services/0 भी प्राप्त किया जा सकता है inets:services/0 और inets:services_info/0 , inets(3)

जानकारी (पता, पोर्ट) ->
जानकारी (पता, पोर्ट, प्रोफाइल) ->
जानकारी (पता, पोर्ट, प्रोफ़ाइल, गुण) -> [{विकल्प, मूल्य}]
जानकारी (पता, पोर्ट, गुण) -> [{विकल्प, मूल्य}]

प्रकार

HTTP सर्वर के बारे में जानकारी प्राप्त करता है। जब केवल Address और Port साथ कॉल किया जाता है, तो सभी संपत्तियों को प्राप्त किया जाता है। जब विशिष्ट गुणों की सूची के साथ कहा जाता है, तो वे प्राप्त होते हैं। उपलब्ध गुण सर्वर के प्रारंभ विकल्प के समान हैं।

ध्यान दें

पता IP पता होना चाहिए और hostname नहीं हो सकता है।

reload_config (कॉन्फ़िग, मोड) -> ठीक | {त्रुटि, कारण}

प्रकार

सर्वर को पुनरारंभ किए बिना HTTP सर्वर कॉन्फ़िगरेशन को पुनः लोड करें। आवक अनुरोधों को पुनः लोड समय के दौरान एक अस्थायी डाउन संदेश के साथ उत्तर दिया जाता है।

ध्यान दें

उपलब्ध गुण सर्वर के प्रारंभ विकल्प के समान हैं, लेकिन गुण bind_address और port परिवर्तित नहीं किए जा सकते।

यदि मोड परेशान कर रहा है, तो सर्वर को जबरदस्ती ब्लॉक किया जाता है, सभी चल रहे अनुरोध समाप्त हो जाते हैं, और पुनः लोड तुरंत शुरू होता है। यदि मोड गैर-परेशान है, तो कोई नया कनेक्शन स्वीकार नहीं किया जाता है, लेकिन पुनः लोड होने से पहले चल रहे अनुरोधों को पूरा करने की अनुमति है।

Erlang वेब सर्वर एपीआई डेटा प्रकार

Erlang वेब सर्वर API डेटा प्रकार इस प्रकार हैं:

      ModData = #mod{}

      -record(mod, {
	data = [],
	socket_type = ip_comm,
	socket, 
	config_db,
	method,
	absolute_uri,
	request_uri,
	http_version,
	request_line,
	parsed_header = [],
	entity_body,
	connection
}).

आपके कॉलबैक-मॉड्यूल उपयोग में रिकॉर्ड को स्वीकार करने के लिए:

-include_lib("inets/include/httpd.hrl").

रिकॉर्ड mod क्षेत्र निम्नलिखित अर्थ रखते हैं:

data

मॉड्यूल के बीच डेटा का प्रचार करने के लिए टाइप [{InteractionKey,InteractionValue}] का उपयोग किया जाता है। फ़ंक्शन प्रकार की घोषणाओं में चित्रित interaction_data()

socket_type

socket_type() इंगित करता है कि यह IP सॉकेट है या ssl सॉकेट।

socket

सॉकेट, स्वरूप में ip_comm या ssl , जो socket_type पर निर्भर करता है।

config_db

कॉन्फ़िगरेशन फ़ाइल निर्देश एक ईटीएस तालिका में कुंजी-मूल्य ट्यूपल्स के रूप में संग्रहीत होते हैं। फ़ंक्शन प्रकार की घोषणाओं में चित्रित config_db()

method

टाइप करें "GET" | "POST" | "HEAD" | "TRACE" "GET" | "POST" | "HEAD" | "TRACE" "GET" | "POST" | "HEAD" | "TRACE" , यानी HTTP विधि।

absolute_uri

यदि अनुरोध HTTP / 1.1 अनुरोध है, तो URI पूर्ण URI प्रारूप में हो सकता है। उस स्थिति में, httpd इस क्षेत्र में निरपेक्ष URI को बचाता है। एक निरपेक्ष URI का एक उदाहरण है "http://ServerName:Part/cgi-bin/find.pl?person=jocke"

request_uri

"/cgi-bin/find.pl?person=jocke" Request-URI को RFC 1945 में परिभाषित किया RFC 1945 , उदाहरण के लिए, "/cgi-bin/find.pl?person=jocke"

http_version

अनुरोध का HTTP संस्करण, अर्थात, "HTTP / 0.9", "HTTP / 1.0", या "HTTP / 1.1"।

request_line

RFC 1945 में परिभाषित Request-Line , उदाहरण के लिए, "GET /cgi-bin/find.pl?person=jocke HTTP/1.0"

parsed_header
[{HeaderKey,HeaderValue}] टाइप करें। parsed_header में HTTP-रिक्वेस्ट से सभी HTTP हेडर फ़ील्ड्स को कुंजी-मूल्य ट्यूपल्स के रूप में एक सूची में संग्रहीत किया जाता है। सभी शीर्ष लेख फ़ील्ड की सूची के लिए RFC 2616 देखें। उदाहरण के लिए, दिनांक फ़ील्ड को {"date","Wed, 15 Oct 1997 14:35:17 GMT"} रूप में संग्रहीत किया जाता है। RFC 2616 परिभाषित करता है कि HTTP एक केस-असंवेदनशील प्रोटोकॉल है और हेडर फ़ील्ड लोअर केस या अपर केस में हो सकता है। httpd यह सुनिश्चित करता है कि सभी शीर्ष लेख फ़ील्ड नाम निचले मामले में हैं।
entity_body

RFC 2616 में परिभाषित entity-Body , उदाहरण के लिए, POST विधि का उपयोग करके CGI स्क्रिप्ट से भेजा गया डेटा।

connection

true | false true | false । यदि true सेट किया जाता true , तो क्लाइंट का कनेक्शन एक स्थायी कनेक्शन है और अनुरोध परोसने पर बंद नहीं होता है।

Erlang वेब सर्वर एपीआई कॉलबैक फ़ंक्शन

निर्यात

मॉड्यूल: करना (मोडडेटा) -> {आगे बढ़ना, ओल्डडाटा} | {आगे बढ़ें, न्यूडाटा} | {ब्रेक, न्यूडाटा} | किया हुआ

प्रकार

जब एक वैध अनुरोध httpd पर पहुंचता है, तो यह मॉड्यूल के कॉन्फ़िगरेशन विकल्प द्वारा परिभाषित प्रत्येक मॉड्यूल में do/1 कहता do/1 । फ़ंक्शन अन्य मॉड्यूल या एक प्रतिक्रिया के लिए डेटा उत्पन्न कर सकता है जिसे क्लाइंट को वापस भेजा जा सकता है।

ModData में फ़ील्ड data एक सूची है। यह सूची अंतिम कॉल करने के do/1 से दी गई सूची है।

Body HTTP रिस्पांस का शरीर है जिसे क्लाइंट को वापस भेजा जाता है। संदेश के लिए एक उपयुक्त शीर्ष लेख जोड़ा जाता है। StatusCode प्रतिक्रिया की स्थिति कोड है, उचित मानों के लिए RFC 2616 देखें।

Head HTTP हेडर फ़ील्ड्स की एक प्रमुख मूल्य सूची है। सर्वर इस डेटा से एक HTTP हेडर बनाता है। प्रत्येक शीर्ष लेख फ़ील्ड के लिए उचित मान के लिए RFC 2616 देखें। यदि क्लाइंट HTTP / 1.0 क्लाइंट है, तो सर्वर सूची को फ़िल्टर करता है ताकि केवल HTTP / 1.0 हेडर फ़ील्ड क्लाइंट को वापस भेजे जाएं।

यदि Body लौटा दी जाती है और {Fun,Arg} बराबर होती है, तो वेब सर्वर Arg साथ Fun पर तर्क के रूप में apply/2 कोशिश करता है। वेब सर्वर को उम्मीद है कि मज़ा या तो एक सूची (Body) लौटाता है जो एक HTTP रिप्सन है, या एटम sent अगर HTTP प्रतिक्रिया क्लाइंट को वापस भेज दी जाती है। यदि close को मज़े से लौटाया जाता है, तो कुछ गलत हो गया है और सर्वर कनेक्शन को बंद करके ग्राहक को संकेत देता है।

मॉड्यूल: लोड (लाइन, AccIn) -> eof | ठीक है | {ठीक है, AccOut} | {ठीक है, AccOut, {विकल्प, मूल्य}} | {ठीक है, AccOut, [{विकल्प, मूल्य}]} | {त्रुटि, कारण}

प्रकार

अपाचे जैसी कॉन्फ़िगरेशन फ़ाइल में एक लाइन को एक {Option, Value} टपल में कनवर्ट करता है। कुछ अधिक जटिल कॉन्फ़िगरेशन विकल्प, जैसे कि directory और security_directory , एक संचायक बनाते हैं। इस फ़ंक्शन को केवल इस विशेष कॉलबैक मॉड्यूल द्वारा कार्यान्वित विकल्पों के लिए क्लॉस की आवश्यकता है।

मॉड्यूल: निकालें (configDB) -> ठीक है | {त्रुटि, कारण}

प्रकार

जब httpd बंद हो जाता है, तो यह प्रत्येक Erlang वेब सर्वर कॉलबैक मॉड्यूल में remove/1 को निष्पादित करने का प्रयास करता है। प्रोग्रामर इस फ़ंक्शन का उपयोग स्टोर फ़ंक्शन में बनाए गए संसाधनों को साफ करने के लिए कर सकता है।

मॉड्यूल: स्टोर ({विकल्प, मूल्य}, कॉन्फ़िगरेशन) -> {ठीक है, {विकल्प, नयावैलू}} | {त्रुटि, कारण}

प्रकार

आंतरिक डेटाबेस में सहेजने से पहले कॉन्फ़िगरेशन विकल्पों की वैधता की जांच करता है। इस फ़ंक्शन का साइड इफेक्ट भी हो सकता है, अर्थात कॉन्फ़िगरेशन विकल्प द्वारा निहित आवश्यक अतिरिक्त संसाधनों की स्थापना। यह विकल्प के मूल्य को बदलकर कॉन्फ़िगरेशन विकल्पों के बीच संभावित निर्भरता को भी हल कर सकता है। इस फ़ंक्शन को केवल इस विशेष कॉलबैक मॉड्यूल द्वारा कार्यान्वित विकल्पों के लिए क्लॉस की आवश्यकता है।

Erlang वेब सर्वर एपीआई सहायता कार्य करता है

निर्यात

parse_query (QueryString) -> [{कुंजी, मान}]

प्रकार

parse_query/1 स्क्रिप्ट्स को mod_esi(3) और mod_esi(3) स्क्रिप्ट्स को देखने के लिए आने वाले डेटा ( mod_esi(3) ) को मानक URL प्रारूप में परिभाषित किया गया है, अर्थात, '+' 'स्पेस' बन जाता है और हेक्साडेसिमल अक्षरों ( %xx ) को डिकोड करता है।

यह भी देखें

RFC 2616 , inets(3) , ssl(3)