1. SSI¶õ?
SSI ´Â Server Side Includes ÀÇ ¾àÀڷμ ÀϹÝÀûÀÎ HTML ű׿ܿ¡ Ưº°È÷ È®ÀåµÈ
±â´ÉµéÀ» Á¦°øÇÑ´Ù. HTML¹®¼´Â ºê¶ó¿ìÀú¿¡ º¸³»Á®¼ Çؼ®ÀÌ µÇÁö¸¸ ÀÌ SSI´Â ¼¹ö¿¡¼ ¸ÕÀú parsing(Çؼ®)µÈ
ÈÄ ºê¶ó¿ìÀú ·Î º¸³»Áø´Ù. SSI ÆÄÀϵéÀº ÀϹÝÀûÀÎ HTML ÇüÅÂ¿Í °°À¸¸ç ±âÁ¸ÀÇ HTMLÀÇ Å±׵éÀ»
»ç¿ëÇÑ´Ù. ±×·¯³ª HTMLÀÇ Å±׿ܿ¡ SSI¿¡¼ º°µµ·Î Á¦°øÇϴ ű×(SSI tag)µéÀ» »ç¿ëÇÒ
¼ö ÀÖÀ¸¸ç, CGI¿¡¼ »ç¿ëÇÏ´Â CGI ȯ°æº¯¼ö(Environment Variables)µéµµ »ç¿ëÇÒ
¼ö ÀÖ´Ù. |
2. SSI¸¦ »ç¿ëÇϱâ À§ÇÑ ¼³Á¤
(APACHEÀ¥¼¹ö ±âÁØ)
SSI¸¦ Æ÷ÇÔÇÏ´Â htmlÆÄÀÏÀÇ È®ÀåÀÚ´Â ±âº»ÀûÀ¸·Î .shtml·Î ÇÑ´Ù. (¼³Á¤½Ã¿¡ .htmlÈ®ÀåÀÚ·Î
ÇÒ ¼öµµ ÀÖÀ¸³ª ÀÌ °æ¿ì¿¡ ¸ðµç .htmlÆÄÀÏÀÌ ºê¶ó¿ìÀú·Î °¡±âÀü¿¡ ¼¹ö¿¡¼ Çؼ®µÇ¹Ç·Î ½Ã½ºÅÛ¿¡
¾µµ¥¾ø´Â ºÎÇϸ¦ ÁÙ ¼ö ÀÖ´Ù.)
httpd/conf µð·ºÅ丮ÀÇ access.conf ÆÄÀÏ¿¡¼ ÇØ´ç µð·ºÅ丮ÀÇ Options ¿¡ Includes
¸¦ Æ÷ÇÔ½ÃŲ´Ù. ±×¸®°í srm.conf ÆÄÀÏ¿¡¼ AddType
text/html .shtml
AddHandler server-parsed .shtml
¸¦ ¾ÕÀÇ #À» Á¦°ÅÇÏ¿© È°¼ºÈ½ÃÅ°°Å³ª ¾øÀ¸¸é Æ÷ÇÔ½ÃŲ´Ù |
3. ±âº»ÀûÀÎ ¹®¹ý
SSI¸¦ »ç¿ëÇϱâ À§ÇÑ ±âº»ÀûÀÎ Tag ¹®¹ýÀº <!--#¿ä¼Ò ¼Ó¼º1="¼Ó¼º°ª1"
¼Ó¼º2="¼Ó¼º°ª2".... -->
ÀÇ ÇüÅÂÀÌ´Ù.
ÀÌ ÅÂ±× ÇüÅ´ HTML ÆÄÀÏ¿¡¼ comment(ÁÖ¼®)¸¦ ³ªÅ¸³»´Â <!-- ÀÇ ÇüÅ·Π½ÃÀÛÇϸç,
ÁÖÀÇÇÒ Á¡Àº ¼Ó¼º°ªÀº Åë»óÀûÀ¸·Î µû¿ÈÇ¥·Î µÑ·¯½ÎÀÌ°í, commentó¸®ÀÇ ³¡À» ³ªÅ¸³»´Â --> ¾Õ¿¡´Â
¹Ýµå½Ã °ø¹éÀ» µÐ´Ù. (SSIÀÇ ±¸¼º¿ä¼Ò¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â °ÍÀÓÀ» ³ªÅ¸³»±â À§ÇؼÀÓ)
Áß¿äÇÑ ¿ä¼ÒµéÀº ´ÙÀ½°ú °°´Ù. 3-1. config
ÀÌ ¿ä¼Ò´Â parsingÀÇ ¿©·¯°¡Áö Ãâ·ÂÇü½ÄÀ» Á¦¾îÇÑ´Ù. À¯È¿ÇÑ ¼Ó¼ºÀ¸·Î´Â,
errmsg :
ÀÌ°ÍÀÇ °ªÀº ¹®¼°¡ parsingµÇ´Â µ¿¾È ¿¡·¯°¡ ¹ß»ýÇÒ¶§ Ŭ¶óÀ̾ðÆ®¿¡°Ô µÇµ¹·ÁÁÖ´Â ¸Þ½ÃÁöÀÌ´Ù.
¿¹) <!--#config errmsg="SSI Error Occurred while parsing!"
-->
sizefmt :
ÀÌ°ÍÀÇ °ªÀº ÆÄÀÏÅ©±âÀÇ Ãâ·ÂÇü½ÄÀ» ÁöÁ¤ÇÑ´Ù. °ªÀ¸·Î ¹ÙÀÌÆ®´Â "bytes", Kb³ª Mb´Â "abbrev"
·Î ÁöÁ¤ÇÑ´Ù. ½ÇÁ¦ÀûÀÎ ÆÄÀÏÅ©±â´Â fsize ¿ä¼Ò¸¦ ÀÌ¿ëÇÑ´Ù.
¿¹) <!--#config sizefmt="bytes" -->
timefmt :
ÀÌ°ÍÀÇ °ªÀº ³¯Â¥ ½Ã°£ÀÇ Ãâ·ÂÇü½ÄÀ» ÁöÁ¤ÇÑ´Ù. strftime(3) C library ·çƾ¿¡ ÀÇÇØ
»ç¿ëµÇ´Â ¹®ÀÚ¿ÀÌ´Ù.
¿¹) ³â/¿ù/ÀÏ ¿äÀÏ. ½Ã:ºÐ AM KST Ãâ·ÂÇü½ÄÀ¸·Î ÇÏ·Á¸é <!--#config
timefmt="%y/%m/%d %a. %I:%M %p %Z" --> 3-2.
echo
ÀÌ ¿ä¼Ò´Â CGI ȯ°æº¯¼öµéÀÇ °ª°ú SSI º¯¼öµéÀÇ °ªÀ» Ãâ·ÂÇÑ´Ù.
(CGIȯ°æº¯¼ö¿¡ ´ëÇؼ´Â "CGI±âÃÊ" ÆäÀÌÁö ÂüÁ¶. SSIº¯¼ö´Â ¾Æ·¡ ÂüÁ¶)
ÀÌ°ÍÀÇ ¼Ó¼ºÀº var ÀÌ¸ç ¼Ó¼º °ªµéÀº SSIº¯¼öµéÀÌ´Ù.
¿¹) ¹®¼ÀÇ ÃÖÁ¾ ¼öÁ¤ÀÏÀ» Ãâ·ÂÇÒ ¶§ <!--#echo var="LAST_MODIFIED"
-->
ÇöÀç ³¯Â¥¸¦ ÇöÁö½Ã°¢À¸·Î Ãâ·ÂÇÒ ¶§ <!--#echo var="DATE_LOCAL"
-->
Ŭ¶óÀ̾ðÆ®ÀÇ ºê¶ó¿ìÀú À̸§À» Ãâ·ÂÇÒ ¶§ <!--#echo var="HTTP_USER_AGENT"
--> 3-3. exec
ÀÌ ¿ä¼Ò´Â ÁÖ¾îÁø ½© ¸í·ÉÀ̳ª CGI½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÑ´Ù. ÀÌ ¸í·ÉÀº º¸¾È¿¡ ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖÀ¸¹Ç·Î
´Ù¸¥ ¿ä¼Ò¿Í´Â ´Þ¸® ÀÌ ¿ä¼Ò¸¦ ¾µ ¼ö ¾øµµ·Ï ÇÏ·Á¸é access.conf ÀÇ ÇØ´ç µð·ºÅ丮¿¡¼ Options
¿¡ Includes ´ë½Å¿¡ IncludesNOEXEC ¸¦ Æ÷ÇÔ½ÃŲ´Ù.
À¯È¿ÇÑ ¼Ó¼ºÀº ´ÙÀ½°ú °°´Ù.
3-3-1. cgi
ÀÌ °ªÀº CGI½ºÅ©¸³Æ®ÀÇ URL °ªÀÌ´Ù. (»ó´ë path °¡´É) ÀÌ path¿¡ ÀÇÇØ ÂüÁ¶µÇ´Â ¹®¼´Â
ºñ·Ï ¼¹ö°¡ ±×°ÍÀ» cgi·Î ÀνÄÇÏÁö ¸øÇÒÁö¶óµµ CGI½ºÅ©¸³Æ®·Î °£ÁֵȴÙ. (Áï È®ÀåÀÚ cgi°¡
CGI½ºÅ©¸³Æ®·Î ÁöÁ¤µÈ ¼¹ö¿¡¼ cgi°¡ ¾Æ´Ñ ´Ù¸¥ È®ÀåÀڷεµ »ç¿ëÀÌ °¡´ÉÇÏ´Ù.) ±×·¯³ª ±× ½ºÅ©¸³Æ®ÀÇ
µð·ºÅ丮´Â CGI½ºÅ©¸³Æ®°¡ °¡´ÉÇÑ µð·ºÅ丮¿©¾ß ÇÑ´Ù. (Áï cgi-bin À̰ųª access.conf¿¡¼
±× µð·ºÅ丮 ºÎºÐ¿¡ Options¿¡ ExecCGI°¡ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì¿©¾ß ÇÑ´Ù.) ¶ÇÇÑ ÀÌ ½ºÅ©¸³Æ®¿¡´Â
CGIÇ¥ÁØ È¯°æº¯¼ö°ª »Ó¸¸¾Æ´Ï¶ó SSI º¯¼öµµ ÇÔ²² ´Ù·ê ¼ö ÀÖ´Ù. À¯ÀÇÇÒ Á¡Àº CGI¿¡ query¸¦
Àü´ÞÇÏÁö ¸øÇÑ´Ù´Â °ÍÀÌ´Ù. ¶ÇÇÑ ±× ½ºÅ©¸³Æ®°¡ Location: Çì´õ°ªÀ» ¸®ÅÏÇϸé ÀÌ°ÍÀº HTMLÀÇ
anchorű×(A HREF)À¸·Î ¹ø¿ªµÈ´Ù. Åë»ó ÀÌ exec cgi ¼Ó¼ºº¸´Ù ¿ÀÈ÷·Á include
virtual ¼Ó¼ºÀ» »ç¿ëÇÑ´Ù.
¿¹) Ä«¿îÅͽºÅ©¸³Æ®ÀÎ counter.cgi¸¦ ½ÇÇà½Ãų ¶§ <!--#exec cgi="counter.cgi"
-->
¿¹) foo.cgi °¡ Location: bar.html À» ¸®ÅÏÇÒ ¶§´Â <a href=bar.html>
°ú °°Àº ÇüÅ°¡ µÈ´Ù. 3-3-2. cmd
¼¹ö´Â /bin/sh ¸¦ »ç¿ëÇÏ¿© ÁÖ¾îÁø ¹®ÀÚ¿À» ½ÇÇà½ÃŲ´Ù. À̶§´Â Ä¿¸Çµå¿¡ Àμö¸¦ ÇÔ²² Àü´ÞÇÏ´Â
°ÍÀÌ °¡´ÉÇÏ´Ù.
¿¹) ÇöÀç µð·ºÅ丮¸¦ ¸®½ºÆ® Çü½ÄÀ¸·Î º¸·Á°í ÇÒ ¶§ <!--#exec cmd="ls
-al" --> 3-4. include
ÀÌ ¿ä¼Ò´Â parsingµÇ´Â ¹®¼³»¿¡ ´Ù¸¥ ¹®¼³ª ÆÄÀÏÀÇ text¸¦ ³¢¿ö ³Ö´Â´Ù. ¸¸¾à parsingµÇ´Â
¹®¼ÀÇ µð·ºÅ丮¿¡ ´ëÇÑ access.conf ÀÇ ¼³Á¤¿¡¼ Options¿¡ IncludesNOEXEC
°¡ ¼³Á¤µÇ¾î ÀÖ°í, ÀÌ include ¿ä¼Ò¿¡ ÀÇÇØ Æ÷ÇԵǴ ¹®¼°¡ ¾î¶² ÇÁ·Î±×·¥À» ¼öÇàÇÏ´Â ¹®¼¶ó¸é
±× ¹®¼´Â °áÄÚ ¼öÇà µÇÁö ¾Ê´Â´Ù. (Áï IncludesNOEXEC·Î ¼³Á¤Çϸé include ¿ä¼Ò¿¡¼
ÇÁ·Î±×·¥À» ½ÇÇà ÇÒ ¼ö ¾øµµ·Ï ÇÑ´Ù.)
À§ÀÇ °æ¿ì°¡ ¾Æ´Ï¶ó¸é CGI ½ºÅ©¸³Æ®°¡ include ¿¡ ÀÇÇØ Á¤»óÀûÀ¸·Î ¼öÇàµÈ´Ù. (Åë»ó cgi½ºÅ©¸³Æ®¸¦
½ÇÇàÇÒ ¶§ '#exec cgi' º¸´Ù ¿ÀÈ÷·Á ÀÌ '#include virtual' ¼Ó¼ºÀÌ ´õ »ç¿ëµÈ´Ù.)
ÀÌ ¿ä¼ÒÀÇ ¼Ó¼ºÀº ¹®¼ÀÇ À§Ä¡¸¦ ³ªÅ¸³½´Ù.
À¯È¿ÇÑ ¼Ó¼ºÀ¸·Î´Â, 3-4-1. file
ÀÌ°ÍÀÇ °ªÀº ÇöÀç parsingµÇ´Â ¹®¼¸¦ ´ã°íÀÖ´Â µð·ºÅ丮¿¡ ´ëÇÑ »ó´ë °æ·Î°¡ µÇ¾î¾ß ÇÑ´Ù. ÀÌ°Í¿¡´Â
»óÀ§ µð·ºÅ丮ÀÎ ../ °¡ ÁöÁ¤µÉ ¼ö ¾ø°í, Àý´ë°æ·Îµµ ÁöÁ¤µÉ ¼ö ¾ø´Ù. À̰ͺ¸´Ù ¾Æ·¡ÀÇ virtual
¼Ó¼ºÀÌ ¿ì¼±ÇÏ¿© »ç¿ëµÇ¾î¾ß ÇÑ´Ù. 3-4-2. virtual
ÀÌ°ÍÀÇ °ªÀº ÇöÀç parsingµÇ´Â ÇöÀç ¹®¼ÀÇ µð·ºÅ丮¿¡ ´ëÇÑ »ó´ë URLÀÌ´Ù. ÀÌ URL¿¡´Â
schemeÀ̳ª È£½ºÆ®¸íÀ» Æ÷ÇÔÇÒ ¼ö ¾ø°í ´ÜÁö °æ·Î¿Í query string¸¸ Æ÷ÇԵȴÙ.
"/index.html" À̳ª "/~yourID/index.html" µî°ú °°ÀÌ Àý´ë URL°æ·Î¸¦
»ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ¸¸¾à "/" ·Î ½ÃÀÛÇÏÁö ¾Ê´Â´Ù¸é ÇöÀç ¹®¼¿¡ ´ëÇÑ »ó´ëÀûÀÎ °æ·Î·Î °£ÁֵȴÙ.
3-4-3. ¿¹.
ÇöÀç ¹®¼¿Í °°Àº µð·ºÅ丮¿¡ ÀÖ´Â header.htmlÀ» Æ÷ÇÔÇÒ ¶§ <!--#include
virtual="header.html" -->
ÇöÀç µð·ºÅ丮ÀÇ fooµð·ºÅ丮¿¡ ÀÖ´Â counter.cgi¸¦ ½ÇÇà½Ãų ¶§ <!--#include
virtual="foo/counter.cgi" -->
3-5. fsize
ÀÌ ¿ä¼Ò´Â ¼Ó¼º¿¡ ÀÇÇØ ÁöÁ¤µÈ ÆÄÀÏÀÇ Å©±â¸¦ Ãâ·ÂÇÑ´Ù. À§ÀÇ config sizefmt ¿¡ ÀÇÇØ
±× Ãâ·ÂÇü½ÄÀÌ ÁöÁ¤ÀÌ µÈ´Ù. À¯È¿ÇÑ ¼Ó¼ºÀº ¹®¼ÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â file °ú virtual ¼Ó¼ºÀ¸·Î¼
À§ÀÇ include ¿ä¼Ò¿¡¼ÀÇ ¼Ó¼ºµé°ú ¶È°°´Ù.
¿¹) ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â foo.htmlÀÇ Å©±â¸¦ byte·Î ³ªÅ¸³¾¶§ <!--#config
sizefmt="bytes" --> <!--#fsize virtual="foo.html"
-->
3-6. flastmod
ÀÌ ¿ä¼Ò´Â ¼Ó¼º¿¡ ÀÇÇØ ÁöÁ¤µÈ ÆÄÀÏÀÇ ÃÖÁ¾ ¼öÁ¤³¯Â¥¸¦ Ãâ·ÂÇÑ´Ù. À§ÀÇ config timefmt
¿¡ ÀÇÇØ ±× Ãâ·ÂÇü½ÄÀÌ ÁöÁ¤µÈ´Ù.
À¯È¿ÇÑ ¼Ó¼ºÀº ¹®¼ÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â file°¡ virtual ¼Ó¼ºÀ¸·Î¼ À§ÀÇ include ¿ä¼Ò¿¡¼ÀÇ
¼Ó¼ºµé°ú ¶È°°´Ù.
¿¹) ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â foo.htmlÀÇ ÃÖÁ¾ ¼öÁ¤ÀϽø¦ ³ªÅ¸³¾¶§ <!--#config
timefmt="%y/%m/%d %a. %I:%M %p %Z" --> <!--#flastmod
virtual="foo.html" --> |
4. SSI º¯¼ö ( Includes
Variables )
Ç¥ÁØ CGIȯ°æº¯¼ö(CGI ±âÃÊ ÆäÀÌÁö ÂüÁ¶) »Ó¸¸¾Æ´Ï¶ó ÀÌ SSI º¯¼öµµ echo ¸í·É¿¡ »ç¿ëÇÒ
¼ö ÀÖ´Ù. ´ÙÀ½°ú °°Àº SSI º¯¼öµéÀÌ ÀÖ´Ù.
4-1. DATE_GMT
±×¸®´ÏÄ¡ TimeÀ» »ç¿ëÇÏ´Â ÇöÀç ³¯Â¥
4-2. DATE_LOCAL
Áö¿ª ½Ã°£´ëÀÇ ÇöÀç ³¯Â¥
4-3. DOCUMENT_NAME
»ç¿ëÀÚ°¡ ¿äûÇÑ ¹®¼ÀÇ À̸§(µð·ºÅ丮 Á¦¿Ü)
4-4. DOCUMENT_URI
»ç¿ëÀÚ°¡ ¿äûÇÑ ¹®¼ÀÇ URL °æ·Î.
4-5. LAST_MODIFIED
»ç¿ëÀÚ°¡ ¿äûÇÑ ¹®¼ÀÇ ÃÖÁ¾ ¼öÁ¤ ÀÏÀÚ. |
|
|