У меня есть веб-сервер Apache (2.4) и сервер php (7.1), работающие на Ubuntu 16.04 LTS. Я пытаюсь настроить манифест марионетки для создания vhost на сервере apache, а затем каждый раз, когда веб-сервер получает запрос сервера php, сервер apache будет проксировать запрос на сервер php, а затем читать запрошенную страницу из документа root для отображения страницы запроса. Корневой каталог документа используется как веб-сервером, так и сервером php. На php-сервере настроен пул php fpm для прослушивания прокси-запроса от сервера apache на порту 9001. Когда я запускаю «puppet agent -t», я не получаю никаких ошибок, и vhost создается успешно. После создания vhost я затем создаю php-файл с именем info.php с этим кодом, но по какой-то причине, когда я открываю браузер и набираю имя vhost в URL-адресе (example.com/info.php), ничего не отображается в страница. Что я делаю не так? ниже показан марионеточный манифест, который я использую.
class team::vhost {
#Create the base web directory and the vhosts for the wesbite
file { ['/var/wwws', '/var/wwws/web']:
ensure => 'directory',
}
#Create non-ssl vhost
apache::vhost { 'example.com non-ssl':
#ensure => 'absent',
servername => 'example.com',
serveradmin => 'localhost@example.com',
serveraliases => [
'www.example.com',
],
docroot => '/var/wwws/web',
port => '80',
rewrites => [
{
comment => 'Rewrite all non-ssl requests to ssl',
rewrite_cond => ['%{HTTPS} off'],
rewrite_rule => ['/(.*) https://%{SERVER_NAME}/$1 [R,L]'],
}
],
require => [
File['/var/wwws/web'],
]
}
#Create ssl vhost
apache::vhost { 'example.com ssl':
#ensure => 'absent',
servername => 'example.com',
serveradmin => 'localhost@example.com',
serveraliases => [
'www.example.com',
],
port => '443',
docroot => '/var/wwws/web',
ssl => true,
directories => [
{
path => '/var/wwws/web',
provider => 'directory',
rewrites => [
{
comment => 'Redirect non-file requests to our application',
rewrite_cond => [
'%{REQUEST_FILENAME} !-f',
'%{REQUEST_FILENAME} !-d',
],
rewrite_rule => ['^(.*)$ /info.php [QSA,L]'],
}
],
directoryindex => 'info.php',
options => ['-MultiViews', '+Indexes', '+FollowSymLinks'],
},
{
'path' => '\.php$',
'provider' => 'filesmatch',
'sethandler' => 'proxy:fcgi://192.168.2.4:9001'
}
],
require => [
File['/var/wwws/web']
]
}
}
Я понял, в чем проблема. В iptables было правило брандмауэра, блокирующее весь трафик, включая http (порт 80) и https (порт 443). Пришлось очистить iptables. Я смог определить это, сбросив мои iptables с помощью «iptables -F». Как только я определил, что он работает, я повторно применил все правила брандмауэра iptables и добавил еще одно правило, разрешающее только HTTP- и HTTP-трафик на сервер. Сейчас все работает.