# Require 'www' for https://example.com

**URL:** <https://www.ruby-forum.com/t/require-www-for-https-example-com/227667>\
**Category:** NGINX\
**Created:** [March 22, 2013, 11:44pm UTC](https://www.ruby-forum.com/t/require-www-for-https-example-com/227667 "2013-03-22T23:44:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![openletter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/f1d935/32.png) [@openletter](https://www.ruby-forum.com/u/openletter)\
**Post date:** [March 22, 2013, 11:44pm UTC](https://www.ruby-forum.com/t/require-www-for-https-example-com/227667/1 "2013-03-22T23:44:58Z")

</div>

I am setting up a server that will be for a B2B business, and I want the  
whole site to be served as [https://www.example.com/](https://www.example.com/)

I have gotten a certificate and [https://www.example.com](https://www.example.com) runs just fine,  
but  
I can’t figure out how to require [https://www.example.com](https://www.example.com) when a user  
tries  
to go to [https://example.com](https://example.com).

In reading through the [nginx.org](http://nginx.org) site, it seems like rewrites and if  
statements are discouraged. I did figure out how to require  
[http://www.example.com/](http://www.example.com/) by using the following in my server block file:

server {  
listen [::]:80;  
server\_name [example.com](http://example.com) \*.example.com;  
return 301 $scheme://www.example.com$request\_uri;  
}

But doing something similar for 443 doesn’t seem to work.

Can someone please help me out or point to a good page on setting up for  
this?

Posted at Nginx Forum:

> **[Require 'www' for https://example.com](https://forum.nginx.org/read.php?2,237695,237695#msg-237695)**
>
> I am setting up a server that will be for a B2B business, and I want the whole site to be served as https://www.example.com/ I have gotten a certificate and https://www.example.com runs just fine, but I can't figure out how to require...

---

<div class="post-metadata">

**Author:** ![openletter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/f1d935/32.png) [@openletter](https://www.ruby-forum.com/u/openletter)\
**Post date:** [March 23, 2013, 12:50am UTC](https://www.ruby-forum.com/t/require-www-for-https-example-com/227667/2 "2013-03-23T00:50:23Z")

</div>

# www fix

server {  
# [www.example.com](http://www.example.com) → [example.com](http://example.com)  
#server\_name[www.example.com](http://www.example.com);

```
#rewrite ^ $scheme://example.com$request_uri? permanent;
# www.example.com -> example.com
server_name example.com;

rewrite ^ $scheme://www.example.com$request_uri? permanent;

```

}

> <https://github.com/kirpit/webstack/blob/master/sites/_nginx-example.com.conf>

cheers.

---

<div class="post-metadata">

**Author:** ![openletter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/f1d935/32.png) [@openletter](https://www.ruby-forum.com/u/openletter)\
**Post date:** [March 23, 2013, 4:02am UTC](https://www.ruby-forum.com/t/require-www-for-https-example-com/227667/3 "2013-03-23T04:02:00Z")

</div>

On 22 Mar 2013 23h44 CET, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> file:
> 
> server {  
> listen [::]:80;  
> server\_name [example.com](http://example.com) \*.example.com;  
> return 301 $scheme://www.example.com$request\_uri;  
> }
> 
> But doing something similar for 443 doesn’t seem to work.

It works, but you have to add the SSL certificate and respective  
key. Note that the root domain must be also in the certificate  
otherwise the client will complain about the certificate, not being  
able to establish endpoint authentication.

> Can someone please help me out or point to a good page on setting up  
> for this?

Here’s an example. It rewrites from www to the base domain. So just  
switch the server names and it will work. Add also a listen directive  
for port 80.

> <https://github.com/perusio/drupal-with-nginx/blob/D7/sites-available/example.com.conf#L101>

— appa

---

<div class="post-metadata">

**Author:** ![openletter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/f1d935/32.png) [@openletter](https://www.ruby-forum.com/u/openletter)\
**Post date:** [March 23, 2013, 6:20am UTC](https://www.ruby-forum.com/t/require-www-for-https-example-com/227667/4 "2013-03-23T06:20:26Z")

</div>

On Mar 23, 2013, at 2:44 , openletter wrote:

> server {  
> listen [::]:80;  
> server\_name [example.com](http://example.com) \*.example.com;  
> return 301 $scheme://www.example.com$request\_uri;  
> }
> 
> But doing something similar for 443 doesn’t seem to work.
> 
> Can someone please help me out or point to a good page on setting up for  
> this?

You have to got a certificate also for “[example.com](http://example.com)” or certificate for  
two  
names “[www.example.com](http://www.example.com)” and “[example.com](http://example.com)”.

–  
Igor S.

> **[F5 NGINX: Built for cloud-native apps. Ready for AI traffic.](https://www.f5.com/products/nginx)**
>
> Deliver modern applications with NGINX. Explore high-performance load balancing, API gateways, and web server solutions trusted by top global enterprises.
