ÃֽŠ°Ô½Ã±Û(OS/WAS)
2020.10.21 / 10:22

502 bad gateway nginx - ÅèĹ°úÀÇ ¹®Á¦

Ãß¼®µ¹ÀÌ
Ãßõ ¼ö 211

ÅèĹÀÌ Á¦´ë·Î ¶ç¿öÁ® ÀÖ´ÂÁö È®ÀÎÀÌ ²À ÇÊ¿ä


¾ó¸¶ Àü °ÞÀº '502 : Bad Gateway' ¿À·ù¿Í ´À³¤ Á¡




 ÇÑ 4ÀÏ Àü Âë¿¡, AWS¿¡¼­ ACM ÀÎÁõ¼­¸¦ ¹ß±Þ ¹Þ°í À¥ »çÀÌÆ®¿¡ https Á¢¼ÓÀ» ¹ÞÀ» ¼ö ÀÖ°Ô µÇ¾î¼­ ±²ÀåÈ÷ »ÑµíÇØ ÇÏ°í ÀÖ¾ú½À´Ï´Ù. ±×¸®°í ÀÌ »ÑµíÇÑ ¸¶À½À» °¡Áö°í ¹é ¿£µå ÀÛ¾÷À» ·ê·ç¶ö¶ó ½Å³ª°Ô(?)ÇÏ°í ÀÖ¾ú´Âµ¥ °©ÀÚ±â À¥ »çÀÌÆ®°¡ nginx 502: Bad Gateway ¿¡·¯¸¦ ²Ð ¹ñÀ¸¸é¼­ Á¢¼ÓÀÌ µÇÁö ¾Ê¾Ò½À´Ï´Ù.

 

 

 Ã³À½ nginx ¼³Á¤À» Çϱâ Àü¿¡µµ Ãâ·ÂµÇ¾ú´ø È­¸éÀ̾ ÇÏ·ç Á¤µµ¸é ÇØ°áÇÒ ¼ö ÀÖ´Â ¹®Á¦¶ó°í »ý°¢ÇÏ°í pm2, nginxÀÇ ¿¡·¯·Î±×¸¦ ÇϳªÇϳª Æí-¾ÈÇÑ ¸¶À½À¸·Î »ìÆ캸¾Ò½À´Ï´Ù. ÇÏÁö¸¸ ÇÏ·çÁ¾ÀÏ ³ëÆ®ºÏÀ» µÎµé°Ü ºÁµµ ¿¡·¯´Â °á±¹ ÇØ°áµÇÁö ¾Ê¾Ò½À´Ï´Ù. ´ÙÀ½ ³¯¿¡µµ ¿¡·¯¸¦ ¼öÁ¤ÇÏ·Á°í ·Î±×¿¡ ´ëÇØ ±¸±Û¸µÀ» ÇغÃÁö¸¸ Àû´çÇÑ ÇØ°áÃ¥À» ãÀ» ¼ö ¾ø¾ú°í, ÇϳªÀÇ ¿¡·¯¸¦ ÇØ°áÇÏ¸é ¶Ç ´Ù¸¥ ¿¡·¯·Î±×°¡ ¹ß°ßµÇ´Â »óȲÀÌ ¹Ýº¹µÇ¾ú½À´Ï´Ù.

 

[ÃßÃø1] MySQL DB¼­¹öÀÇ ¿¬°á¿¡ ¹®Á¦°¡ »ý°åÀ» °ÍÀÌ´Ù.

 Á¦ÀÏ Ã³À½¿¡ È®ÀÎÇÑ °Ç pm2ÀÇ ¿¡·¯·Î±×ÀÔ´Ï´Ù. pm2 log ¸í·É¾î¸¦ ÅëÇØ ·Î±×¸¦ È®ÀÎÇØ º¸¾Ò´õ´Ï "Connection lost: The server closed the connection"¶ó´Â ·Î±×¸¦ ¹ß°ßÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù. ±×·¡¼­ MySQL DB¼­¹ö°¡ Á¾·áµÇ¾ú°Å³ª ¿¬°áÀÌ ²÷°Ü¼­ »ý±â´Â ¿¡·¯¶ó´Â »ý°¢À» ÇϰԵǾú°í, ÀÌ ¹æ¹ýÀ» ÀÌ¿ëÇؼ­ DB¼­¹ö¿Í ¿¬°áÀÌ ²÷¾îÁ® ÀÖÀ¸¸é ´Ù½Ã ¿¬°áÀ» ½ÃµµÇÏ´Â Äڵ带 ÇÁ·ÎÁ§Æ® ³»¿¡ Ãß°¡Çß½À´Ï´Ù. 

 

 ±×·±µ¥µµ 502: Bad Gateway ¿À·ù´Â °è¼Ó ¹ß»ýÇÏ¿´°í Á¶±Ý ´õ ã¾Æº¸´Ï ÀÌ´Â DB¼­¹ö¿Í ¿¬°á¹®Á¦¿Í °ü·ÃµÈ °ÍÀÌ ¾Æ´Ï¶ó´Â °É ¾Ë°Ô µÇ¾î¼­ ´Ù¸¥ ¿øÀÎÀ» ÃßÃøÇϱ⠽ÃÀÛÇß½À´Ï´Ù. 

 

