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의 다양한 기능을 활용하여 웹사이트를 더욱 효과적이고 안전하게 운영하는 데 도움이 됩니다. 실습을 통해 얻은 경험은 실제 환경에서 웹사이트를 관리하는 데 큰 도움이 될 것입니다.