Данное руководство описывает процесс настройки Nginx в качестве обратного прокси для поисковой системы Google.
В ряде стран и регионов мира, включая Китай, доступ к поисковой системе Google ограничен. В наше время поисковые системы выступают ключевыми проводниками к информации, а 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.
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.
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-трафика.

Настроим 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.

Оптимизация
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. Теперь 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.

