2020-11-07(Sat)

  1. 학습 날짜 // 2020-11-07(토)

  2. 학습시간 // 9:00~22:00

  3. 학습 범위 및 주제 // autoindex 오류 제거

  4. 동료 학습 방법 // -

  5. 학습 목표 // autoindex 기능이 작동하지 않는 이유를 찾고 해결한다.

  6. 상세 학습 내용

문제) autoindex가 folder URI를 요청했을 때 잘 작동하지만, 이후에 folder 링크를 들어가면 autoindex가 나타나지 않고 file이 다운로드된다.

해결)

우선 로그를 찍어보자. 확인해보니 Content-Type header가 text/html으로 셋팅되어야할 때 application/octect-stream 으로 셋팅된 것이 원인인 것으로 보인다.

200 status code가 아닌 경우에는 Content-Type header를 text/html 로 셋팅하자.

그런데 문제가 해결되지 않는다! 심지어 서버에 별도로 로그가 찍히지 않는다!;;

브라우저 차원에서 캐시를 두고 따로 요청하지 않는 것이 의심되어 브라우저 캐시를 모두 삭제했더니 해결되었다.

문제) Autoindex 페이지를 리턴할 경우 Last-Modified 헤더의 값이 이상하다.

해결)

현재 서버 구조상 auto index임이 판명나면 fstat을 실행하지 않고 write sequence로 넘어가기 때문에 stat 구조체가 초기화된 채로 있는 것이 원인이었다.

그런데 애초에 Auto index 페이지를 리턴할 때 Last-modified header를 포함시켜야하는지에 대해서 RFC에도 정확하게 나와있지 않아서, nginx의 동작을 참고하여 포함여부를 판단해야겠다.

확인해보니 Last-modified header를 포함시키지 않는다. 최종적으로 이와 동일하게 수정하였다.

  1. 학습 내용에 대한 개인적인 총평

역시 무언가를 비판없이 받아들이기 보다 '정말 그런지' 확인하고 받아들이는 것이 중요한 것 같습니다. 또한 마찬가지로 무언가를 받아들일 때 나의 '왜곡'이 들어갔는지를 확인하고 받아들이는 것이 중요한 것 같습니다. 결국 중요한건 '사실'을 제대로 인지하는 것이라는 것을 다시금 느낍니다.

다음 학습 계획

  • Transfer-Encoding 헤더 구현

Last updated