How to redirect a URL in Nginx
Solution 1:
Best way to do what you want is to add another server block:
server {
#implemented by default, change if you need different ip or port
#listen *:80 | *:8000;
server_name test.com;
return 301 $scheme://www.test.com$request_uri;
}
And edit your main server block server_name variable as following:
server_name www.test.com;
Important: New server
block is the right way to do this, if
is evil. You must use locations and servers instead of if
if it's possible. Rewrite
is sometimes evil too, so replaced it with return
.
Solution 2:
Similar to another answer here, but change the http in the rewrite to to $scheme like so:
server {
listen 80;
server_name test.com;
rewrite ^ $scheme://www.test.com$request_uri? permanent;
}
And edit your main server block server_name variable as following:
server_name www.test.com;
I had to do this to redirect www.test.com to test.com.