====== 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]]