How to redirect all SSL traffic?

brianmercer nginx-forum at nginx.us
Wed Nov 11 17:27:22 MSK 2009


Igor Sysoev Wrote:
-------------------------------------------------------
> On Mon, Nov 09, 2009 at 05:34:11PM +0700, Glen
> Lumanau wrote:
> 
> > So I can't use such a configuration
> > 
> > server {
> > listen 443;
> > rewrite (^.*) https://www.mydomain.com$1
> permanent; }
> > 
> > ?
> 
> The following configuration should work:
> 
>      server {
>          listen  192.168.1.1:443;
>          server_name   mydomain.com;
>          ssl on;
>          ssl_certificate  
> /path/to/wildcard.certifcate;
>          ...
>      }
> 
>      server {
>          listen  192.168.1.1:443;
>          server_name   *.mydomain.com;
>          ssl on;
>          ssl_certificate  
> /path/to/wildcard.certifcate;
>          rewrite ^  
> https://www.mydomain.com$request_uri? permanent; }
>      }
> 
> Please note, that you should use the same wildcard
> certifcate in both
> servers.
> 
> > -----Original Message-----
> > From: owner-nginx at sysoev.ru  On Behalf Of Igor
> > Sysoev
> > Sent: 09 Nopember 2009 17:30
> > To: nginx at sysoev.ru
> > Subject: Re: How to redirect all SSL traffic?
> > 
> > On Mon, Nov 09, 2009 at 10:23:33AM +0000, Glen
> Lumanau wrote:
> > 
> > > My question is,
> > > 
> > > Is that posibble to redirect all the traffic
> to www?
> > 
> > With the "*.mydomain.com" certificate the answer
> is YES.
> > 
> > > 
> > > Best Regards,
> > > 
> > > Glen Lumanau
> > > 
> > > 
> > > -----Original Message-----
> > > From: Maxim Dounin 
> > > Date: Mon, 9 Nov 2009 13:17:43 
> > > To: 
> > > Subject: Re: How to redirect all SSL traffic?
> > > 
> > > Hello!
> > > 
> > > On Mon, Nov 09, 2009 at 08:11:23AM +0000, Glen
> Lumanau wrote:
> > > 
> > > > Yes I have a valid ssl for www.mydomain.com.
> I don't have a license for
> > mydomain.com
> > > > 
> > > > That's why I want to redirect all traffic
> goes to mydomain.com to
> > www.mydomain.com
> > > 
> > > As long as you have no valid cert for
> mydomain.com - you can't 
> > > handle requests in this domain without
> warnings from browsers.  No 
> > > way.
> > > 
> > > Maxim Dounin
> > > 
> > > 
> > > > 
> > > > 
> > > > Best Regards,
> > > > 
> > > > Glen Lumanau
> > > > 
> > > > 
> > > > -----Original Message-----
> > > > From: Igor Sysoev 
> > > > Date: Mon, 9 Nov 2009 10:57:18 
> > > > To: 
> > > > Subject: Re: How to redirect all SSL
> traffic?
> > > > 
> > > > On Mon, Nov 09, 2009 at 08:49:56AM +0700,
> Glen Lumanau wrote:
> > > > 
> > > > > I tried this, but still doesn't works 
> > > > 
> > > > What do you mean by "doesn't work" ? Browser
> shows a warning about
> > invalid
> > > > certificate ? In this case you need two
> certificates: for
> > "www.domain.com"
> > > > and "mydomain.com" and you should configure
> servers on different IP
> > addreses.
> > > > Or you can use a certificate with two
> Subject Alternate Names for
> > > > "domain.com" and "www.domain.com". Then you
> may use the certificate in
> > > > both server with single IP address.
> > > > 
> > > > > -----Original Message-----
> > > > > From: Alex Hunsaker  
> > > > > Sent: 09 Nopember 2009 5:11
> > > > > To: glen at lumanau.web.id
> > > > > Cc: nginx at sysoev.ru
> > > > > Subject: Re: How to redirect all SSL
> traffic?
> > > > > 
> > > > > On Sun, Nov 8, 2009 at 03:31, Glen Lumanau
> 
> > wrote:
> > > > > 
> > > > > [ please keep the mailing list cc'ed ]
> > > > > 
> > > > > > Try port 80...
> > > > > 
> > > > > >> On port 80 is sucessfull. Is there any
> way to do that on port 443?
> > > > > 
> > > > > Ahh ok so you want http://mydomain.com and
> https://mydomain.com to go
> > > > > to https://www.mydomain.com.
> > > > > 
> > > > > Sure something like:
> > > > > server {
> > > > > listen 80;
> > > > > rewrite (^.*) https://www.mydomain.com$1
> permanent;
> > > > > }
> > > > > 
> > > > > # config for https://www.mydomain.com
> > > > > server {
> > > > >  listen 443;
> > > > >  ...
> > > > >  if ($host !~ www\.mydomain\.com) {
> > > > >  rewrite ^(.*) https://www.mydomain.com$1
> permanent;
> > > > > }
> > > > > 
> > > > > }
> > > > > 
> > > > 
> > > > -- 
> > > > Igor Sysoev
> > > > http://sysoev.ru/en/
> > > > 
> > > 
> > 
> > -- 
> > Igor Sysoev
> > http://sysoev.ru/en/
> > 
> 
> -- 
> Igor Sysoev
> http://sysoev.ru/en/

Some plain SSL certificates work with both www and non-www without being a wildcard certificate.  I just learned that the $10/year PositiveSSL that I got free from domain registration at http://www.namecheap.com/learn/ssl-certificates/free-positive-ssl-certificates.asp has this feature, although they don't list it on their website.

server {
  listen  443;
  server_name mydomain.com;

  rewrite ^ https://www.mydomain.com$request_url permanent;

  ssl on;
  ssl_certificate  /etc/ssl/certs/mydomain.com.crt;
  ssl_certificate_key  /etc/ssl/private/mydomain.com.key;
}
 
server {
  listen  443;
  server_name www.mydomain.com;

  ssl on;
  ssl_certificate  /etc/ssl/certs/mydomain.com.crt;
  ssl_certificate_key  /etc/ssl/private/mydomain.com.key;

  ...
}

Works fine with the cheapo PositiveSSL cert. It looks like some companies use the feature to upsell you to their premium cert: http://www.geocerts.com/ssl/quicksslpremium

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,21109,22131#msg-22131






More information about the nginx mailing list