====== nginx rewrite ====== * [[http://wiki.nginx.org/HttpRewriteModule|nginx HttpRewriteModule]] ===== 도메인이 www 로 시작하지 않는 것을 www로 가게 ===== * [[http://stackoverflow.com/questions/1629231/nginx-rewrite-non-www-prefixed-domain-to-www-prefixed-domain|Nginx rewrite non-www-prefixed domain to www-prefixed domain]] 참조 * 서브 도메인이 없을 경우 # 서브 도메인을 모두 무시하게 만든다. if ($host !~* ^www\.) { rewrite ^(.*)$ http://www.$host$1 permanent; } * 서브 도메인이 있다면 www 서브 도메인이 지정 안됐을 경우만 처리 # .com .net .org 에 대해서도 마찬가지 처리 if ($host ~* ^([a-z0-9\-]+\.(com|net|org))$) { set $host_with_www www.$1; rewrite ^(.*)$ http://$host_with_www$1 permanent; } ===== Query Parameter 삭제 ===== * nginx rewrite는 rewrite 후에 쿼리 파라미터를 자동으로 붙여버린다. * 쿼리 파라미터가 붙는 것을 막으려면 타겟 URL의 끝에 물음표(?)가 있어야 한다. rewrite ^ http://www.example.com/? last; # 쿼리 파라미터를 무시하고 무조건 http://www.example.com 으로 보내버림 ===== http로 온 것을 모두 https로 ===== * [[http://serverfault.com/questions/67316/in-nginx-how-can-i-rewrite-all-http-requests-to-https-while-maintaining-sub-dom|redirect - In Nginx, how can I rewrite all http requests to https while maintaining sub-domain?]] * 예제 server { listen 80; server_name my.domain.com; rewrite ^(.*) https://$host$1 permanent; } server { listen 443; server_name my.domain.com; # ..... } ===== 참고 ===== * [[https://www.cyberciti.biz/faq/linux-unix-nginx-redirect-all-http-to-https/|How To Nginx Redirect All HTTP Request To HTTPS Rewrite 301 Rules - nixCraft]]