HTTPS 인증서(SSL 인증서)를 적용했는데, 사이트에 http://로도 접속되길 원하는 경우”**에는 크게 두 가지 방법이 있습니다.
“HTTPS 인증서(SSL 인증서)를 적용했는데, 사이트에 http://로도 접속되길 원하는 경우”에는 크게 두 가지 방법이 있습니다.
- HTTP -> HTTPS로 자동 리다이렉트
- HTTP와 HTTPS를 동시에 허용 (사용자가 http://로 접속해도 그대로 http 통신을 유지)
일반적으로 보안과 **검색엔진 최적화(SEO)**를 위해서는 첫 번째 방법(자동 리다이렉트)을 권장하지만, 상황에 따라 두 번째 방식을 쓰기도 합니다.
아래는 Apache/Nginx 등 대표적인 웹 서버 기준으로 간단히 설명합니다.
1. HTTP와 HTTPS 모두 열어 두는 기본 개념
서버가 포트 80(HTTP)과 포트 443(HTTPS)을 둘 다 리스닝(listen)하도록 설정
- 도메인 DNS 설정에서 A 레코드는 동일 서버 IP를 가리키고,
- 서버 자체(방화벽)에서도 80/443 포트를 열어 둬야 합니다.
SSL 인증서(예: Let’s Encrypt, 상용 인증서) 구성
- 웹 서버(아파치, 엔진엑스) 설정 파일에 SSL 인증서 경로와 비밀키 경로를 등록
443포트 서버 블록(가상호스트)에서ssl on;(Nginx) 또는SSLEngine on(Apache) 등이 활성화
HTTP 접근 허용 여부
- 보통은 HTTP(포트 80) 요청이 들어오면 **자동으로 HTTPS(443)**로 리다이렉트(301, 302)합니다.
- 하지만 특정 이유로 “http://”도 그대로 접속 가능하게 하려면, HTTP 서버 블록에서 별도 리다이렉트 없이 그냥 응답하게 설정하면 됩니다.
2. 대표적인 설정 예시
2.1 Nginx 예시
#---------------------------
# 1) HTTP(80) 설정
#---------------------------
server {
listen 80;
server_name example.com www.example.com;
# 방법 A) HTTP -> HTTPS 리다이렉트 (권장)
return 301 https://$host$request_uri;
# 방법 B) HTTP 그대로 사용 (리다이렉트 안 함)
# root /var/www/html;
# index index.html index.php;
# ... (이하 일반 HTTP 설정)
}
#---------------------------
# 2) HTTPS(443) 설정
#---------------------------
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
# ssl_protocols TLSv1.2 TLSv1.3; ...
root /var/www/html;
index index.html index.php;
# ... 추가 설정(php-fpm, location 등)
}
- 방법 A: HTTP 블록에서
return 301 https://$host$request_uri;로 모든 HTTP 요청을 HTTPS로 리다이렉트 - 방법 B:
root와index등을 설정하여 HTTP로도 응답- 이 경우, 사용자가
http://example.com으로 들어오면 그대로 http 통신 https://example.com은 인증서를 사용해 보안 통신
- 이 경우, 사용자가
2.2 Apache 예시
#---------------------------
# 1) HTTP(80) 설정
#---------------------------
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
# 방법 A) HTTP -> HTTPS 리다이렉트
# Redirect permanent / https://example.com/
# 방법 B) HTTP 그대로 사용 (리다이렉트 안 함)
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
#---------------------------
# 2) HTTPS(443) 설정
#---------------------------
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example.crt
SSLCertificateKeyFile /etc/ssl/private/example.key
# SSLCertificateChainFile /etc/ssl/certs/example-ca.crt (체인 인증서 필요한 경우)
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
- HTTP 가상호스트에서
Redirect지시어를 쓰면 자동 HTTPS 전환(권장) - 혹은
Redirect줄을 빼고, DocumentRoot 등을 지정해 놓으면 HTTP로도 접속 가능하게 됨
3. 주의사항
HTTP 그대로 둔 상태의 보안 이슈
- 로그인, 민감 정보 전송 시 암호화되지 않으므로 도청·변조 위험
- 크롬 등 주요 브라우저에서 “안전하지 않음(Not Secure)” 경고 표시
SEO(검색엔진 최적화)
- 구글 검색 등을 기준으로, HTTPS가 권장되며, HTTP와 HTTPS가 동일 콘텐츠로 동시에 노출되면 중복 콘텐츠 이슈가 생길 수 있음
- 일반적으로 HTTPS만 사용하거나, HTTP → HTTPS로 리다이렉트 하는 것이 표준
쿠키/세션 혼합 문제
- HTTP와 HTTPS를 모두 허용할 경우 세션 쿠키가 혼합되어 세션 이슈가 발생할 수 있음
- 보안을 위해서는
Secure쿠키,HttpOnly설정 등을 반드시 확인
HSTS(HTTP Strict Transport Security)
- HTTPS 사이트에서 HSTS를 활성화하면, 브라우저가 자동으로 HTTP 접속을 차단 → “무조건 HTTPS”
- HSTS를 쓴다면 더 이상 HTTP로 접속이 불가능하니, “HTTP 유지”와는 반대 방향
4. 결론
HTTPS 인증서 사이트이면서도 HTTP로도 접속 가능하게 하려면,
- DNS가 동일 도메인을 서버 IP로 연결
- 웹 서버가 80/443 포트 모두 열고
- HTTP 가상호스트 설정을 “리다이렉트”가 아닌 “직접 서빙” 모드로 두면 됨.
그러나 대부분은 HTTP → HTTPS 자동 리다이렉트를 쓰는 것이 권장(보안·SEO 측면).
특수한 용도(“데이터 전송 필요 없음”, “단순 안내 페이지” 등)라면 HTTP를 그대로 열어놓을 수도 있지만, 개인정보나 로그인이 있는 서비스라면 반드시 HTTPS를 기본으로 운영해야 합니다.

댓글
댓글 쓰기