본문 바로가기

Dev/Web

URL에서 파일 경로를 다루는 방식과 왜 필요한가

728x90

파일을 다운받거나 요청할 때 개발자는 URL 을 통해 경로를 넘겨준다.

 

scheme://host:port/path?query#fragment
  • scheme: 프로토콜 (예: http, https, ftp)
  • host: 도메인 또는 IP 주소
  • port: 서버 포트 (옵션, 기본 포트는 생략 가능)
  • path: 자원의 경로 (파일 시스템에서의 위치와 유사)
  • query: 쿼리 문자열 (옵션, 자원에 추가적인 정보를 전달)
  • fragment: 문서의 특정 부분을 가리키는 조각 식별자 (옵션)

서버 측 처리

서버 측에서는 URL의 경로를 해석하여 해당 파일이나 자원을 찾는다. 웹 서버는 URL의 경로를 파일 시스템의 경로로 변환하여 요청된 자원을 제공한다. 예를 들어, Apache나 Nginx 서버는 URL을 파일 시스템의 경로와 매핑하여 해당 파일을 클라이언트에 전달한다. URL에서 파일 경로를 처리할 때는 웹 서버의 설정, 파일 시스템의 구조, 그리고 URL 인코딩과 같은 요소들을 고려해야한다.

 

. 웹 애플리케이션에서 리소스 제공

  • 웹 페이지 및 이미지 제공: 웹 페이지가 이미지나 CSS 파일을 참조할 때, URL을 사용하여 해당 리소스를 요청합니다. 예를 들어, HTML 문서에서 <img src="/images/logo.png">와 같은 코드가 있을 때, 웹 서버는 /images/logo.png 경로를 실제 파일 시스템의 위치와 매핑하여 클라이언트에게 이미지를 전달합니다.

2. 파일 업로드 및 다운로드

  • 파일 업로드: 사용자가 웹 애플리케이션을 통해 파일을 업로드하면, 서버는 해당 파일을 서버의 특정 디렉토리에 저장하고, 이를 관리하기 위해 URL 경로와 파일 시스템 경로를 적절히 매핑합니다.
  • 파일 다운로드: 사용자가 파일을 다운로드할 때, 웹 서버는 요청된 URL을 바탕으로 파일 시스템에서 파일을 찾아 클라이언트에게 전달합니다. 예를 들어, http://example.com/downloads/report.pdf라는 URL이 /var/www/html/downloads/report.pdf로 매핑됩니다.

3. 동적 콘텐츠 제공

  • URL 매핑: 웹 애플리케이션이 동적으로 생성한 콘텐츠를 제공할 때, URL 경로와 파일 경로의 매핑이 필요합니다. 예를 들어, 특정 사용자의 프로필 페이지를 제공하는 경우, URL 경로(/users/username/profile)를 처리하여 해당 사용자의 데이터를 데이터베이스에서 조회하고 HTML을 동적으로 생성합니다.

4. 리버스 프록시 및 로드 밸런서

  • 리버스 프록시: 리버스 프록시 서버는 클라이언트의 요청을 다른 서버로 전달할 때 URL 경로를 파일 시스템 경로로 변환합니다. 예를 들어, http://proxy.example.com/app1이라는 URL을 http://backend1.example.com으로 리다이렉트하여 처리합니다.
  • 로드 밸런서: 로드 밸런서는 다양한 서버 간에 요청을 분산시킬 때 URL 경로를 기반으로 요청을 전달할 서버를 결정할 수 있습니다.

5. 서버 사이드 스크립팅

  • 파일 시스템 접근: 서버 사이드 스크립트(PHP, Node.js 등)는 URL에서 전달된 정보를 바탕으로 서버의 파일 시스템에 접근하여 파일을 읽거나 쓸 수 있습니다. 예를 들어, http://example.com/api/upload에 POST 요청을 보내면, 서버 스크립트가 파일을 처리하여 저장할 위치를 결정합니다.

6. SEO 및 URL 재작성

  • SEO 최적화: URL 경로를 적절히 설정하여 검색 엔진 최적화를 할 수 있습니다. 예를 들어, http://example.com/products/123이라는 URL이 /var/www/html/products/product123.html로 매핑됩니다.
  • URL 재작성: 서버에서 URL 재작성 규칙을 설정하여 사용자에게 더 읽기 쉬운 URL을 제공합니다. 예를 들어, http://example.com/user/username을 /var/www/html/user-profile.php?user=username으로 재작성할 수 있습니다.

이러한 사례들은 URL과 파일 경로의 매핑이 웹 애플리케이션과 서버 관리에서 얼마나 중요한지 잘 보여줍니다. 이러한 매핑이 없으면 클라이언트가 요청한 리소스를 올바르게 찾거나 제공하는 것이 매우 어려워질 수 있습니다.

 

그러니까 URL로 직접 파일 시스템 접근이 들어올 수 있기 때문에 서버 개발자는 이러한 접근도 관리를 해야하므로 매핑이 중요한 것이다. 만약 ~~.jpg 로 들어온다 하더라도 실제 서버의 경로를 노출하는 것은 위험하다. 그래서 매핑이 필요하고 이러한 작업에서 url과 파일 경로의 매핑과 관리법이 중요해진다.

 

 

 
 

 

 

 

'Dev > Web' 카테고리의 다른 글

SSR과 CSR  (1) 2024.02.27
믹스드 콘텐츠(Mixed Content)로 인한 보안 문제  (1) 2024.02.26