Practice combining different settings
Apache 웹 서버를 사용하여 다양한 설정을 조합하는 실습을 진행해보겠습니다. 실습의 목표는 Apache의 여러 기능을 활용하여 웹사이트를 설정하고 배포하는 것입니다. 여기서는 다음과 같은 주제들을 다룰 것입니다:
- 가상 호스트 설정 (Virtual Hosts)
- URL 재작성 (URL Rewriting)
- SSL 설정 (SSL Configuration)
- 디렉토리 보안 설정 (Directory Security)
- 압축 설정 (Compression Configuration)
- 캐시 설정 (Caching Configuration)
1. 가상 호스트 설정 (Virtual Hosts)
가상 호스트 설정 파일 생성
두 개의 도메인 example1.com과 example2.com에 대해 가상 호스트를 설정합니다.
sudo nano /etc/apache2/sites-available/example1.com.conf
설정 파일 내용:
<VirtualHost *:80>
ServerAdmin webmaster@example1.com
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
<Directory /var/www/example1.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example1.com-error.log
CustomLog ${APACHE_LOG_DIR}/example1.com-access.log combined
</VirtualHost>
두 번째 가상 호스트 파일을 생성합니다:
sudo nano /etc/apache2/sites-available/example2.com.conf
설정 파일 내용:
<VirtualHost *:80>
ServerAdmin webmaster@example2.com
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
<Directory /var/www/example2.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example2.com-error.log
CustomLog ${APACHE_LOG_DIR}/example2.com-access.log combined
</VirtualHost>
디렉토리 생성 및 파일 복사
sudo mkdir /var/www/example1.com sudo mkdir /var/www/example2.com sudo cp /var/www/html/index.html /var/www/example1.com/index.html sudo cp /var/www/html/index.html /var/www/example2.com/index.html
가상 호스트 활성화 및 Apache 재시작
sudo a2ensite example1.com.conf sudo a2ensite example2.com.conf sudo systemctl restart apache2
2. URL 재작성 (URL Rewriting)
mod_rewrite 모듈 활성화
sudo a2enmod rewrite sudo systemctl restart apache2
.htaccess 파일 작성
example1.com 디렉토리에 .htaccess 파일을 생성하여 URL 재작성 규칙을 설정합니다.
sudo nano /var/www/example1.com/.htaccess
내용:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html [L]
3. SSL 설정 (SSL Configuration)
SSL 모듈 및 Certbot 설치
sudo apt-get install certbot python3-certbot-apache
SSL 인증서 발급 및 설정
sudo certbot --apache -d example1.com -d www.example1.com sudo certbot --apache -d example2.com -d www.example2.com
4. 디렉토리 보안 설정 (Directory Security)
인증 설정
example2.com의 특정 디렉토리를 보호합니다.
.htpasswd 파일 생성
sudo htpasswd -c /etc/apache2/.htpasswd username
가상 호스트 설정 파일 수정
sudo nano /etc/apache2/sites-available/example2.com.conf
내용 추가:
<Directory /var/www/example2.com/protected>
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
Apache 재시작:
sudo systemctl restart apache2
디렉토리 생성 및 파일 복사
sudo mkdir /var/www/example2.com/protected sudo cp /var/www/html/index.html /var/www/example2.com/protected/index.html
5. 압축 설정 (Compression Configuration)
mod_deflate 모듈 활성화
sudo a2enmod deflate sudo systemctl restart apache2
압축 설정 추가
가상 호스트 설정 파일에 압축 설정을 추가합니다:
sudo nano /etc/apache2/sites-available/example1.com.conf sudo nano /etc/apache2/sites-available/example2.com.conf
내용 추가:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>
Apache 재시작:
sudo systemctl restart apache2
6. 캐시 설정 (Caching Configuration)
mod_cache 모듈 활성화
sudo a2enmod cache sudo a2enmod cache_disk sudo systemctl restart apache2
캐시 설정 추가
가상 호스트 설정 파일에 캐시 설정을 추가합니다:
sudo nano /etc/apache2/sites-available/example1.com.conf sudo nano /etc/apache2/sites-available/example2.com.conf
내용 추가:
<IfModule mod_cache.c>
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheIgnoreHeaders Set-Cookie
CacheRoot /var/cache/apache2/mod_cache_disk
CacheEnable disk /
CacheHeader on
CacheDefaultExpire 600
CacheMaxExpire 86400
CacheLastModifiedFactor 0.5
CacheIgnoreCacheControl No-Store
</IfModule>
Apache 재시작:
sudo systemctl restart apache2
결론
위 실습을 통해 Apache 웹 서버에서 다양한 설정을 조합하여 실제 웹사이트를 설정하고 배포하는 방법을 배웠습니다. 각 단계는 Apache의 다양한 기능을 활용하여 웹사이트를 더욱 효과적이고 안전하게 운영하는 데 도움이 됩니다. 실습을 통해 얻은 경험은 실제 환경에서 웹사이트를 관리하는 데 큰 도움이 될 것입니다.
