Настройка Nginx в качестве обратного прокси для Google. com на Ubuntu VPS

Данное руководство описывает процесс настройки Nginx в качестве обратного прокси для поисковой системы Google.

В ряде стран и регионов мира, включая Китай, доступ к поисковой системе Google ограничен. В наше время поисковые системы выступают ключевыми проводниками к информации, а Google занимает лидирующие позиции, предлагая высококачественные результаты. Мы убеждены, что свободный доступ к знаниям — это одно из фундаментальных прав человека. Знания являются базой для развития потенциала, свободы и возможностей каждого, и доступ к ним должен быть открыт для всех без каких-либо барьеров.

Обратный прокси-сервер Nginx для поиска в Google

Nginx — это широко используемый веб-сервер и обратный прокси. Обратный прокси работает от имени другого сервера, перенаправляя запросы. Если у вас есть VPS или сервер в облаке в другой стране, который имеет доступ к Google.com, вы можете настроить Nginx в качестве обратного прокси для Google.com на этом сервере. Тогда, вводя ваше собственное доменное имя в браузере, ваш прокси загрузит для вас сайт Google и его результаты поиска. В наши дни VPS и облачные решения стали весьма доступными.

Для настройки обратного прокси-сервера необходимо установить два модуля Nginx:

  • Модуль ngx_http_google_filter предназначен для облегчения процесса проксирования сайта Google.com. Для его работы требуется зависимость от другого модуля.
  • ngx_http_substitutions_filter_module.

Оба модуля являются сторонними и распространяются с открытым исходным кодом, поэтому потребуется вручную собрать Nginx вместе с ними. После этого останется лишь внести несколько простых директив в конфигурационный файл серверного блока Nginx и перезапустить его.

Этот справочник объяснит, как настроить его на VPS с Ubuntu. Приступим!

Первый шаг: установите веб-сервер Nginx на систему Ubuntu.

sudo apt install nginx

Для того чтобы динамические модули были совместимы с текущим бинарным файлом Nginx, его необходимо скомпилировать с использованием аргумента —with-compat. Однако не все бинарные файлы Nginx, доступные в стандартных репозиториях Debian/Ubuntu, собраны с этим аргументом.

Проверьте параметры конфигурации Nginx, используя такую команду:

sudo nginx - V

Nginx-binary-configure-with-compat

Теперь необходимо активировать репозиторий исходного кода, чтобы иметь возможность скачать исходный код Nginx.

Читайте также:  Создать пользователя в группа admin в Linux

Ubuntu

sudo apt install software-properties-common sudo apt-add-repository - ss sudo apt update

Примечание: Я не советую устанавливать самую последнюю версию Nginx. Стандартный пакет nginx из репозитория Ubuntu вполне удовлетворяет потребностям.

Загрузка исходных файлов пакета Nginx

Используйте следующую команду для создания папки nginx в каталоге /usr/local/src/, где будет храниться исходный пакет Nginx. Замените username на ваше фактическое имя пользователя.

sudo chown username:username /usr/local/src/ - R mkdir - p /usr/local/src/nginx

Откройте папку, где расположен исходный код Nginx.

cd /usr/local/src/nginx/

Скачайте исходный пакет Nginx, выполнив следующую команду:

sudo apt install dpkg-dev sudo apt source nginx

Если вы получите сообщение с предупреждением, можете его не принимать во внимание.

W: Download is performed unsandboxed as root as file 'nginx_1.19.5-0ubuntu1.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

Пожалуйста, просмотрите загруженные документы.

nginx-1.19.5 nginx_1.19.5-1~bionic. debian. tar. xz версия nginx_1.19.5-1~bionic. dsc nginx_1.19.5.orig. tar.gz

Установка двух внешних модулей

Установите программу git.

sudo apt install git

Скачайте репозитории ngx_http_google_filter_module и ngx_http_substitutions_filter_module с GitHub.

cd /usr/local/src/ git clone https://github.com/cuber/ngx_http_google_filter_module. git git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module. git

Сборка модуля

Проверьте, что вы находитесь в папке с исходным кодом Nginx.

cd /usr/local/src/nginx/nginx-1.19.5

Установите необходимые библиотеки для компиляции Nginx.

sudo apt build-dep nginx sudo apt install uuid-dev libpcre2-dev

Настройте среду, используя следующую команду. Мы не будем заниматься компиляцией самого Nginx, а лишь модулей. Опция —with-compat обеспечит двоичную совместимость модуля с вашим текущим исполняемым файлом Nginx.

sudo ./configure --with-compat --with-openssl=/usr/include/openssl --add-dynamic-module=/usr/local/src/ngx_http_substitutions_filter_module/ --add-dynamic-module=/usr/local/src/ngx_http_google_filter_module/

Соберите модули, на это потребуется всего несколько минут.

sudo make modules

Если у вас появились ошибки, убедитесь, что на сервере достаточно оперативной памяти. После завершения компиляции переместите файлы в папку /usr/share/nginx/modules/.

sudo cp objs/ngx_http_subs_filter_module. so objs/ngx_http_google_filter_module. so /usr/share/nginx/modules/

Если вы установили Nginx из репозитория nginx. org, можете перенести их в каталог /etc/nginx/modules/.

sudo cp objs/ngx_http_subs_filter_module. so objs/ngx_http_google_filter_module. so /etc/nginx/modules/

Импортирование модулей

Измените главный конфигурационный файл Nginx.

sudo nano /etc/nginx/nginx.conf

Вставьте эти две строки в начало документа.

load_module modules/ngx_http_subs_filter_module. so; load_module modules/ngx_http_google_filter_module. so;

