요구사항 중에 서비스의 도메인을 변경을 하는데 기존 도메인은 새로운 도메인으로 리다이렉션하게 해달라는 요구사항이 있었다. 고객의 서버는 윈도우 서버로 IIS가 설치되어 있을것으로 예상하고 IIS로 진행하려고 했다. 그러나 IIS가 설치되어 있지 않았고, 외부 인터넷이 안되어서 따로 다운로드해서 와야 되는 상황이었다. 이런 상황에 놓여서 몇 가지 고려해보았다. IIS를 다른 서버에서도 사용하는가하면 그렇지 않았다. 그렇다면 IIS가 Nginx나 Apache보다 나은가하면 많은 경우에 Nginx나 Apache가 더 빠르고 유연하다고 알려져 있다. IIS를 사용하는 것이 유일한 방법이 아닌 이 상황에서 Nginx를 채택하는 것이 더욱 타당해보였고, Nginx로 리다이렉션하도록 구성하게 되었다.
Nginx 설정 파일 (nginx.conf
또는 해당 사이트 설정 파일)에 다음과 같은 리다이렉트 규칙을 추가한다.
location / {
rewrite ^/(.*)$ http://asdf.co.kr/$1 permanent;
}
서버에 ssl 인증서도 추가해야될 것이다...
Certbot 설치:
Let's Encrypt 인증서를 발급받기 위해 Certbot이라는 도구를 사용합니다. 먼저 Certbot을 설치합니다.
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
인증서 발급:
아래의 명령어를 사용하여 Nginx 설정을 자동으로 인식하고 인증서를 발급받습니다.
sudo certbot --nginx
프롬프트에 따라 도메인 이름과 이메일 주소를 입력합니다. 몇 가지 질문에 답한 후에 인증서가 발급되고 Nginx 설정이 자동으로 업데이트됩니다.
인증서 갱신 설정:
Let's Encrypt의 인증서는 90일마다 갱신해야 합니다. 자동 갱신을 설정하기 위해 crontab에 다음을 추가합니다.
sudo crontab -e
아래의 내용을 crontab에 추가하여 인증서가 자동으로 갱신되도록 설정합니다.
15 3 * * * /usr/bin/certbot renew --quiet
Nginx 설정 확인:
Certbot은 Nginx 설정을 자동으로 수정합니다. 그러나 확인 및 필요한 추가 수정을 위해 Nginx 설정 파일을 열어봅니다.
sudo nano /etc/nginx/sites-available/your-domain-config
설정에 다음과 같은 내용이 추가되었는지 확인합니다.
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/your-domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain/privkey.pem;
Nginx 재시작:
모든 변경 사항을 적용하기 위해 Nginx를 재시작합니다.
sudo systemctl restart nginx
이제 Nginx에서 HTTPS를 사용하여 웹 사이트에 액세스할 수 있습니다. Let's Encrypt와 Certbot은 사용하기 쉬우며, 대부분의 경우 자동 설정으로 충분하지만, 특별한 요구 사항이 있을 경우 수동 설정도 가능합니다.
네, 만약 이미 .pem
파일 (인증서 및 키)을 가지고 있다면, Nginx의 설정만 수정하여 SSL을 설정할 수 있습니다.
PEM 키와 인증서 파일 위치 확인:
먼저, PEM 키와 인증서 파일이 서버 내의 어떤 위치에 있는지 확인하세요. 일반적으로 다음과 같은 두 파일이 있어야 합니다:
your-cert.pem
: 인증서 파일your-private-key.pem
: 비공개 키 파일Nginx 설정 수정:
Nginx 설정 파일을 열어 수정합니다.
sudo nano /etc/nginx/sites-available/your-domain-config
설정 파일에서 다음과 같이 해당 부분을 수정하거나 추가합니다:
server {
listen 443 ssl;
server_name your-domain.com www.your-domain.com;
ssl_certificate /path/to/your-cert.pem;
ssl_certificate_key /path/to/your-private-key.pem;
# 기타 설정 ...
}
/path/to/
는 실제 인증서와 키 파일이 위치한 경로로 바꿔주세요.
Nginx 재시작:
변경 사항을 적용하고 Nginx를 재시작합니다.
sudo systemctl restart nginx
이제 웹 서버는 제공받은 PEM 키와 인증서를 사용하여 HTTPS 연결을 지원하게 됩니다.
추가적으로, SSL/TLS 설정을 최적화하려면 ssl_protocols
, ssl_ciphers
, ssl_session_cache
와 같은 추가 설정을 고려할 수 있습니다. 이러한 설정은 웹 서버의 보안을 강화하고 성능을 향상시키는 데 도움을 줍니다.