idea·blog

웹서버 미니랩

같은 경로, 세 서버가 고르는 블록은 다릅니다

nginx 는 우선순위로 하나를 고르고, Apache 는 맞는 섹션을 전부 합치고, Caddy 는 설정을 먼저 정렬한 뒤 첫 매칭 하나만 실행합니다.

실제 서버를 실행하지 않습니다. 각 서버 공식 문서에 적힌 매칭 규칙만 재현한 교육용 모델입니다.

이 경로가 깨는 오해: “가장 긴 매칭이 이긴다”

nginx선택

우선순위에 따라 location 하나만 고른다

  1. location = /healthz {안 맞음
    • return 200 "ok"
  2. location ^~ /static/ {안 맞음
    • root /var/www
    • expires 30d
  3. location /api/v1/ {후보(짐)
    • proxy_pass http://v1_backend
  4. location /api/ {후보(짐)
    • proxy_pass http://api_backend
  5. location ~ \.php$ {적용됨
    • fastcgi_pass php:9000
  6. location ~* \.(js|css)$ {검사 안 함
    • expires 7d
  7. location / {후보(짐)
    • root /var/www/html
결과부터 보는 중

버튼을 누르면 이 결과에 도달하는 과정을 하나씩 볼 수 있어요.

최종 적용되는 설정

지시어준 블록합쳐지는 방식
fastcgi_passphp:9000n5선택된 location 의 설정이 그대로 쓰입니다

이 데모의 범위 밖: Alias·.htaccess·try_files 재진입·rewrite 이후 재매칭·가상호스트 선택, 그리고 %XX·..·연속 슬래시 정규화. nginx 의 전위 매칭 대소문자는 Linux 기준입니다. Caddy 정렬은 길이가 같은 matcher 의 타이브레이크까지 문서로 확정되지 않아, 이 설정에 대해 caddy adapt(v2.11.4)로 확인한 순서를 그대로 씁니다.

출처 · nginx location · Apache 섹션 병합 · Caddyfile 디렉티브

실험을 마쳤다면