Поиск по сайту:

Как установить Nginx в качестве обратного прокси для Apache в Ubuntu 15.10


Это руководство существует для этих версий ОС

  • Ubuntu 12.04 LTS (Precise Pangolin)

На этой странице

  1. Шаг 1. Установите Apache и PHP
  2. Шаг 2. Настройка Apache и PHP
  3. Шаг 3. Установите Nginx
  4. Шаг 4. Настройка Nginx
  5. Шаг 5. Настройка ведения журнала
  6. Заключение

Nginx или \engine-x\ — это высокопроизводительный веб-сервер с низким потреблением памяти, созданный Игорем Сысоевым в 2002 году. Nginx — это не просто веб-сервер, его можно использовать как обратный прокси для многих протоколов, таких как HTTP, HTTPS, POP3, SMTP и IMAP, а также в качестве балансировщика нагрузки и кэша HTTP.

Apache — это самое популярное программное обеспечение веб-сервера, поддерживаемое сообществом открытого исходного кода в рамках Apache Software Foundation. Для Apache доступно множество дополнительных модулей, таких как поддержка WebDav или брандмауэры веб-приложений, такие как mod_security, и он поддерживает многие языки веб-программирования, такие как Perl, Python, PHP, через собственные модули или через интерфейсы cgi, fcgi и FPM.

В этом руководстве я установлю и настрою Nginx в качестве кеширующего обратного прокси-сервера для веб-сервера Apache в Ubuntu 15.10, Nginx используется в качестве внешнего интерфейса, а Apache — в качестве внутреннего. Nginx будет работать на порту 80, чтобы отвечать на запросы от пользователя/браузера, затем запрос будет перенаправлен на сервер Apache, работающий на порту 8080.

Шаг 1 — Установите Apache и PHP

Войдите на свой сервер Ubuntu с помощью SSH и станьте пользователем root, выполнив:

sudo su

Затем установите apache с помощью команды apt-get:

apt-get install apache2

После установки apache мы должны установить PHP как модуль apache для этого руководства:

apt-get install php5 php5-mysql libapache2-mod-php5

Шаг 2 — Настройте Apache и PHP

По умолчанию apache прослушивает порт 80. Нам нужно настроить apache для работы на порту 8080 для нашей настройки прокси, так как позже порт 80 будет использоваться nginx.

Если вы хотите изменить порт для веб-сервера apache, вы должны отредактировать файл конфигурации apache \/etc/apache2/ports.conf\, а затем продолжить настройку виртуального хоста в файле \/etc/apache2/sites. -доступный/\.

Сначала измените порт для apache на 8080, отредактировав файл «ports.conf» с помощью редактора vim:

vim /etc/apache2/ports.conf

В строке 5 измените порт 80 на 8080.

Listen 8080

Сохранить и выйти.

Теперь перейдите в каталог виртуального хоста и отредактируйте файл \000-default.conf\:

cd sites-available/
vim 000-default.conf

Убедитесь, что ваша конфигурация такая же, как показано ниже:

<VirtualHost *:8080>

    ServerName www.reverse.com
    ServerAlias reverse.com

    ServerAdmin 
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Сохранить и выйти.

Затем проверьте конфигурацию и перезапустите apache:

apachectl configtest
systemctl restart apache2

Наконец мы проверяем, что apache и php работают. Создайте новый файл с именем \info.php\ в каталоге \/var/www/html/\.

cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php

Посетите свой сайт www.reverse.com:8080/info.php.

Результат должен быть похож на скриншот выше.

Шаг 3 — Установите Nginx

Установите Nginx с помощью следующей команды apt-get:

apt-get install nginx

Шаг 4 — Настройте Nginx

После установки Nginx настройте Nginx в качестве обратного прокси-сервера для веб-сервера Apache, работающего на порту 8080.

Перейдите в каталог конфигурации nginx и отредактируйте файл \nginx.conf\:

cd /etc/nginx/
vim nginx.conf

Включите сжатие Gzip для Nginx, раскомментировав строки gzip:

        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

самое главное это:

включить gzip : включить сжатие gzip.

