Как установить Nginx в качестве обратного прокси для Apache в Ubuntu 15.10
Это руководство существует для этих версий ОС
- Ubuntu 12.04 LTS (Precise Pangolin)
На этой странице
- Шаг 1. Установите Apache и PHP
- Шаг 2. Настройка Apache и PHP
- Шаг 3. Установите Nginx
- Шаг 4. Настройка Nginx
- Шаг 5. Настройка ведения журнала
- Заключение
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 и изображения.