More often than not there are times when the initial thought process around a product changes mid way through development and one might need to change the application URL. There are two ways of implementing this change in nginx.
Redirect from non-www to www
server {
server_name example.com;
# Option 1
return 301 $scheme://$host$request_uri;
# Option 2
rewrite ^ http://$host$request_uri? permanent;
}
Redirect from http to https
server {
server_name example.com;
# Option 1
return 301 https://$server_name$request_uri;
# Option 2
rewrite ^ https://$server_name$request_uri? permanent;
}
REWRITE
- Only the part of the original URL that matches the regex is rewritten.
- Slower than a Return.
- Returns HTTP 302 (Moved Temporarily) in all cases, irrespective of permanent.
- Suitable for temporary URL changes.
RETURN
- The entire URL is rewritten to the URL specified.
- Faster response than rewrite.
- Returns HTTP 301 (Moved Permanently).
- Suitable for permanent changes to the URL.
- No need to set permanent.
More details on nginx can be found here