[ÃßÃø2] ¾ó¸¶ Àü ¹ß±Þ¹ÞÀº SSLÀÎÁõ°ú °ü·ÃÇؼ­ nginx ¼³Á¤À» À߸øÇßÀ» °ÍÀÌ´Ù.

 ¿¡·¯°¡ ¹ß»ýÇϱâ Á÷Àü¿¡ Á¦°¡ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÑ ³»¿ëÀÌ SSL- HTTPS ÀÎÁõÀ̾ú±â ¶§¹®¿¡ ±× ´ÙÀ½À¸·Î ÀǽÉÇØ º» °ÍÀÌ nginx ¼³Á¤À̾ú½À´Ï´Ù. ¿ø·¡ SSL ÀÎÁõÀ» ¹Þ°í httpsÁ¢¼ÓÀ» ¹Þ±â À§Çؼ­´Â nginx¿¡ ¼³Á¤À» Ãß°¡ÇÏ´Â ÀÛ¾÷ÀÌ ÇÊ¿äÇѵ¥ Àú´Â ±× ÀÛ¾÷À» ÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ±î¸Ô¾î¼­ ¾È ÇÑ°Ç ¾Æ´Ï°í, ACMÀ¸·Î ÀÎÁõ¼­¸¦ ¹ß±Þ¹Þ°í ELB·Î httpsÁ¢¼ÓÀ» ¹Þ´Â °æ¿ì¿¡´Â nginx¿¡ ¼³Á¤À» Ãß°¡ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù°í µé¾ú±â ¶§¹®ÀÔ´Ï´Ù. 

tail -f /var/log/nginx/error.log

nginx ¿¡·¯·Î±×

 

 À§ ¸í·É¾î¸¦ ÅëÇØ nginxÀÇ ¿¡·¯·Î±×¸¦ È®ÀÎÇÏ´Ï "connect() failed (111: Connection refused) while connecting to upstream..." ¶ó´Â ·Î±×°¡ Ãâ·ÂµÇ¾ú½À´Ï´Ù. ÀÌ¿Í °ü·ÃÇؼ­´Â ¿øÀεµ ¸Å¿ì ´Ù¾çÇϱ⠶§¹®¿¡ Stackoverflow¸¦ Âü°íÇؼ­ °ÅÀÇ ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¸ðµÎ µû¶óÇغ¸¾Ò½À´Ï´Ù. ÇÏÁö¸¸ ±×·¡µµ 502:Bad Gateway ¹®Á¦´Â ÇØ°áµÇÁö ¾Ê¾Ò°í À̹ø¿¡´Â AWS ELB¸¦ ÀǽÉÇغ¸±â ½ÃÀÛÇß½À´Ï´Ù.

 

 ¾Æ ±×¸®°í ÀÌ °úÁ¤À» ÅëÇؼ­, 'ACMÀ¸·Î ÀÎÁõ¼­¸¦ ¹ß±Þ¹Þ°í ELB·Î httpsÁ¢¼ÓÀ» ¹Þ´Â °æ¿ì¿¡´Â nginx¿¡ ¼³Á¤À» Ãß°¡ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù'´Â °Ô ¸Â´Â ¸»À̶ó´Â °É ¾Ë°Ô µÇ¾ú½À´Ï´Ù!

 

