Skip to content

Commit 4fd4d12

Browse files
포스팅 추가
1 parent 283e5d2 commit 4fd4d12

1 file changed

Lines changed: 194 additions & 0 deletions

File tree

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
---
2+
layout: post
3+
title: "Apache 아파치 서버 이전 후 한글이 깨지는 증상 해결법"
4+
date: 2023-02-10 04:22:00 +0900
5+
categories: [Apache, Web Server, 문제해결]
6+
tags: [Apache, 한글깨짐, charset, UTF-8, 인코딩, 서버이전]
7+
author: Kevin Park
8+
excerpt: "아파치 서버 이전 후 발생하는 한글 깨짐 현상의 원인과 charset 설정을 통한 해결 방법을 알아봅니다."
9+
---
10+
11+
서버 이전이나 새로운 아파치 설치 후 웹사이트에서 한글이 깨져서 보이는 경우가 있습니다. 이런 현상은 대부분 **charset 설정이 제대로 되지 않아서** 발생하는 문제입니다.
12+
13+
## 🚨 문제 증상
14+
15+
서버 이전 후 다음과 같은 증상이 나타납니다:
16+
17+
- 웹페이지의 한글이 `?` 또는 깨진 문자로 표시
18+
- 브라우저에서 인코딩을 수동으로 변경해야 정상 표시
19+
- 기존에 정상적으로 보이던 한글 콘텐츠가 깨짐
20+
- 데이터베이스에서 가져온 한글 데이터가 제대로 표시되지 않음
21+
22+
## 🔍 원인 분석
23+
24+
이러한 현상은 **charset 설정이 안되어서** 그럴 경우가 많습니다.
25+
26+
아파치 서버에서 기본 문자 인코딩이 설정되지 않으면, 브라우저가 적절한 인코딩을 추측해야 하는데 이 과정에서 한글이 제대로 해석되지 않아 깨짐 현상이 발생합니다.
27+
28+
## 📁 설정 파일 위치
29+
30+
문제를 해결하기 위해 다음 파일을 확인해야 합니다:
31+
32+
```
33+
/etc/apache2/conf-available/charset.conf
34+
```
35+
36+
## 🔧 현재 설정 확인
37+
38+
먼저 현재 charset 설정 파일의 내용을 확인해보겠습니다:
39+
40+
```bash
41+
sudo nano /etc/apache2/conf-available/charset.conf
42+
```
43+
44+
파일을 열어보면 다음과 같은 내용을 확인할 수 있습니다:
45+
46+
```apache
47+
# Read the documentation before enabling AddDefaultCharset.
48+
# In general, it is only a good idea if you know that all your files
49+
# have this encoding. It will override any encoding given in the files
50+
# in meta http-equiv or xml encoding tags.
51+
52+
# AddDefaultCharset UTF-8
53+
54+
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
55+
```
56+
57+
보시다시피 **`AddDefaultCharset UTF-8`가 주석 처리**되어 있는 것을 확인할 수 있습니다.
58+
59+
## ✅ 해결 방법
60+
61+
### 1. 주석 해제
62+
63+
다음 라인의 주석을 해제합니다:
64+
65+
**변경 전:**
66+
```apache
67+
# AddDefaultCharset UTF-8
68+
```
69+
70+
**변경 후:**
71+
```apache
72+
AddDefaultCharset UTF-8
73+
```
74+
75+
### 2. 설정 활성화
76+
77+
charset 설정을 활성화합니다:
78+
79+
```bash
80+
sudo a2enconf charset
81+
```
82+
83+
### 3. 서버 재시작
84+
85+
설정 변경 후 아파치 서버를 재시작하거나 리로드합니다:
86+
87+
```bash
88+
sudo service apache2 restart
89+
```
90+
91+
또는
92+
93+
```bash
94+
sudo service apache2 reload
95+
```
96+
97+
## 🧪 설정 확인
98+
99+
설정이 제대로 적용되었는지 확인하는 방법:
100+
101+
### 1. HTTP 헤더 확인
102+
103+
브라우저 개발자 도구에서 Response Headers를 확인하면 다음과 같이 표시되어야 합니다:
104+
105+
```
106+
Content-Type: text/html; charset=UTF-8
107+
```
108+
109+
### 2. 명령어로 확인
110+
111+
```bash
112+
curl -I http://your-domain.com
113+
```
114+
115+
### 3. 아파치 설정 테스트
116+
117+
```bash
118+
sudo apache2ctl configtest
119+
```
120+
121+
## 💡 추가 고려사항
122+
123+
### 1. HTML 메타 태그와의 관계
124+
125+
`AddDefaultCharset UTF-8` 설정은 HTML 파일의 메타 태그보다 우선합니다:
126+
127+
```html
128+
<meta charset="UTF-8">
129+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
130+
```
131+
132+
### 2. 가상 호스트별 설정
133+
134+
특정 가상 호스트에만 적용하고 싶다면:
135+
136+
```apache
137+
<VirtualHost *:80>
138+
ServerName example.com
139+
AddDefaultCharset UTF-8
140+
# 기타 설정...
141+
</VirtualHost>
142+
```
143+
144+
### 3. 디렉토리별 설정
145+
146+
특정 디렉토리에만 적용하고 싶다면:
147+
148+
```apache
149+
<Directory "/var/www/html/korean">
150+
AddDefaultCharset UTF-8
151+
</Directory>
152+
```
153+
154+
## ⚠️ 주의사항
155+
156+
1. **기존 인코딩 확인**: 모든 파일이 UTF-8로 저장되어 있는지 확인
157+
2. **데이터베이스 설정**: MySQL 등 데이터베이스의 charset도 함께 확인
158+
3. **백업**: 설정 변경 전 중요한 데이터는 반드시 백업
159+
4. **테스트**: 프로덕션 적용 전 테스트 환경에서 먼저 확인
160+
161+
## 🔍 추가 문제해결
162+
163+
### PHP와 함께 사용할 때
164+
165+
PHP 파일에서도 인코딩을 명시해주는 것이 좋습니다:
166+
167+
```php
168+
<?php
169+
header('Content-Type: text/html; charset=UTF-8');
170+
?>
171+
```
172+
173+
### .htaccess 파일 사용
174+
175+
디렉토리별로 .htaccess 파일을 사용할 수도 있습니다:
176+
177+
```apache
178+
AddDefaultCharset UTF-8
179+
```
180+
181+
## 📚 마무리
182+
183+
아파치 서버 이전 후 한글 깨짐 현상은 대부분 charset 설정 누락으로 발생합니다.
184+
185+
**핵심 해결 단계:**
186+
1. `/etc/apache2/conf-available/charset.conf` 파일 확인
187+
2. `AddDefaultCharset UTF-8` 주석 해제
188+
3. 설정 활성화 및 서버 재시작
189+
190+
이 방법으로 대부분의 한글 깨짐 문제를 해결할 수 있습니다. 만약 여전히 문제가 지속된다면 데이터베이스 charset 설정이나 PHP 설정도 함께 확인해보시기 바랍니다.
191+
192+
---
193+
194+
💡 ****: 새로운 서버 구축 시에는 처음부터 UTF-8 charset을 설정해두면 이런 문제를 예방할 수 있습니다!

0 commit comments

Comments
 (0)