Настройка прокси Nginx
Apache и Nginx — это два самых популярных и наиболее часто используемых веб-серверов с открытым исходным кодом. Оба веб-сервера имеют свои преимущества и недостатки, вы можете ознакомиться с ними более подробно в статье Nginx vs Apache. Было бы отлично объединить эти программы, чтобы получить преимущества обоих и свести к минимуму недостатки. Это вполне возможно. Для этого достаточно использовать Nginx в качестве прокси для Apache, такая практика очень распространена среди системных администраторов.
В этой статье мы рассмотрим как выполняется настройка прокси Nginx, а также поговорим как заставить эту связку правильно обрабатывать HTTPS запросы и передадим управление статическими файлами Nginx.
Как это будет работать?
Допустим, у нас есть несколько доменов example.com, sample.org, test.io. Первые два будут обрабатываться Apache, последний только Nginx. Все запросы будут поступать к Nginx, который работает на порту 80, если это запрос к одному из доменов Apache и он требует работы PHP, тогда он будет передан веб-серверу Apache, который работает на порту 8080.
Что такое прокси-сервер за 7 минут
Если же это запрос статического файла, то мы будем обрабатывать его тут же с помощью Nginx для увеличения производительности. Что касается поддержки SSL, то мы собираемся использовать модуль mod_pref чтобы заменить все необходимые заголовки для нормальной работы связки. Начнем с настройки Apache.
Настройка Apache для работы прокси
Мы не будем подробно рассматривать как настроить Apache в вашей системе, все это уже описано в статье настройка Apache, сегодня же мы остановимся на настройках, необходимых для работы прокси.
Мы будем использовать Apache с интерпретатором PHP, установленным в виде модуля php-fpm. Это обеспечит лучшую общую производительность системы. Сначала установим все нужные пакеты:
sudo apt install apache2 libapache2-mod-fastcgi php-fpm
Поскольку нам нужно, чтобы Apache работал на порту 8080 нужно изменить конфигурационные файлы веб-сервера:
sudo vi /etc/apache2/ports.conf
Замените значение строки Listen с 80 на 8080, затем сохраните изменения в файле. Далее изменим порт для веб-сайта по умолчанию:
sudo vi /etc/apache2/sites-available/000-default.conf
Точно так же замените значение порта с 80 на 8080. Затем сохраните изменения и перезапустите веб-сервер:
sudo systemctl reload apache2
Теперь вы можете проверить на каком порту будет ожидать соединений Apache, если все было сделано правильно, то это будет 8080:
sudo netstat -tlpn
Чтобы показать настройку прокси Nginx более наглядно, создадим один виртуальный хост (домен). Сначала создадим каталог для нашего хоста:
sudo mkdir /var/www/test.com/
Затем файлы index.html и phpinfo.php:
echo «
Test com» | sudo tee /var/www/test.com/index.html
Затем настроим файлы конфигурации виртуальных хостов для каждого из доменов:
Обзор лучших программ для настройки прокси
sudo vi /etc/apache2/sites-available/test.com.conf
Обратите внимание на порт, тут тоже нужно указать 8080. Для тестирования работы php нам понадобится скрипт с вызовом функции:
echo «» | sudo tee /var/www/test.com/phpinfo.php
Осталось включить конфигурацию для только что созданного сайта и перезапустить веб-сервер:
sudo a2ensite test.com
sudo apachectl -t
sudo systemctl reload apache2
Настройка Apache для php-fpm
По умолчанию в Apache используется модуль mod-php для выполнения php скриптов. Сначала необходимо его отключить:
sudo a2dismod php7.0
Затем мы настроим работу mod_fastcgi с помощью модуля mod_actions, для этого нужно его активировать:
sudo a2enmod actions
Затем создадим конфигурационный файл fastcgi.conf:
sudo vi /etc/apache2/mods-available/fastcgi.conf
AddHandler fastcgi-script .fcgi
#FastCgiWrapper /usr/lib/apache2/suexec
FastCgiIpcDir /var/lib/apache2/fastcgi
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fcgi
Alias /php-fcgi /usr/lib/cgi-bin/php-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php-fcgi -socket /run/php/php7.0-fpm.sock -pass-header Authorization
Require all granted
Сохраните изменения, активируйте модуль и проверьте конфигурацию веб-сервера:
sudo a2enmod fastcgi
sudo apachectl -t
Вы увидите сообщение, что с синтаксисом конфигурационных файлов все хорошо. Если программа выдаст сообщение Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1, его можно игнорировать. Далее перезапустите Apache:
sudo systemctl restart apache2
Проверка работы Apache
Добавьте свои домены в файл hosts, если они не зарегистрированы и доступны только с локальной машины:
sudo vi /etc/hosts
Затем откройте сайт в браузере, чтобы убедится, в том что все работает:
Настройка прокси Nginx
Теперь, когда Apache полностью готов к работе в качестве веб-сервера, перейдем к настройке прокси сервера Nginx, мы можем заняться настройкой самого Nginx. Как я уже сказал, мы будем перенаправлять все динамические запросы к Apache, чтобы пользователь смог получить поддержку файлов htaccess и другие преимущества, а статические файлы будем обрабатывать в Nginx.
Сначала установите Nginx, если вы этого еще не сделали:
sudo apt install nginx
Дальше создадим виртуальный хост Nginx с несколькими доменами, с помощью которого и будет выполняться проксирование Nginx:
sudo vi /etc/nginx/sites-available/apache
server listen 80;
server_name test.com www.test.com;
location / proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
>
>
Для использования nginx в качестве прокси мы передаем в команде proxy_pass адрес и порт веб-сервера, а в заголовках передаем те значения, которые будут нужны Apache для правильного формирования документа. Сохраните файл и активируйте его:
sudo ln -s /etc/nginx/sites-available/apache /etc/nginx/sites-enabled/apache
Затем проверьте конфигурацию и перезапустите Nginx:
sudo systemctl reload nginx
Теперь вы можете проверить работу вашего сайта в браузере, если вы откроете скрипт phpinfo, то увидите, что он был обработан с помощью Apache, но возвращен Nginx.
Как вы могли убедится, теперь применяется nginx в качестве прокси. Теперь можно закрыть прямой доступ к Apache из сети с помощью iptables:
sudo iptables -I INPUT -p tcp —dport 8080 ! -s your_server_ip -j REJECT —reject-with tcp-reset
Настройка правильной работы SSL
Дальше рассмотрим как выполняется настройка https прокси Nginx. Как я уже сказал, для правильной работы SSL нам понадобится модуль Apache mod_rpaf. Он устанавливает заголовки и переменные таким образом, чтобы прокси мог без проблем использовать https. Его можно установить из официальных репозиториев:
sudo apt install libapache2-mod-rpaf
Затем создайте конфигурационный файл для этого модуля:
sudo vi /etc/apache2/mods-available/rpaf.conf
RPAFEnable On
RPAFHeader X-Real-Ip
RPAFProxyIPs ваш_внешний_ip_адрес
RPAFSetHostName On
Строка RPAFProxyIPs задает IP адрес вашего прокси. После завершения настройки активируйте модуль:
sudo a2enmod rpaf
Осталось перезапустить Apache:
sudo systemctl reload apache2
Дальше нам нужно создать наши сертификаты с помощью OpenSSL:
sudo mkdir /etc/nginx/ssl/
sudo openssl req -x509 -sha256 -newkey rsa:2048 -keyout /etc/nginx/ssl/test.com-key.pem -out /etc/nginx/ssl/test.com-cert.pem -days 3650 -nodes
А файл виртуальных хостов с поддержкой SSL теперь будет выглядеть во так:
sudo nano /etc/nginx/sites-available/apache
server listen 80;
listen 443 ssl;
server_name test.com www.test.com;
ssl on;
ssl_certificate /etc/nginx/ssl/test.io-cert.pem;
ssl_certificate_key /etc/nginx/ssl/test.io-key.pem;
location / proxy_pass http://your_server_ip:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
>
>
Сохраните файл конфигурации и перезапустите Nginx:
nginx -t
sudo systemctl restart nginx
Теперь вы можете открыть наш домен в браузере по HTTS и убедится что прокси отлично работает. Обратите внимание, что если вы используете самоподписанный сертификат, то вам придется добавить его в исключения браузера:
Поддержка защищенного протокола включена и SERVER_PORT имеет значение 443, все работает прозрачно, как бы проксирование nginx не осуществляется, а мы направляем запросы непосредственно к Apache.
Статические файлы через Nginx
Чтобы уменьшить нагрузку на Apache мы можем обрабатывать все статические файлы в Nginx, как правило, это очень сильно увеличивает выдерживаемую нагрузку, поскольку Nginx способен работать быстрее с большим количеством подключений и занимать меньше ресурсов.
Нам нужно добавить несколько строк в /etc/nginx/sites-available/apache:
server listen 80;
listen 443 ssl;
server_name test.com www.test.com;
ssl on;
ssl_certificate /etc/nginx/ssl/test.com-cert.pem;
ssl_certificate_key /etc/nginx/ssl/test.com-key.pem;
root /var/www/test.com;
index index.php index.htm index.html;
location / try_files $uri $uri/ /index.php;
>
location ~ .php$ proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
>
location ~ /. deny all;
>
>
Мы устанавливаем корень сайта в /var/www/test.com, и пытаемся отдать оттуда все статические файлы, а файлы с расширением .php будем обрабатывать в Apache. Также дополнительно мы закрываем доступ ко всем скрытым файлам.
Теперь откройте несколько раз сайт в браузере, динамические страницы phpinfo.php и статическую index.html, а затем посмотрите в лог файл, где вы обнаружите что Apache обрабатывает только динамику:
Теперь проксирование Nginx работает так же как и на большинстве серверов интернета.
Выводы
В этой статье мы рассмотрели как выполняется настройка прокси Nginx, а точнее, как использовать nginx как прокси для Apache. Для новичков эти настройки могут показаться сложными, но если разобраться, то все обязательно получится. Если у вас остались вопросы, спрашивайте в комментариях.
Похожие записи
Нет похожих записей.
Оцените статью
(13 оценок, среднее: 4,31 из 5)
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Источник: losst.pro
Ошибка Internet connection error: что делать и как устранить проблему простейшими способами?
Встретить ситуацию с пропаданием связи, когда нарушается интернет-соединение, можно достаточно часто. Отключение чаще всего происходит не по вине пользователя. Что делать, если пишет «Internet connection error» (имеется в виду предупреждение, содержащееся в системном сообщении), мы сейчас и посмотрим. Более того, попробуем разобрать основные причины возникновения таких ситуаций и обратим внимание на возможные методы их устранения.
Internet connection error: что делать?
Итак, если рассматривать основные причины отключения интернета, чаще всего в их числе приоритетное место занимает проникновение на компьютер вирусов, исполняемых апплетов, называемых Malware и Adware, а также неправильная настройка самого подключения.
Сейчас будем исходить из того, что с оплатой услуг провайдера все в порядке, а сетевое оборудование работает без сбоев. Хотя, в общем-то, в некоторых случаях при постоянном появлении сообщения об отсутствии подключения может потребоваться повторная инсталляция драйверов сетевых устройств или установка корректных параметров маршрутизатора, например роутера при наличии сетевых подключений.
Восстановление системы
Если сбой произошел ни с того ни с сего, раньше все работало как часы, а сейчас на экране появилось сообщение Internet connection error, что делать, будет понятно, если обратить внимание именно на время возникновения такой ситуации.
Действительно, мало ли какие настройки «слетели». Самым простым способом устранения проблемы станет обычный откат системы до контрольной точки, но она во временном промежутке может быть более ранней, чем время появления сбоя.
Проверка на вирусы и вредоносные коды
Теперь посмотрим, как поступить, если первый способ ничего не дал, и система снова выдает предупреждение Internet connection error. Что делать? В обязательном порядке проверить систему на вирусы, используя какую-нибудь портативную версию программы (ведь инсталлированный антивирус уже мог пропустить угрозу).
В качестве пакета можно взять KVRT, в наилучшей степени зарекомендовавший себя в области портативных приложений. К тому же и со штатным антивирусом конфликты полностью исключаются.
Но и такие утилиты могут не определять потенциально нежелательное ПО, заменяющее оригинальный файл HOSTS или вносящее в него собственные записи. В этом случае потребуется использовать утилиты вроде Adware Cleaner или что-то похожее.
Проверка параметров подключения
Если потенциальных или существующих угроз не обнаружено, можно проверить настройки самого подключения. Допустим, система снова выдает предупреждение вроде Internet connection error. Что делать теперь?
Необходимо зайти в свойства подключения и проверить настройки протокола TCP/IP. Желательно (что применяется в большинстве случаев) использовать автоматическое получение адресов IP и DNS-сервера. Иногда стоит обратить внимание на задействование прокси. Если провайдер не поддерживает предоставление таких услуг, прокси-сервер необходимо отключить (снять галочку на соответствующем поле). В крайнем случае нужно ввести правильные значения для всех задействованных полей (их предоставляет провайдер при подключении пользовательского компьютера к интернету или системный администратор в случае с сетевыми терминалами).
Использование специальных утилит восстановления
Кроме всего вышесказанного, если пользователь не хочет или не может заниматься устранением проблемы самостоятельно, могут помочь специальные программы восстановления интернет-подключения и всего, что с этим связано.
Одной из самых простых и интересных автоматизированных утилит является программа Complete Internet Repair. По большому счету пользователю нужно всего лишь запустить процесс сканирования на наличие проблем, после чего активировать их исправление. В обоих процессах участие юзера сведено к минимуму.
Заключение
Естественно, это далеко не все причины, которые могут повлиять на отключение интернета. Скажем так: здесь были рассмотрены наиболее часто возникающие штатные и нештатные ситуации. Но, как уже можно заметить, способы устранения проблемы в большинстве случаев достаточно просты и могут быть выполнены юзером любого уровня подготовки.
Источник: fb.ru
В Минцифре предложили создать программу для определения спам-звонков
Минцифры РФ предложило внедрить новый механизм для блокировки автообзвона до подтверждения цели вызова. Это поможет бороться со спам-звонками. Об этом сообщает пресс-служба ведомства.
«Если операторы связи реализуют механизм, навязчивой телефонной рекламы станет меньше», — утверждают в министерстве.
Отмечается, что автообзвоном является способ дозвона по случайным номерам, то есть звонок совершает не человек, а программа. При этом, она может совершать более 300 звонков одновременно. Когда абонент берет трубку, то его встречает записанное голосовое сообщение и только потом переключают на сотрудника компании, которая пытается навязать услуги.
new code123
В Минцифры отметили, что блокировка коснется только автообзвона. Оператор может определить такие звонки с помощью специального софта. Предполагается, что это станет препятствием для спама и мошенников.
Минцифры предлагает сделать услугу бесплатной и встроенной по умолчанию. Напомним, что еще в октябре ведомство подготовило новый проект изменений в закон «О связи». Он должен помочь в борьбе с телефонным спамом.
Ранее руководитель комитета Совфеда по законодательству и госстроительству Андрей Клишас отреагировал на решение Минцифры не поддерживать запрет на удаленную работу для находящихся за рубежом сотрудников ИТ-компаний. У себя в Telegram он заявил, что теперь необходимо узнать у Министерства цифрового развития, поддержит ли оно введение уголовной ответственности за утечки персональных данных россиян, которые стали «уже чуть ли не нормой».
Источник: www.osnmedia.ru