#HTTP 헤더
#Apache Web Server
#HTTP Redirect
#Location Header
#301 Redirect
#302 Redirect
#301 영구이전
#301 Moved Permanently
#302 임시이전
#302 Found
#VirtualHost
#오라클 클라우드
#Oracle Cloud Free Tier
#DDNS
#Dynamic DNS
#dynu.com
#dynu.net
[2020년 01월 28일]Apache 웹서버 2.2: VirtualHost 의 도메인 영구 이전 (Permanent Redirect) 설정: "HTTP/1.1 301 Moved Permanently "
요약
- Apache2 웹서버 설정의
<VirtualHost> 항목에
RedirectPermanent / http://hostname.to.redirect/
추가
sudo service apache2 restart 실행
302 임시이전 (302 Moved Temporarily )
2006년 부터 유지해오던 도메인인 kristalinfo.com 이 2020년 4월 4일 부터 등록만료된다.
해당 사업이 이미 2008년 2월 29일에 종료되었으나 관련 문의가 종종 있어서 이 도메인을
유지하고 있었다.
도메인 유지와 서버 호스팅에 비용이 제법 들어가기 때문에 이제는 도메인은 유지하지 않고
무료서버에 누리집만 남기기 위한 방법으로 오라클 클라우드(무료 서버 제공)와
동적 DNS(Dynamic DNS; DDNS) 서비스인 dynu.com 을 이용하려고 하였다.
그 과정은 다음과 같다.
원래 서버의 Apache2 설정의 kristalinfoc.com 에 해당하는 VirtualHost
항목에 Redirect 지시어로
모든 HTTP 요청을 http://kristalinfo.dynu.net/ 으로 보내도록 설정한다.
[root@www ~]# uname -a
Linux www 2.6.18-371.12.1.el5 #1 SMP Wed Sep 3 16:22:34 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@www ~]# httpd -v
Server version: Apache/2.2.3
Server built: Jul 23 2014 10:09:41
[root@www ~]# tail -9 /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerName www.kristalinfo.com
ServerAlias kristalinfo.com
Redirect / http://kristalinfo.dynu.net/
</VirtualHost>
Header unset X-Powered-By
[root@www ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@www ~]#
위에서 보듯이 원 서버는 2014년에 구축된 리눅스 서버이며 Apache/2.2.3 기반으로
누리집을 운영하고 있었다.
kristalinfo.com 의 가상호스트(<VirtualHost> ) 항목에
Redirect / http://kristalinfo.dynu.net/ 을 추가하고
아파치 웹서버를 재기동하였다.
root@kali:~# curl -I http://www.kristalinfo.com/test
HTTP/1.1 302 Found
Date: Tue, 28 Jan 2020 06:34:23 GMT
Server: Apache
Location: http://kristalinfo.dynu.net/test
Connection: close
Content-Type: text/html; charset=iso-8859-1
root@kali:~#
위는 Kali Linux에서 www.kristalinfo.com 에는 존재하지 않는 경로인
http://www.kristalinfo.com/test 의 HTTP 요청에 대한 서버의
응답 헤더이다.
404가 나오는 것이 일반적이어야 하나 Redirect 지시자에 의해
웹 브라우저(curl )로 HTTP/1.1 302 Found 헤더와
Location: http://kristalinfo.dynu.net/test 헤더가 전달되는
것을 관찰할 수 있다.
액면상으로는 원하는 것을 모두 얻었다.
그런데 여기서 하나 더 원하는 것은 다가오는 2개월 여 후인 4월 4일에 만료되는
kristalinfo.com 을 kristalinfo.dynu.net 으로 완전히 대체하는 것이다.
때문에 302 Redirect 만으로는 부족하다.
301 Redirect 응답이 더 좋은 선택이다.
[root@www ~]# tail -9 /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerName www.kristalinfo.com
ServerAlias kristalinfo.com
Redirect Permanent / http://kristalinfo.dynu.net/
</VirtualHost>
Header unset X-Powered-By
[root@www ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@www ~]#
Redirect 지시자에 Permanent 라는 단어를 덧붙였다.
이렇게 하면 웹 서버는 301 Redirect로 응답한다.
(참고: Apache 2.2는 Redirect Permanent (공백O)와 RedirectPermanent (공백X)을 동일하게 처리하였다.)
root@kali:~# curl -I http://www.kristalinfo.com/testxxxtest
HTTP/1.1 301 Moved Permanently
Date: Tue, 28 Jan 2020 06:43:19 GMT
Server: Apache
Location: http://kristalinfo.dynu.net/testxxxtest
Connection: close
Content-Type: text/html; charset=iso-8859-1
root@kali:~#
칼리에서 curl 을 이용하여 HTTP 헤더를 열람해보면
HTTP/1.1 301 Moved Permanently 헤더와
Location: http://kristalinfo.dynu.net/testxxxtest 헤더가
전달되는 것을 볼 수 있다.
인간이 웹 브라우저로 접근할 때 서버의 응답에 전달되는 301 Redirect와 302 Redirect는 동일하다.
그러나 구글(google.com)이나 빙(bing.com)과 같은 웹 검색 엔진의 입장에서는 처리가 달라진다.
302 Redirect는 임시로 URL이 이전되었다는 뜻이므로 검색엔진의 입장에서는 원래 URL을 더 중시할
것이다.
반면 301 Redirect는 원래 URL을 새로운 도메인이 완전히 대체했다는 것이므로
새로운 URL을 더 중요시하게 된다.
2개월 여 내에 새로운 URL로 검색엔진 갱신을 위해서는 301 영구이전 방식이 효율적일 것이라
판단하였다.
[처음 작성한 날: 2020.01.28]
[마지막으로 고친 날: 2020.01.29]
< 이전 글 : Offensive Security, Kali Linux 2020.1 배포판 발표 - 범용 리눅스로의 전환 시도? (2020.01.29)
> 다음 글 : 루팅없이 LG V40 씽큐 안드로이드 설정만으로 좀더 빠르게 좀더 오래 배터리 쓰기 (2020.01.27)
|