none
Node.js REST 서버의 Azure Web APP 게시 오류 질문

    질문

  • 안녕하세요 visual studio 2017을 이용해 node.js REST 서버를  Azure Web App로 게시하는 중에 문제가 생겨서 질문합니다.

    환경

    • node.js 10.15.2
    • Visual Studio 2017 Community 15.9.11

    문제 상황

    • 로컬환경 에서는 실행이 잘 됩니다.

    • Azure Web App으로 게시 이후 아래 에러가 떠서 Azure의 웹 앱 로그 스트림을 통해 문제 파악을 시도했습니다.
    The page cannot be displayed because an internal server error has occurred.
    • 아래와 같은 오류가 나왔습니다.

    • web.config 쪽의 IIS설정인가 싶어서 확인해봤는데, 딱히 문제는 없는 듯 합니다.
    <?xml version="1.0" encoding="utf-8"?>
    <!--
      For more information on how to configure your Node.js application, please visit
      http://go.microsoft.com/fwlink/?LinkId=290972
      -->
    <configuration>
      <appSettings>
        <!--
        <add key="StorageAccountName" value="" />
        <add key="StorageAccountKey" value="" />
        <add key="ServiceBusNamespace" value="" />
        <add key="ServiceBusIssuerName" value="" />
        <add key="ServiceBusIssuerSecretKey" value="" />
        -->
      </appSettings>
      <system.webServer>
        <!-- mimeMap enables IIS to serve particular file types as specified by fileExtension. -->
        <staticContent>
          <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
        </staticContent>
    
        <modules runAllManagedModulesForAllRequests="false" />
    
        <!-- Web.Debug.config adds attributes to this to enable remote debugging when publishing in Debug configuration. -->
        <iisnode watchedFiles="web.config;*.js;routes\*.js;views\*.pug"/>
    
        <!-- Remote debugging (Azure Website with git deploy): Comment out iisnode above, and uncomment iisnode below. -->
        <!--<iisnode watchedFiles="web.config;*.js;routes\*.js;views\*.pug"
          loggingEnabled="true"
          devErrorsEnabled="true"
          nodeProcessCommandLine="node.exe &#45;&#45;debug"/>-->
    
        <!-- indicates that the server.js file is a Node.js application 
        to be handled by the iisnode module -->
        <handlers>
          <add name="iisnode" path="app.js" verb="*" modules="iisnode" />
    
          <!-- Remote debugging (Azure Website with git deploy): Uncomment NtvsDebugProxy handler below.
          Additionally copy Microsoft.NodejsTools.WebRole to 'bin' from the Remote Debug Proxy folder.-->
          <!--<add name="NtvsDebugProxy" path="ntvs-debug-proxy/565748be-90fe-4351-8a35-4380157e7c3a" verb="*" resourceType="Unspecified"
            type="Microsoft.NodejsTools.Debugger.WebSocketProxy, Microsoft.NodejsTools.WebRole"/>-->
        </handlers>
    
        <security>
          <requestFiltering>
            <hiddenSegments>
              <remove segment="bin" />
            </hiddenSegments>
          </requestFiltering>
        </security>
    
        <rewrite>
          <rules>
            <clear />
            <!-- Remote debugging (Azure Website with git deploy): Uncomment the NtvsDebugProxy rule below. -->
            <!--<rule name="NtvsDebugProxy" enabled="true" stopProcessing="true"> 
              <match url="^ntvs-debug-proxy/.*"/> 
            </rule>-->
    
            <!-- Don't interfere with requests for node-inspector debugging -->
            <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
              <match url="^server.js\/debug[\/]?" />
            </rule>
    
            <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
              <match url="iisnode.+" negate="true" />
              <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
              <action type="Rewrite" url="app.js" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    
      <!-- Remote debugging (Azure Website with git deploy): uncomment system.web below -->
      <!--<system.web> 
        <httpRuntime targetFramework="4.5"/> 
        <customErrors mode="Off"/> 
      </system.web>-->
    </configuration>

    • 앱 셋팅은 아래 항목만 변경했습니다
    • WEBSITE_NODE_DEFAULT_VERSION를 현재 사용하는 노드 버전으로 변경(10.15.2)
    • 진단 로그 설정(어플리케이션 로깅 / 웹 서버 로깅)

    kudo 도구나, 로그 등을 확인해봐도 딱히 원인이 뭔지 파악이 안되는 것 같습니다.


    • 편집됨 VIRNECT 2019년 5월 8일 수요일 오전 2:15
    2019년 5월 8일 수요일 오전 2:13

답변

  • 안녕하세요

    해당 문서를 보시면 port listening 을 위해 "process.env.PORT" variable 를 사용하는 것이 전제조건 입니다.

    이와 비슷한 케이스가 있었는데 process.env.PORT” variable 를 사용하지 않아서 500.1001 오류가 나타났었습니다.

    해당 variable 를 사용해도 문제가 해결되지 않는 경우 kudo log 를 업로드 해 주시기 바랍니다.

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변에 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2019년 5월 16일 목요일 오전 2:41
    중재자

모든 응답

  • 안녕하세요

    해당 문서를 보시면 port listening 을 위해 "process.env.PORT" variable 를 사용하는 것이 전제조건 입니다.

    이와 비슷한 케이스가 있었는데 process.env.PORT” variable 를 사용하지 않아서 500.1001 오류가 나타났었습니다.

    해당 variable 를 사용해도 문제가 해결되지 않는 경우 kudo log 를 업로드 해 주시기 바랍니다.

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변에 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2019년 5월 16일 목요일 오전 2:41
    중재자
  • 확인해보니, 코드 내에서 임의로 포트를 제어하는 부분이 있어서 위 내용을 삭제하고 게시하니 잘 되네요

    덕분에 문제를 잘 해결했습니다.

    감사합니다

    2019년 5월 27일 월요일 오전 2:24