[ÃßÃø3] EC2 ELB¿¡¼­ ¿À·ù°¡ ¹ß»ýÇÏ¿´À» °ÍÀÌ´Ù.

 nginx ¿¡·¯·Î±×¸¦ »ìÆ캸´Ù°¡ À̹ø¿¡´Â 'GET / HTTP / 1.1..' ÀÌ ºÎºÐ¿¡ ÁýÁßÇؼ­ '¾î¶² HTTP ¿äûÀ» Á¦´ë·Î ¸ø¹Þ´Â °Ç°¡?'¶ó°í »ý°¢ÇÏ°Ô µÇ¾ú½À´Ï´Ù. ¸¶Ä§ AWS¿¡¼­´Â Classic Load Balancer(ELB) ¸¦ »ç¿ëÇÏ´Â µµÁß¿¡ ¹ß»ýÇÏ´Â HTTP 502¿¡·¯¿¡ ´ëÇØ ¿¡·¯ÀÇ ¿øÀΰú ÇØ°á¹æ¹ýÀ» ÀÌ ¸µÅ©¿¡¼­ ¾Ë·ÁÁÖ°í ÀÖ¾ú°í, Àú ¶ÇÇÑ ÀÌ Áß¿¡ Á¦ ¿¡·¯¸¦ ÇØ°á ÇÒ ¹æ¹ýÀÌ ÀÖÀ» °ÍÀ̶ó°í »ý°¢Çϱ⠽ÃÀÛÇß½À´Ï´Ù. 

 

 ÇÏÁö¸¸ Àú´Â AWSÀÇ ·Îµå ¹ë·±¼­¸¦ ±×Àú https¿¬°áÀ» À§ÇÑ µµ±¸·Î¸¸ »ç¿ëÇÏ¿´°í ÁøÂ¥ ·Îµå¹ë·±¼­ÀÇ ¿ªÇҷδ »ç¿ëÇØ º» ÀûÀÌ ¾ø±â ¶§¹®¿¡ »ý°¢º¸´Ù ³»¿ëÀ» ÀÌÇØÇϱⰡ ³Ê¹« ¾î·Á¿ü½À´Ï´Ù. ±×·¡¼­ ±×³É ¼­¹ö ÄÄÇ»ÅÍ ³» ÆÄÀÏ°ú ELB¸¦ ¸ðµÎ Áö¿ì°í óÀ½ºÎÅÍ ´Ù½Ã »ý¼ºÇØ º¸ÀÚ´Â °á·Ð¿¡ µµ´ÞÇÕ´Ï´Ù ¶Ç¸£¸¤,,

 

[ÃßÃø4] Git°ú °ü·ÃÇÏ¿©, ¼­¹öÀÇ ¿ø°ÝÀúÀå¼Ò ³» ÆÄÀÏ¿¡ ¿À·ù°¡ »ý°åÀ» °ÍÀÌ´Ù.

 ¼­¹ö ÄÄÇ»ÅÍ ³» ÆÄÀÏÀ» ¸ðµÎ Áö¿ì´Â µµÁß¿¡ ¹®µæ ÇÑ °¡Áö ÀǽÉÀÌ ´õ »ý°Ü³µ½À´Ï´Ù. °ÅÀÇ ¼­¹ö ÄÄÇ»Å͸¦ óÀ½ »ý¼ºÇÒ ¶§ ºÎÅÍ Git °ú °ü·ÃÇÏ¿© ¹ß»ýÇÏ´ø ¿À·ù°¡ ÀÖ¾ú´Âµ¥ ÀÌ°Ô ¹®Á¦ÀÇ ¿øÀÎÀÏ ¼öµµ ÀÖ°Ô´Ù´Â »ý°¢À̾ú½À´Ï´Ù. »ç½Ç ÀÌÀü¿¡µµ ¸ÅÀÏ°°ÀÌ Ãâ·ÂµÇ´ø ¿¡·¯¿´Áö¸¸ À¥ »çÀÌÆ®°¡ ÀÌ»óÇÏ°Ô ÀÛµ¿ÇÏ´ø ÀûÀº ´Ü Çѹøµµ ¾ø¾ú±â ¶§¹®¿¡ ½Å°æÀ» ¾È ¾²°í ÀÖ¾ú½À´Ï´Ù. ±×·¡µµ Ȥ½Ã³ª ÇÏ´Â ¸¶À½¿¡ ¼­¹ö ÄÄÇ»ÅÍ ³» git repository ¸¦ ±ò²ûÇÏ°Ô »èÁ¦ÇÏ°í git cloneÀ» ÅëÇØ µð·ºÅ丮¸¦ ´Ù½Ã »ý¼ºÇÏ¿´½À´Ï´Ù.

 

 ¿À¿ì.. ±×·¨´õ´Ï nginx, git, DB¿Í °ü·ÃµÈ ¸ðµç ¿¡·¯µéÀÌ ±ò²ûÇÏ°Ô »ç¶óÁö°í À¥ »çÀÌÆ®°¡ ³Ê¹«³ª Á¤»óÀûÀ¸·Î ÀÛµ¿Çß½À´Ï´Ù. ¾Ë°íº¸´Ï Á¦°¡ GitÀÇ µ¿ÀÛ ¿ø¸®¸¦ ´ëÃæ ¾Ë°íÀÖ´Â »óÅ¿¡¼­ ¼­¹ö ÄÄÇ»ÅÍ ³»¿¡¼­ ¸í·É¾î¸¦ ÀÛ¼ºÇÏ´Ù°¡ repository ³» ÆÄÀÏ ÀϺΰ¡ º¯°æµÇ¼­ ¹ß»ýÇÑ ¹®Á¦¿´½À´Ï´Ù. 

 

