** Please note **: This module is currently undergoing some structural
maintenance. Please take a look at [https://github.com/jfryman/puppet-nginx/blob/master/docs/hiera.md](https://github.com/jfryman/puppet-nginx/blob/master/docs/hiera.md)
before upgrading or installing Version 0.1.0 or greater.
By default, creating a vhost resource will only create a HTTP vhost. To also create a HTTPS (SSL-enabled) vhost, set `ssl => true` on the vhost. You will have a HTTP server listening on `listen_port` (port `80` by default) and a HTTPS server listening on `ssl_port` (port `443` by default). Both vhosts will have the same `server_name` and a similar configuration.
To create only a HTTPS vhost, set `ssl => true` and also set `listen_port` to the same value as `ssl_port`. Setting these to the same value disables the HTTP vhost. The resulting vhost will be listening on `ssl_port`.
### Locations
Locations require specific settings depending on whether they should be included in the HTTP, HTTPS or both vhosts.
#### HTTP only vhost (default)
If you only have a HTTP vhost (i.e. `ssl => false` on the vhost) make sure you don't set `ssl => true` on any location you associate with the vhost.
#### HTTP and HTTPS vhost
If you set `ssl => true` and also set `listen_port` and `ssl_port` to different values on the vhost you will need to be specific with the location settings since you will have a HTTP vhost listening on `listen_port` and a HTTPS vhost listening on `ssl_port`:
*To add a location to only the HTTP server, set `ssl => false` on the location (this is the default).
*To add a location to both the HTTP and HTTPS server, set `ssl => true` on the location, and ensure `ssl_only => false` (which is the default value for `ssl_only`).
*To add a location only to the HTTPS server, set both `ssl => true` and `ssl_only => true` on the location.
#### HTTPS only vhost
If you have set `ssl => true` and also set `listen_port` and `ssl_port` to the same value on the vhost, you will have a single HTTPS vhost listening on `ssl_port`. To add a location to this vhost set `ssl => true` and `ssl_only => true` on the location.
## Hiera Support
Defining nginx resources in Hiera.
```yaml
nginx::nginx_upstreams:
'puppet_rack_app':
ensure:present
members:
-localhost:3000
-localhost:3001
-localhost:3002
nginx::nginx_vhosts:
'www.puppetlabs.com':
www_root:'/var/www/www.puppetlabs.com'
'rack.puppetlabs.com':
proxy:'http://puppet_rack_app'
nginx::nginx_locations:
'static':
location:'~"^/static/[0-9a-fA-F]{8}\/(.*)$"'
vhost:www.puppetlabs.com
www_root:/var/www/html
'userContent':
location:/userContent
vhost:www.puppetlabs.com
www_root:/var/www/html
nginx::nginx_mailhosts:
'smtp':
auth_http:server2.example/cgi-bin/auth
protocol:smtp
listen_port:587
ssl_port:465
starttls:only
```
## Nginx with precompiled Passenger
Currently this works only for Debian family and OpenBSD.