nginx

nginx error : (1113) No mapping for the Unicode character

태인킴 2023. 2. 16. 23:53
반응형

최근에 nginx가 아파치보다 가볍고 우수한 성능으로 많이 사용되는 편인거 같습니다. 저도 회사에서 사용할 일이 있어서 사용하고 있습니다. nginx와 아파치는 정적 웹 서버를 의미한다. 따라서 html, css, js 와 같은 정적인 파일 위주에 호스팅을 해주는 서버이다. 톰캣은 동적 웹 서버를 의미하며 대표적인 것이 jsp, spring을 이용하여 돌아가는 was를 의미한다.

 

 

사용 환경

윈도우 OS 상에서 dotnet core 6.0 을 사용하고 nginx 기동하고 웹뷰를 winforms 어플리케이션에 올려서 사용하고 있습니다.

 

 

에러 내용

개발을 어느정도 완성하고, QA를 맡겼는데 다음과 같은 에러가 발생했다.

nginx: [emerg] CreateFile() "C:\Users\Jamie\Desktop\새 폴더 (2)\Scan2Stage10.2.0\nginx/conf/nginx.conf" failed (1113: No mapping for the Unicode character exists in the target multi-byte code page)

확인해보니, nginx.conf 파일 경로에 한글이 포함되어 있어서 출력되는 에러내용이다. 그런데 지금 개발하고 있는 앱 특성상 충분히 한글 경로가 포함되어야 한다. 

 

 

해결 방법

처음에 nginx 설정을 통해서 해결방법을 찾아보았지만, 대부분에 내용은 http 통신상에서 chartset 설정을 하는 방법 밖이 나와있지 않았다. 지금 나의 경우는 애초부터 nginx.conf 파일을 읽어들이지 못하기 때문에, nginx.conf 파일을 아무리 수정해도 해결할 수 없었다. 따라서, 나는 Window OS에 심볼릭 링크를 루트 폴더(C:드라이브 바로 하위)에 만들어, 심볼릭 링크가 걸려있는 폴더를 실행시키는 방법으로 로직을 수정 하였다. 로직은 정말 깔끔하였고, 한글이 포함된 경로에서 실행이 정말 잘되었다. 아무리 구글링해도 해당 에러에 대해서 처리한 자료가 없어서 내 블로그에 포스팅 하고 있다. 누군가 도움이 됬으면 좋겠습니다.

 

 

닷넷 소스코드

/// <summary>
/// nginx 디렉토리는 경로안에 오직 영어만 존재 해야한다.
/// 따라서, .\nginx 를 c드라이브 바로 하위 경로에 
/// 심볼릭 링크를 만들어 실행하도록 한다.
/// </summary>
private void createNginxDirSymbolicLink()
{
    try
    {
        string targetDir = NGINX_PATH;
        string sourceDir = Directory.GetCurrentDirectory() + @"\nginx";
        bool isExists = Directory.Exists(targetDir);
        if (!isExists) Directory.CreateSymbolicLink(targetDir, sourceDir);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.StackTrace);
        throw;
    }
}
반응형

'nginx' 카테고리의 다른 글

webview 기반에 dotnet winforms 개발(React)  (0) 2023.03.06