I am using nginx for managing multiple domains for reverse proxy.
I want to redirect all http request to https
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
However, I am not sure how can I make it work for rewriting non www requests to redirect to www in generic way excluding rewriting those requests that already has www in requests as if I just modify below rule it creates problem when someone write as www.domain.com it rewrite to www.www.domain.com
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://www.$host$request_uri;
}
Please check this image to understand the issue.

So I need to have some condition that handles that.