تم ترحيل هذه الوحدة من James Fryman [email protected] إلى Vox Pupuli.
تدير هذه الوحدة تكوين NGINX.
apt-transport-https
. 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 بـ Hash. التكوين التالي لم يعد صالحا:
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
على الخادم. سيكون لديك خادم HTTP يستمع على listen_port
(المنفذ 80
افتراضيًا) وخادم HTTPS يستمع على ssl_port
(المنفذ 443
افتراضيًا). سيكون لكلا الخادمين نفس server_name
وتكوين مماثل.
لإنشاء خادم HTTPS فقط، قم بتعيين ssl => true
وقم أيضًا listen_port
على نفس قيمة ssl_port
. يؤدي تعيينها على نفس القيمة إلى تعطيل خادم HTTP. سوف يستمع الخادم الناتج على ssl_port
.
افتراضيًا، قد تقوم هذه الوحدة بتكوين ssl on
التوجيه. عند تشغيل الدمية في المرة التالية، ستتم إزالة هذا نظرًا لأن حقيقة 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
على نفس القيمة على الخادم، فسيكون لديك خادم HTTPS واحد يستمع على ssl_port
. لإضافة موقع إلى هذا الخادم، قم بتعيين ssl => true
و ssl_only => true
على الموقع.
تحديد موارد nginx في Hiera.
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
مثال لتكوين Debian وRHEL / CentOS (>6)، وسحب حزم Nginx وPassenger من Phusion repo. راجع الملاحظات الإضافية في 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. يجب عليك تحديد الياقوتة التي يجب استخدامها لكل مضيف افتراضي.
nginx::resource::server { 'www.puppetlabs.com' :
www_root => ' /var/www/www.puppetlabs.com ' ,
server_cfg_append => {
' passenger_enabled ' => ' on ' ,
' passenger_ruby ' => ' /usr/bin/ruby ' ,
}
}
تكوين المضيف الظاهري لخدمة سيد الدمى:
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,
}