웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > webdevetc

www에서 non-www 도메인으로 설정방법, nginx

Last Modified : 2019-01-06 / Created : 2018-03-30
10,187
View Count

도메인을 구매하여 사용하는 경우 다음처럼 두 가지 방식의 도메인 주소를 생각할 수 있습니다. 하나는 도메인 앞에 www가 있는 경우이고 하나는 www가 없는 경우입니다.

1. www.webisfree.com
2. webisfree.com


물론 둘 다 사용할 수 있습니다. 다만 검색엔진을 고려하면 하나로 통일하는 편이 좋을 것입니다. 그렇다면 어떻게하면 될까요? 만약 www가 있는 경우 non-www 주소로 바꾸는 방법을 알아보겠습니다.

우선 www.webisfree.com으로 들어온 방문자를 www가 없는 non-www 주소 webisfree.com으로 주소를 리다이렉트(redirect)해야합니다. 이 경우 nginx 환경에서 어떻게 설정하는지 알아봅니다.




# www에서 non-www로 이동하는 nginx 설정

만약 www가 없는 주소를 사용하고 있는 경우라면 www로 들어온 주소에 대하여 non-www로 redirect가 필요합니다. 이를 위해서 먼저 /etc/nginx/sites-available/에 있는 설정파일을 수정해야합니다. 여기서 server 블록을 찾아 다음처럼 수정합니다.

1. sever 블록 찾기
2. url을 이동하는 코드 추가

server {
  listen 80;
  server_name www.webisfree.com;
  return 301 http://webisfree.com$request_uri;
}

위 코드는 80포트로 접속된 www.webisfree.com 방문자를 자동으로 301 리다이렉트되어 페이지가 http://webisfree.com으로 이동시키게됩니다. 여기서 $request_uri는 내장 변수로 요청된 uri 주소값을 저장하고 있습니다.


! https인 경우 www를 non-www 주소로 리다이렉트 방법

만약 보안프로토콜 SSL을 사용하는 경우는 어떻게될까요? 추가적인 설정이 필요하게됩니다. 중요한 부분은 redirect 되는 server 블록 역시 ssl 인증에 필요한 속성이 추가되어 있어야 동작합니다.
server {
  listen 443;
  server_name www.webisfree.com;
  return 301 https://webisfree.com$request_uri;

  ssl on;
  ssl_certificate /etc/nginx/ssl/webisfree/bundle-ssl.crt;
  ssl_certificate_key /etc/nginx/ssl/webisfree/my.key;
}

이제 추가된 443포트로 접속된 SSL 주소 역시 www에서 non-www로 이동이 가능하게되었습니다.



# http로 접속된 사용자를 https로 이동하기

이번에는 http로 접속된 사용자들의 주소를 SSL을 사용하는 보안프로토콜 https://로 redirect하려고 합니다 이때도 설정이 필요하며 아래와 같이 http 블럭에 리다이렉트 코드를 추가합니다. listen 80 부분이 되겠죠.
server {
  listen 80;
  server_name webisfree.com www.webisfree.com
  return 301 https://$server_name$request_uri;
}

이제 80으로 접속된 경우 해당 주소로 이동합니다. 여기까지 도메인 주소 www에서 non-www로 바꾸는 방법을 모두 알아보았습니다.

Previous

nginx 413 Request Entity Too Large 에러 해결하기, 파일 업로드 사이즈

Previous

리눅스(Linux) 사용자 패스워드 변경 방법