Apache2 Practice

Practice combining different settings

Apache 웹 서버를 사용하여 다양한 설정을 조합하는 실습을 진행해보겠습니다. 실습의 목표는 Apache의 여러 기능을 활용하여 웹사이트를 설정하고 배포하는 것입니다. 여기서는 다음과 같은 주제들을 다룰 것입니다:

  1. 가상 호스트 설정 (Virtual Hosts)
  2. URL 재작성 (URL Rewriting)
  3. SSL 설정 (SSL Configuration)
  4. 디렉토리 보안 설정 (Directory Security)
  5. 압축 설정 (Compression Configuration)
  6. 캐시 설정 (Caching Configuration)

1. 가상 호스트 설정 (Virtual Hosts)

가상 호스트 설정 파일 생성

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

Leave a Reply

Your email address will not be published. Required fields are marked *