Прокси-сервер Apache fcgi на php-сервер

У меня есть веб-сервер Apache (2.4) и сервер php (7.1), работающие на Ubuntu 16.04 LTS. Я пытаюсь настроить манифест марионетки для создания vhost на сервере apache, а затем каждый раз, когда веб-сервер получает запрос php-сервера, сервер apache будет проксировать запрос на php-сервер, а затем читать запрошенную страницу из документа root для отображения страницы запроса. Корневой каталог документа используется как веб-сервером, так и сервером php. Пул php fpm настроен на сервере php для прослушивания прокси-запроса от сервера 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']
         ]
      }
   }
0
задан 4 August 2017 в 02:49
1 ответ

Я выяснил, в чем проблема. В iptables было правило брандмауэра, блокирующее весь трафик, включая http (порт 80) и https (порт 443). Пришлось очистить iptables. Я смог определить это, сбросив мои iptables с помощью «iptables -F». Как только я определил, что он работает, я повторно применил все правила брандмауэра iptables и добавил еще одно правило, разрешающее только HTTP- и HTTP-трафик на сервер. Сейчас все работает.

0
ответ дан 24 November 2019 в 04:09

Теги

Похожие вопросы