# πŸ“– Pingclairfile Pingclairfile은 μ„€μ • μ–Έμ–΄μž…λ‹ˆλ‹€. Caddyfile κ΄€λ‘€λ₯Ό 따라 선택적인 global options 블둝과 μ§€μ‹œμ–΄λ₯Ό 담은 site block으둜 κ΅¬μ„±λ©λ‹ˆλ‹€. 이 νŽ˜μ΄μ§€λŠ” μ–Έμ–΄ 자체λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€. λ°›μ•„λ“€μ΄λŠ” μ§€μ‹œμ–΄λŠ” [μ§€μ‹œμ–΄ λͺ©λ‘](/ko/reference/directives/)을 μ°Έκ³ ν•˜μ‹­μ‹œμ˜€. ## πŸ”€ μ–΄νœ˜ κ·œμΉ™ | κ·œμΉ™ | λ‚΄μš© | | --- | --- | | 주석 | `#`λΆ€ν„° 쀄 λκΉŒμ§€. | | λ”°μ˜΄ν‘œ | 곡백이 μžˆλŠ” 값은 `"`둜 λ¬ΆμŠ΅λ‹ˆλ‹€. λ”°μ˜΄ν‘œλŠ” νŒŒμ‹± 전에 μ œκ±°λ©λ‹ˆλ‹€. | | μ‹œκ°„ 길이 | λ‹¨μœ„κ°€ ν•„μš”ν•©λ‹ˆλ‹€. `30s`, `5m`, `1h`. 길이가 ν•„μš”ν•œ μžλ¦¬μ— 맨 숫자λ₯Ό μ“°λ©΄ κ±°λΆ€λ©λ‹ˆλ‹€. | | λŒ€μ†Œλ¬Έμž | μ§€μ‹œμ–΄μ™€ μ˜΅μ…˜ 이름은 μ†Œλ¬Έμžμž…λ‹ˆλ‹€. | | 자리 ν‘œμ‹œμž | `{host}`, `{path}`, `{args[0]}`, `{block}` 등은 각 μ§€μ‹œμ–΄κ°€ μ •ν•œ μœ„μΉ˜μ—μ„œ μ „κ°œλ©λ‹ˆλ‹€. | ## 🌐 μ£Όμ†Œ Site block은 μ£Όμ†Œλ‘œ 이름을 λΆ™μž…λ‹ˆλ‹€. μ£Όμ†ŒλŠ” λ¦¬μŠ€λ„ˆλ₯Ό μ •ν•˜κ³ , 곡개 이름이라면 μžλ™ HTTPS 적용 여뢀도 μ •ν•©λ‹ˆλ‹€. ```caddyfile example.com { # host: ports 443 and 80, automatic HTTPS localhost:8080 { # host and port :8080 { # any host on this port http://example.com { # force plaintext ``` ν¬νŠΈλŠ” μ£Όμ†Œμ˜ 일뢀이며 λ³„λ„μ˜ `listen` μ§€μ‹œμ–΄κ°€ μ•„λ‹™λ‹ˆλ‹€. κ·Έλž˜μ„œ μ£Όμ†Œμ™€ λ¦¬μŠ€λ„ˆκ°€ μ–΄κΈ‹λ‚  수 μ—†μŠ΅λ‹ˆλ‹€. ## 🧭 맀처 맀처λ₯Ό λ°›λŠ” μ§€μ‹œμ–΄λŠ” μΌμΉ˜ν•˜λŠ” μš”μ²­μ—λ§Œ μ μš©λ©λ‹ˆλ‹€. λ§€μ²˜λŠ” 쀄 μ•ˆμ— μ“°κ±°λ‚˜ `@name`으둜 μ„ μ–Έν•΄ μ΄λ¦„μœΌλ‘œ μ°Έμ‘°ν•©λ‹ˆλ‹€. ```caddyfile example.com { @api path /api/* header @api Cache-Control "no-store" handle /assets/* { file_server ./assets } } ``` `handle` 블둝은 λΌμš°νŠΈλ³„λ‘œ μ§€μ‹œμ–΄λ₯Ό λ¬ΆμŠ΅λ‹ˆλ‹€. λ§€μ²˜κ°€ μ—†λŠ” `handle`은 κ·Έ μ‚¬μ΄νŠΈμ˜ ν΄λ°±μž…λ‹ˆλ‹€. ## 🧩 μŠ€λ‹ˆνŽ«κ³Ό import μŠ€λ‹ˆνŽ«μ€ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ‘°κ°μž…λ‹ˆλ‹€. `(name) { ... }`둜 μ„ μ–Έν•˜κ³  `import name`으둜 κ°€μ Έμ˜€λ©°, ν˜ΈμΆœν•˜λŠ” μͺ½μ—μ„œ 블둝을 받을 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ```caddyfile (proxied) { https://{args[0]} { encode zstd gzip {block} } } import proxied example.com { reverse_proxy 127.0.0.1:3000 } ``` 아무것도 λ°›μ§€ λͺ»ν•œ 자리 ν‘œμ‹œμžλŠ” 아무것도 μ‚½μž…ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ, `{block}`을 μ“΄ μŠ€λ‹ˆνŽ«μ€ ν˜ΈμΆœν•˜λŠ” μͺ½μ΄ 블둝을 μ£Όμ§€ μ•Šμ•„λ„ μ»΄νŒŒμΌλ©λ‹ˆλ‹€. ## 🧰 λͺ…령쀄 도ꡬ λͺ…λ Ήμ€„μ—λŠ” 자체 λ ˆνΌλŸ°μŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. [λͺ…령쀄](/ko/reference/command-line/)이 λͺ¨λ“  ν•˜μœ„ λͺ…령을 ν”Œλž˜κ·Έμ™€ κΈ°λ³Έκ°’κΉŒμ§€ λ‚˜μ—΄ν•©λ‹ˆλ‹€. 섀정을 μž‘μ„±ν•  λ•Œ μ“°λŠ” 것은 그쀑 μ„Έ κ°€μ§€μž…λ‹ˆλ‹€. `pingclair validate`λŠ” νŒŒμΌμ„ μ»΄νŒŒμΌν•˜κ³  첫 번째 문제λ₯Ό μ§‘μ–΄ μ£Όλ©°, `pingclair adapt --pretty`λŠ” κ·Έ 파일이 μ»΄νŒŒμΌλ˜λŠ” JSON을 좜λ ₯ν•˜κ³ , `pingclair fmt`λŠ” 그것을 μ„œμ‹ν™”ν•©λ‹ˆλ‹€. ## 🚫 언어에 ν¬ν•¨λ˜μ§€ μ•ŠλŠ” 것 ν˜•μ‹μ΄ μ •μ˜ν•œ 이름은 μ„œλ²„κ°€ κ΅¬ν˜„ν•œ μˆ˜λ³΄λ‹€ λ§ŽμŠ΅λ‹ˆλ‹€. μΈμ‹λ˜μ§€λ§Œ κ΅¬ν˜„μ΄ μ—†λŠ” 이름은 λ‘œλ“œ μ‹œμ μ— 이름을 λ“€μ–΄ κ±°λΆ€ν•˜κ³  "κΈ°λŠ₯이 μ—†λ‹€"κ³  μ•Œλ¦½λ‹ˆλ‹€. κΆŒμœ„ μžˆλŠ” λͺ©λ‘μ€ μ„œλ²„ μ €μž₯μ†Œμ˜ README에 있으며, [ν”„λ‘œμ νŠΈ μƒνƒœ](/ko/project/status/) νŽ˜μ΄μ§€κ°€ μ£Όμš” λΆ„λ₯˜λ₯Ό μ •λ¦¬ν•©λ‹ˆλ‹€.