gzip_types : список MIME-типов, для которых вы хотите включить сжатие.

gzip_proxied any : включает сжатие для проксируемого запроса.

Прямо в настройках gzip добавьте следующие настройки прокси-кэша:

        # Proxy Cache Settings
        proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;

Каталог для кеша прокси - /var/cache.

levels — это директива, которая сообщает Nginx, как кеш сохраняется в файловой системе.

key_zone — это просто имя зоны кэша, вы можете выбрать его свободно, но не добавляйте в имя специальные символы или пробелы. Я буду использовать здесь имя \reverse_cache\.

Сохранить и выйти.

Теперь настроим виртуальный хост в каталоге \/etc/nginx/sites-available\.

В этом руководстве я создам новый файл конфигурации виртуального хоста с именем \reverse.conf\. Просто добрались до каталога и создайте новый файл с помощью vim:

cd /etc/nginx/sites-available
vim reverse.conf

Вставьте конфигурацию ниже:

server {
    listen 80;

    # Site Directory same in the apache virtualhost configuration
    root /var/www/html; 
    index index.php index.html index.htm;

    # Domain
    server_name www.reverse.com reverse.com;

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


    # Reverse Proxy and Proxy Cache Configuration
    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;

        # Cache configuration
        proxy_cache reverse_cache;
        proxy_cache_valid 3s;
        proxy_no_cache $cookie_PHPSESSID;
        proxy_cache_bypass $cookie_PHPSESSID;
        proxy_cache_key "$scheme$host$request_uri";
        add_header X-Cache $upstream_cache_status;
    }

    # Enable Cache the file 30 days
    location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
        proxy_cache_valid 200 120m;
        expires 30d;
        proxy_cache reverse_cache;
        access_log off;
    }

    # Disable Cache for the file type html, json
    location ~* .(?:manifest|appcache|html?|xml|json)$ {
        expires -1;
    }

    location ~ /\.ht {
        deny all;
    }
}

Сохранить и выйти.

Затем активируйте новую конфигурацию виртуального хоста:

ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/

Наконец, мы проверим конфигурацию nginx и перезапустим nginx:

nginx -t
systemctl restart nginx

Теперь Nginx настроен как обратный прокси. Вы можете проверить это с помощью curl:

curl -I www.reverse.com

Cache-Control: no-cache означает, что index.html и все файлы, оканчивающиеся на .html, не будут кэшироваться.

Другой тест:

curl -I www.reverse.com/info.php

X-Cache: HIT означает, что страница обслуживается кешем Nginx.

Шаг 5. Настройка ведения журнала

На этом этапе я настрою apache для регистрации реального IP-адреса посетителя вместо локального IP-адреса.

Установите модуль Apache \libapache2-mod-rpaf\ и отредактируйте файл конфигурации модуля:

sudo apt-get install libapache2-mod-rpaf
cd /etc/apache2/mods-available/
vim rpaf.conf

Добавьте IP-адрес сервера в строку 10. IP-адрес моего сервера: 192.168.1.108.

RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1

Сохраните и выйдите.

Теперь перезапустите апач:

systemctl restart apache2

Протестируйте rpaf, просмотрев журнал доступа Apache с помощью команды tail:

tail -f /var/log/apache2/access.log

Вот и все.

Nginx устанавливается как обратный прокси-сервер перед веб-сервером Apache. Если посетитель запрашивает php-файл, запрос будет передан apache на порт 8080, и вы сможете увидеть реальный ip посетителя в файле журнала apache.

Заключение

Nginx — это быстрый и популярный веб-сервер с низким потреблением памяти, который может выступать в качестве веб-сервера и обратного прокси-сервера для протоколов HTTP и HTTPS. Обратный прокси-сервер Nginx для apache — это установка, в которой Nginx используется в качестве внешнего интерфейса, а apache — в качестве внутреннего. Nginx обрабатывает входящий запрос от браузера и передает его серверной части apache. В этом руководстве мы настроили конфигурацию для nginx в качестве http-кэша, который кэширует запросы файлов PHP и изображения.