Настройка nginx как front-end к apache на ubuntu 16.04
Надёжность, доступная каждому

Настройка nginx как front-end к apache на ubuntu 16.04

Установка nginx

#Установка nginx
apt-get install nginx

#Создание конфигурационного файла виртуального хоста
touch /etc/nginx/sites-available/example_nginx.conf

Затем файл /etc/nginx/sites-available/example_nginx.conf необходимо привести к следующему виду:

server {
        listen   80;

        root /var/www/;
        index index.php;

        server_name example.com;

        location / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
                proxy_set_header X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header Host $host;
                proxy_pass http://127.0.0.1:8080;
        }

        location ~ /\. {
                #Запрещаем обращение к скрытым файлам
                deny all;
        }
}
#Включаем созданный виртуальный хост
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/example_nginx.conf example_nginx.conf
service nginx reload

Установка apache и php

#Установка apache и mod_php
apt-get install apache2 libapache2-mod-php7.0

Затем в файле /etc/apache2/ports.conf необходимо изменить порт, который будет слушать apache:

Listen 127.0.0.1:8080

#Создание конфигурационного файла виртуального хоста
touch /etc/apache2/sites-available/example-apache.conf

Файл /etc/apache2/sites-available/example-apache.conf необходимо привести к следующему виду:

<VirtualHost 127.0.0.1:8080>
        DocumentRoot /var/www/
        ServerName example.com
        ErrorLog /var/log/apache2/example_error.log
        CustomLog /var/log/apache2/example_access.log common
        <Directory /var/www/>
                Options FollowSymLinks
                AllowOverride All
                #Следующие 2 строки не будут работать в apache >= 2.4, необходимо использовать директиву Require all granted
                #Order allow,deny
                #Allow from all
                Require all granted
        </Directory>
</VirtualHost>
#Включаем созданный виртуальный хост и запускаем apache
a2ensite example-apache.conf && service apache2 start

#Создаём тестовую страницу
mkdir -p /var/www/ && echo '<?php phpinfo();' > /var/www/index.php

При открытии URL http://example.com/ мы должны увидеть вывод функции phpinfo().

Apache имеет следующую структуру конфигурационных файлов:

       /etc/apache2/
       |-- apache2.conf        - Главный файл, который подключает остальные (директива Include)
       |       `--  ports.conf - Файл настройки портов
       |-- mods-enabled        - Содержит ссылки на модули, которые должны быть включены
       |       |-- *.load
       |       `-- *.conf
       |-- mods-available      - Содержит конфигурационные файлы модулей
       |       |-- *.load
       |       `-- *.conf
       |-- conf-available      - Содержит различные параметры конфигурации
       |       `-- *.conf
       |-- conf-enabled        - Содержит ссылки на файлы конфигурации, которые должны быть включены
       |       `-- *.conf
       |-- sites-available     - Содержит файлы виртуальных хостов
       |       `-- *.conf
       `-- sites-enabled       - Содержит ссылки на виртуальные хосты, которые должны быть включены
               `-- *.conf

service apache2  start | stop | restart | reload – Запуск, остановка, перезапуск, перечитывание конфигурации
apachectl -t – проверка синтаксиса конфигурационного файла
apachectl -M – список включённых модулей
a2enmod, a2dismod module_name – включение или отключение модуля
a2enconf, a2disconf conf_name – включение или отключение конфигурационного файла
a2ensite, a2dissite vhost_name – включение или отключение виртуального хоста.