[°á·Ð] ¿¡·¯¸¦ ÇØ°áÇϸ鼭 ´À³¤ Á¡

 ÀÌ·¸°Ô Æ÷½ºÆÃÀ» ÇÏ°Ô µÈ ÀÌÀ¯´Â, À̹ø¿¡ °ÞÀº ÀÏÀ» ±Û·Î Àû¾îµÎÁö ¾ÊÀ¸¸é ´ÙÀ½¹ø¿¡ ¶Ç ÀÌ·± ºñ½ÁÇÑ ¿À·ù¸¦ ¸¸³ª°Ô µÉ °Í °°´Ù´Â »ý°¢ ¶§¹®ÀÔ´Ï´Ù. ±×¸®°í À̹ø ÀÏÀ» °è±â·Î ÀÛÀº ¿¡·¯°¡ ³ª´õ¶óµµ ÀÏ´Ü ±× ¿¡·¯¸¦ ÇØ°áÇÑ µÚ¿¡ ´ÙÀ½ ´Ü°è·Î ³Ñ¾î°¡¾ß °Ú´Ù´Â »ý°¢ÀÌ ¸¹ÀÌ µé¾ú½À´Ï´Ù. óÀ½¿¡´Â ¾Æ¹«°Íµµ ¾Æ´Ñ °Í °°¾Ò´ø Git ¿¡·¯°¡ ³ªºñÈ¿°úó·³ Ä¿Á®¼­ nginx, ±×¸®°í ¶Ç ´Ù¸¥ °÷ÀÇ ¿¡·¯·Î À̾îÁú ¼ö ÀÖÀ¸´Ï±î¿ä :(

 

 ¶Ç, ¼­¹ö ÄÄÇ»ÅÍ ³» ÆÄÀϵéÀ» ÇԺηΠ¼öÁ¤Çϰųª Ãß°¡ÇÏÁö ¸»ÀÚ´Â »ý°¢µµ µé¾ú½À´Ï´Ù. Á¦°¡ ÇöÀç ÁøÇàÇÏ°í ÀÖ´Â ÇÁ·ÎÁ§Æ®°¡ ¾ÆÁ÷Àº ¾ÆÁÖ º¹ÀâÇÑ ´Ü°è´Â ¾Æ´Ï±â ¶§¹®¿¡ ¼­¹ö ÄÄÇ»ÅÍ ³» ¼öÁ¤ÇÒ ³»¿ëÀÌ »ý±â¸é ¼­¹ö ÄÄÇ»ÅÍ ³»¿¡¼­ Á÷Á¢ ÀÛ¾÷À» ÁøÇàÇÏ°ï Çß½À´Ï´Ù. ±Ùµ¥ ÀÌ·¯¸é ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ µÚ·Î µÇµ¹¸®±âµµ Èûµé°í ¾îµð¼­, ¾ðÁ¦ ¿¡·¯°¡ ³µ´ÂÁöµµ ã±â Èûµé±â ¶§¹®¿¡ À̹ø¿¡µµ ´õ °í»ýÀ» ÇÑ °Í °°½À´Ï´Ù. ÀÌÁ¦´Â ·ÎÄÿ¡¼­ ÀÛ¾÷À» ¸ðµÎ ³¡³»°í, ¼­¹ö ÄÄÇ»ÅÍ´Â ÀÌ·¸°Ô ÀÛ¾÷ÇÑ °á°ú¸¦ pull¸¸ ÇÏ´Â ÇüÅ·ΠÁ» ´õ ¼­¹ö ÄÄÇ»Å͸¦ Á¶½ÉÈ÷ ´Ù·ï¾ß °Ú´Ù°í ´À²¼½À´Ï´Ù.