이 모듈은 James Fryman [email protected]에서 Vox Pupuli로 마이그레이션되었습니다.
이 모듈은 NGINX 구성을 관리합니다.
apt-transport-https
의 적절한 처리로 인해 버전 4.4.0 이상이 권장됩니다. include nginx
nginx::resource::server { 'kibana.myhost.com' :
listen_port => 80,
proxy => ' http://localhost:5601 ' ,
}
nginx::resource::server { 'www.puppetlabs.com' :
www_root => ' /var/www/www.puppetlabs.com ' ,
}
nginx::resource::upstream { 'puppet_rack_app' :
members => {
' localhost:3000 ' => {
server => ' localhost ' ,
port => 3000,
weight => 1,
},
' localhost:3001 ' => {
server => ' localhost ' ,
port => 3001,
weight => 1,
},
' localhost:3002 ' => {
server => ' localhost ' ,
port => 3002,
weight => 2,
},
},
}
nginx::resource::server { 'rack.puppetlabs.com' :
proxy => ' http://puppet_rack_app ' ,
}
class { 'nginx' :
mail => true ,
}
nginx::resource::mailhost { 'domain1.example' :
auth_http => ' server2.example/cgi-bin/auth ' ,
protocol => ' smtp ' ,
listen_port => 587,
ssl_port => 465,
starttls => ' only ' ,
xclient => ' off ' ,
proxy_protocol => ' off ' ,
proxy_smtp_auth => ' off ' ,
ssl => true ,
ssl_cert => ' /tmp/server.crt ' ,
ssl_key => ' /tmp/server.pem ' ,
}
nginx::resource::upstream 멤버의 데이터 유형 배열은 해시로 대체됩니다. 다음 구성은 더 이상 유효하지 않습니다.
nginx::resource::upstream { 'puppet_rack_app' :
members => {
' localhost:3000 ' ,
' localhost:3001 ' ,
' localhost:3002 ' ,
},
}
이제부터 구성은 다음과 같아야 합니다.
nginx::resource::upstream { 'puppet_rack_app' :
members => {
' localhost:3000 ' => {
server => ' localhost ' ,
port => 3000,
},
' localhost:3001 ' => {
server => ' localhost ' ,
port => 3001,
},
' localhost:3002 ' => {
server => ' localhost ' ,
port => 3002,
},
},
}
기본적으로 서버 리소스를 생성하면 HTTP 서버만 생성됩니다. HTTPS(SSL 지원) 서버도 생성하려면 서버에서 ssl => true
설정하세요. listen_port
(기본적으로 포트 80
)에서 수신 대기하는 HTTP 서버와 ssl_port
(기본적으로 포트 443
)에서 수신 대기하는 HTTPS 서버가 있습니다. 두 서버 모두 동일한 server_name
및 유사한 구성을 갖습니다.
HTTPS 서버만 생성하려면 ssl => true
로 설정하고, listen_port
도 ssl_port
와 동일한 값으로 설정합니다. 이를 동일한 값으로 설정하면 HTTP 서버가 비활성화됩니다. 결과 서버는 ssl_port
를 수신하게 됩니다.
기본적으로 이 모듈은 더 이상 사용되지 않는 ssl on
지시문을 구성할 수 있습니다. 다음에 puppet을 실행하면 nginx_version
사실을 이제 사용할 수 있으므로 이는 제거됩니다. 이러한 멱등성 문제를 방지하려면 기본 클래스의 nginx_version
매개변수를 수동으로 설정할 수 있습니다.
위치는 HTTP, HTTPS 또는 두 서버 모두에 포함되어야 하는지에 따라 특정 설정이 필요합니다.
HTTP 서버만 있는 경우(예: 서버에 ssl => false
) 서버와 연결된 모든 위치에서 ssl => true
로 설정하지 않도록 하세요.
ssl => true
로 설정하고 서버에서 listen_port
와 ssl_port
다른 값으로 설정하는 경우, HTTP 서버는 listen_port
를 수신하고 HTTPS 서버는 ssl_port
를 수신하게 되므로 위치 설정을 구체적으로 지정해야 합니다.
ssl => false
설정합니다(기본값).ssl => true
설정하고 ssl_only => false
( ssl_only
의 기본값)를 확인하세요.ssl => true
및 ssl_only => true
모두 설정하세요. ssl => true
설정하고 서버에서 listen_port
및 ssl_port
도 동일한 값으로 설정한 경우 ssl_port
를 수신하는 단일 HTTPS 서버가 있게 됩니다. 이 서버에 위치를 추가하려면 해당 위치에서 ssl => true
및 ssl_only => true
설정하십시오.
Hiera에서 nginx 리소스 정의
nginx::nginx_upstreams :
' puppet_rack_app ' :
ensure : present
members :
' localhost:3000 ' :
server : ' localhost '
port : 3000
' localhost:3001 ' :
server : ' localhost '
port : 3001
' localhost:3002 ' :
server : ' localhost '
port : 3002
nginx::nginx_servers :
' 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}/(.*)$" '
server : www.puppetlabs.com
www_root : /var/www/html
' userContent ' :
location : /userContent
server : 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::stream : true
nginx::nginx_cfg_prepend :
include :
- ' /etc/nginx/modules-enabled/*.conf '
nginx::nginx_streamhosts :
' syslog ' :
ensure : ' present '
listen_port : 514
listen_options : ' udp '
proxy : ' syslog '
proxy_read_timeout : ' 1 '
proxy_connect_timeout : ' 1 '
raw_append :
- ' error_log off; '
nginx::nginx_upstreams :
' syslog ' :
context : ' stream '
members :
' 10.0.0.1:514 ' :
server : ' 10.0.0.1 '
port : 514
' 10.0.0.2:514 ' :
server : ' 10.0.0.2 '
port : 514
' 10.0.0.3:514 ' :
server : ' 10.0.0.3 '
port : 514
Phusion 저장소에서 Nginx 및 Passenger 패키지를 가져오는 Debian 및 RHEL/CentOS(>6)에 대한 구성 예입니다. https://github.com/voxpupuli/puppet-nginx/blob/master/docs/quickstart.md에서 추가 참고 사항을 참조하세요.
class { 'nginx' :
package_source => ' passenger ' ,
http_cfg_append => {
' passenger_root ' => ' /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini ' ,
}
}
OpenBSD의 예는 다음과 같습니다.
class { 'nginx' :
package_flavor => ' passenger ' ,
service_flags => ' -u '
http_cfg_append => {
passenger_root => ' /usr/local/lib/ruby/gems/2.1/gems/passenger-4.0.44 ' ,
passenger_ruby => ' /usr/local/bin/ruby21 ' ,
passenger_max_pool_size => ' 15 ' ,
}
}
패키지 소스 passenger
Phusion Passenger 저장소를 APT 소스에 추가합니다. 각 가상 호스트에 대해 어떤 Ruby를 사용해야 하는지 지정해야 합니다.
nginx::resource::server { 'www.puppetlabs.com' :
www_root => ' /var/www/www.puppetlabs.com ' ,
server_cfg_append => {
' passenger_enabled ' => ' on ' ,
' passenger_ruby ' => ' /usr/bin/ruby ' ,
}
}
Puppet 마스터를 제공하기 위한 가상 호스트 구성:
nginx::resource::server { 'puppet' :
ensure => present ,
server_name => [ ' puppet ' ],
listen_port => 8140,
ssl => true ,
ssl_cert => ' /var/lib/puppet/ssl/certs/example.com.pem ' ,
ssl_key => ' /var/lib/puppet/ssl/private_keys/example.com.pem ' ,
ssl_port => 8140,
server_cfg_append => {
' passenger_enabled ' => ' on ' ,
' passenger_ruby ' => ' /usr/bin/ruby ' ,
' ssl_crl ' => ' /var/lib/puppet/ssl/ca/ca_crl.pem ' ,
' ssl_client_certificate ' => ' /var/lib/puppet/ssl/certs/ca.pem ' ,
' ssl_verify_client ' => ' optional ' ,
' ssl_verify_depth ' => 1,
},
www_root => ' /etc/puppet/rack/public ' ,
use_default_location => false ,
access_log => ' /var/log/nginx/puppet_access.log ' ,
error_log => ' /var/log/nginx/puppet_error.log ' ,
passenger_cgi_param => {
' HTTP_X_CLIENT_DN ' => ' $ssl_client_s_dn ' ,
' HTTP_X_CLIENT_VERIFY ' => ' $ssl_client_verify ' ,
},
}
$full_web_path = ' /var/www '
define web::nginx_ssl_with_redirect (
$backend_port = 9000,
$php = true ,
$proxy = undef ,
$www_root = " ${full_web_path} / ${name} / " ,
$location_cfg_append = undef ,
) {
nginx::resource::server { "${name}.${facts['networking']['domain']}" :
ensure => present ,
www_root => " ${full_web_path} / ${name} / " ,
location_cfg_append => {
' rewrite ' => ' ^ https://$server_name$request_uri? permanent '
}‚,
}
if ! $www_root {
$tmp_www_root = undef
} else {
$tmp_www_root = $www_root
}
nginx::resource::server { "${name}.${facts['networking']['domain']} ${name}" :
ensure => present ,
listen_port => 443,
www_root => $tmp_www_root ,
proxy => $proxy ,
location_cfg_append => $location_cfg_append ,
index_files => [ ' index.php ' ],
ssl => true ,
ssl_cert => ' /path/to/wildcard_mydomain.crt ' ,
ssl_key => ' /path/to/wildcard_mydomain.key ' ,
}
if $php {
nginx::resource::location { "${name}_root" :
ensure => present ,
ssl => true ,
ssl_only => true ,
server => " ${name} .${facts['networking']['domain']} ${name} " ,
www_root => " ${full_web_path} / ${name} / " ,
location => ' ~ . php$ ' ,
index_files => [ ' index.php ' , ' index.html ' , ' index.htm ' ],
proxy => undef ,
fastcgi => " 127.0.0.1: ${backend_port} " ,
fastcgi_script => undef ,
location_cfg_append => {
fastcgi_connect_timeout => ' 3m ' ,
fastcgi_read_timeout => ' 3m ' ,
fastcgi_send_timeout => ' 3m '
}
}
}
}
nginx::resource::location { "some_root" :
ensure => present ,
location => ' /some/url ' ,
fastcgi => " 127.0.0.1:9000 " ,
fastcgi_param => {
' APP_ENV ' => ' local ' ,
},
}
web::nginx_ssl_with_redirect { 'sub-domain-name' :
backend_port => 9001,
}