# @summary Revproxy for concourse # # Rev-proxy, which also gathers all web nodes in a cluster, into a # single web endpoint # # @param server_name # Name of the nginx server, will also be used for rev-proxy routing. # @param cluster # Name of the concourse cluster. # @param upstream_members # Members of this cluster. If puppetdb is available then these are # collected automatically from each instance of `concourse::web`. # But if that is not an option then they can be specified manually. # @param ensure define concourse::proxy::nginx ( String $server_name = $name, String $cluster = $concourse::default_cluster, Optional[Nginx::UpstreamMembers] $upstream_members = undef, Enum['absent', 'present'] $ensure = 'present', ) { include concourse nginx::resource::upstream { $cluster: ensure => $ensure, members => $upstream_members, } nginx::resource::server { $server_name: ipv6_enable => true, ipv6_listen_options => '', use_default_location => false, # TODO SSL } nginx::resource::streamhost { "${server_name}-stream": listen_port => 2222, ipv6_enable => true, ipv6_listen_options => '', proxy => $server_name, } nginx::resource::location { "${server_name} - /": server => $server_name, location => '/', proxy => "http://${cluster}", } nginx::resource::location { "${server_name} - ~ /hijack$": server => $server_name, location => '~ /hijack$', proxy => "http://${cluster}", proxy_set_header => [ 'Host $host', 'X-Real-IP $remote_addr', 'X-Forwarded-For $proxy_add_x_forwarded_for', 'X-Forwarded-Host $host', 'X-Forwarded-Proto $scheme', 'Proxy ""', 'Upgrade $http_upgrade', 'Connection "upgrade"', ], } }