할고래DO에 성공적으로 HTTPS를 적용한 후 모든 요청이 SSL/TLS를 사용하도록 강제하려고 한다. NGINX를 활용하여 포트 80으로 들어오는 모든 요청을 HTTPS로 리다이렉트 한다.
server {
listen 80;
server_name www.domain.com;
return 301 https://www.domain.com$request_uri;
}
if 와 rewrite 를 사용하는 방법도 있는데,
if ($scheme != "https") {
rewrite ^ https://www.mydomain.com$uri permanent;
}
불필요한 if condition 의 연산 및 rewrite 의 regex 연산이 이루어지기 때문에 이는 권장되지 않는다.
다음 두 가지 용도로 사용된다.
가능한한 return 을 사용하는 것이 권장된다.
try_files file1, file2, ... uri;
try_files 뒤에 지정된 파일들 중에 존재하는 첫번째 파일을 반환한다. 존재하지 않으면 nginx 내부에서 uri로 redirect한다.
ex) SPA 에서 index 이외의 route 에서 새로고침을 할때
할고래DO 에도 적용되어 있다.
try_files $uri $uri/ /index.html;
https://www.nginx.com/blog/creating-nginx-rewrite-rules/
https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/
https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite