SSI ´Â Server Side Includes ÀÇ ¾àÀڷμ ÀϹÝÀûÀÎ HTML ű׿ܿ¡ Ưº°È÷ È®ÀåµÈ ±â´ÉµéÀ» Á¦°øÇÑ´Ù.
HTML¹®¼´Â ºê¶ó¿ìÀú¿¡ º¸³»Á®¼ ÇØ¼®ÀÌ µÇÁö¸¸ ÀÌ SSI´Â ¼¹ö¿¡¼ ¸ÕÀú parsing(ÇØ¼®)µÈ ÈÄ ºê¶ó¿ìÀú ·Î º¸³»Áø´Ù.
SSI ÆÄÀϵéÀº ÀϹÝÀûÀÎ HTML ÇüÅÂ¿Í °°À¸¸ç ±âÁ¸ÀÇ HTMLÀÇ Å±׵éÀ» »ç¿ëÇÑ´Ù.
±×·¯³ª HTMLÀÇ Å±׿ܿ¡ SSI¿¡¼
º°µµ·Î Á¦°øÇϴ ű×(SSI tag)µéÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç,
CGI¿¡¼ »ç¿ëÇÏ´Â CGI ȯ°æº¯¼ö(Environment
Variables)µéµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. |

SSI¸¦ Æ÷ÇÔÇÏ´Â htmlÆÄÀÏÀÇ È®ÀåÀÚ´Â ±âº»ÀûÀ¸·Î .shtml·Î ÇÑ´Ù. (¼³Á¤½Ã¿¡
.htmlÈ®ÀåÀÚ·Î ÇÒ ¼öµµ ÀÖÀ¸³ª ÀÌ °æ¿ì¿¡ ¸ðµç .htmlÆÄÀÏÀÌ ºê¶ó¿ìÀú·Î °¡±âÀü¿¡ ¼¹ö¿¡¼ ÇØ¼®µÇ¹Ç·Î ½Ã½ºÅÛ¿¡ ¾µµ¥¾ø´Â
ºÎÇϸ¦ ÁÙ ¼ö ÀÖ´Ù.)
httpd/conf µð·ºÅ丮ÀÇ access.conf ÆÄÀÏ¿¡¼ ÇØ´ç µð·ºÅ丮ÀÇ Options ¿¡ Includes ¸¦ Æ÷ÇÔ½ÃŲ´Ù.
±×¸®°í srm.conf ÆÄÀÏ¿¡¼ AddType text/html .shtml
AddHandler server-parsed .shtml
¸¦ ¾ÕÀÇ #À» Á¦°ÅÇÏ¿© Ȱ¼ºÈ½ÃŰ°Å³ª ¾øÀ¸¸é Æ÷ÇÔ½ÃŲ´Ù |

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" --> |

Ç¥ÁØ 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
»ç¿ëÀÚ°¡ ¿äûÇÑ ¹®¼ÀÇ ÃÖÁ¾ ¼öÁ¤ ÀÏÀÚ. |
|