Сохраните файл и закройте его. После этого проверьте настройки Nginx.

Читайте также:  Как установить MySQL 5.7 на CentOS 7 и Fedora 36/35

sudo nginx - t

После успешного завершения теста перезапустите Nginx.

sudo systemctl reload nginx

Конфигурация обратного прокси-сервера Nginx

На данном этапе мы сначала получим и установим бесплатный TLS/SSL-сертификат от Let’s Encrypt, чтобы обеспечить защиту поисковых запросов пользователей через наш обратный прокси. После этого мы займемся настройкой обратного прокси-сервера.

Это очень важно! Открытое зеркало Google может быть заблокировано Великим китайским файрволом!

Создайте новый файл конфигурации для блока сервера в директории /etc/nginx/conf.d и замените search. your-domain.com на выбранное вами доменное имя.

sudo nano /etc/nginx/conf.d/search. your-domain.com.conf

Поместите следующий текст в файл.

server < listen 80; server_name search. your-domain.comroot находится в /usr/share/nginx/html; location~ /.well-known/acme-challenge < allow all; >>

Закройте и сохраните файл, проверьте настройки Nginx и перезапустите его.

sudo nginx - t sudo systemctl reload nginx

В настройках DNS пропишите доменное имя, указывая на IP-адрес вашего VPS на Ubuntu. Далее необходимо установить клиент certbot. Плагин Certbot для Nginx называется python3-certbot-nginx.

sudo apt install certbot python3-certbot-nginx

Разрешите TCP порты 80 и 443 в брандмауэре UFW.

sudo ufw allow 80,443/tcp

Далее с помощью этой команды можно получить и установить бесплатный сертификат TLS/SSL. Не забудьте указать свой адрес электронной почты и доменное имя.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp - d search. your-domain.com --email your-email-address

Теперь, при вводе search. your-domain.com в адресную строку браузера, произойдет перенаправление на HTTPS. Если вы пользуетесь Amazon Web Services (AWS) или Google Cloud Platform (GCP), убедитесь, что в конфигурациях брандмауэра открыт доступ для HTTPS-трафика.

ngx_http_mirror_module

Настроим Nginx для использования в качестве обратного прокси-сервера для Google.com.

sudo nano /etc/nginx/conf.d/search. your-domain.com.conf

Для активации обратного прокси для Google, просто вставьте указанные директивы в серверный блок с SSL.

разрешатель 8.8.8.8; местоположение /

Сохраните изменения в файле и закройте его. Убедитесь в правильности настройки Nginx.

sudo nginx - t

Если тест завершился успешно, перезапустите Nginx.

sudo systemctl reload nginx

Теперь введите ваше доменное имя в адресную строку браузера. Вы должны увидеть результаты поиска Google! Попробуйте ввести несколько ключевых слов. Вот мой обратный прокси для Google: https://search.linuxbabe.com.

Читайте также:  Как открыть конкретный порт в FirewallD

Обратный прокси-сервер Nginx для поиска в Google

Оптимизация

Google способен выявить использование вами определенной программы для поиска, если Nginx непрерывно обращается к одному и тому же серверу Google. Если это будет замечено, вам будет предложено ввести проверочный код для подтверждения вашей человечности. Чтобы снизить риск обнаружения, можно внести директиву upstream в конфигурацию блока сервера Nginx.

источник www.google.com< server 172.217.0.228:443; server 172.217.3.4:443; server 172.217.4.196:443; server 172.217.4.132:443; server 216.58.219.228:443; server 216.58.192.4:443; server 216.58.194.196:443; server 216.58.218.100:443; server 216.58.219.36:443; server 216.58.194.68:443; server 216.58.221.132:443; server 216.58.221.228:443; server 216.58.203.4:443; server 216.58.197.100:443; server 216.58.199.100:443; >server < listen 80; . . >server

Вот несколько IP-адресов компании Google. Вы можете в любой момент обнаружить активные IP-адреса, проверив A-записи доменов Google для определенных стран, например, следующим образом:

nginx как обратный прокси для Google

Сохраните файл и перезапустите Nginx. Теперь Nginx будет обрабатывать результаты поиска Google с этих IP-адресов по циклическому принципу.

Чтобы изменить язык отображения Google, воспользуйтесь командой google_language.

местоположение /

В данном случае будет применяться английский язык. Ниже представлены поддерживаемые языки.

ar -> Арабский bg -> Болгарский ca -> Каталанский zh-CN -> Китайский (упрощенный) zh-TW -> Китайский (традиционный) hr -> Хорватский cs -> Чешский da -> Датский nl -> Нидерландский en -> Английский tl -> Филиппинский fi -> Финский fr -> Французский de -> Немецкий el -> Греческий iw -> Иврит hi -> Хинди hu -> Венгерский id -> Индонезийский it -> Итальянский ja -> Японский ko -> Корейский lv -> Латвийский lt -> Литовский no -> Норвежский fa -> Персидский pl -> Польский pt-BR -> Португальский (Бразилия) pt-PT -> Португальский (Португалия) ro -> Румынский ru -> Русский sr -> Сербский sk -> Словацкий sl -> Словенский es -> Испанский sv -> Шведский th -> Тайский tr -> Турецкий uk -> Украинский vi -> Вьетнамский

Для того чтобы избежать обновления Nginx до более новой версии при выполнении команды sudo apt upgrade, можно заблокировать его обновление.

sudo apt-mark hold nginx

Мы всегда рады вашим комментариям, вопросам и предложениям. Если вам понравился этот пост, не забудьте подписаться на нашу бесплатную рассылку новостей, следить за нами в Twitter или поставить лайк на нашей странице в Facebook.