Реальные IP в связке Nginx + Apache

При использовании Nginx в качестве реверс прокси, IP адреса клиентов не передаются в Apache. В логах Apache можно видеть запросы, но адреса будут локальными (127.0.0.1 или адрес машины, на которую установлен Nginx). Настраиваем связку Nginx (вер. 1.18) + Apache (вер. 2.4) для передачи последнему реальных IP адресов. Синтаксис Nginx меняется раздражающе часто, но зная куда копать, всегда можно найти более свежее решение. Исходим из того, что Nginx у нас установлен и работает, но возникла необходимость запустить нечто, что работает только с Apache. Если вы когда-либо пытались длительное время обходиться без Apache, используя CMS типа phpBB или DataLife, то понимаете о чём я. Примеров море, но с этими двумя мне приходится возиться чаще всего. Оба движка (вроде как) поддерживают работу на Nginx (phpBB даже официально), но часто бывает так, что всё работает, а после обновлений перестаёт. Всегда лотерея. Устанавливаем Apache и прочее. В моём случае это Debian, поэтомуsudo apt install apache2 libapache2-mpm-itk libapache2-mod-php7.4 libapache2-mod-rpafОбратите внимание на libapache2-mod-php7.4. Выберите пакет для версии PHP, установленной на вашем сервере. Система попытается запустить Apache, но ей это не удастся, так как 80-й порт занят. У нас там Nginx. Отредактируйте файл ports.conf. В Debian он в корне директории Apache2. Listen 127.0.0.1:8080Сохраните файл. Конфиг отвечает за настройку портов. Отредактировав вышеуказанную строчку мы показали, что слушаться должен 8080-й порт на локальном хосте. Если порт у вас занят чем-то другим, то укажите другой порт. Не имеет значения какой порт будет слушать Apache, пока в конфигах хостов Nginx прописан он же. Если Nginx у вас на другой машине, то укажите её адрес. Не имеет смысла править строки, отвечающие за SSL, если соответствующий модуль будет выключен. Не нужно его включать, если ваши сайты доступны по https. Всем этим будет заниматься Nginx и передавать запросы в Apache уже через http, что не страшно в пределах доверенной локальной сети. И уж тем более в том случае, когда Nginx и Apache работают на одной машине. Включите модуль remoteip в Apache.sudo a2enconf remoteipСоздайте файл remoteip.conf в папке с конфигами на стороне Apache. В Debian это папка conf-available в корневой директории Apache. Содержание должно быть следующим:RemoteIPHeader X-Real-IP
RemoteIPHeader X-Client-IP
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1Где в последней строке адрес машины с Nginx. Сохраните файл и “включите” конфиг.sudo 2enconf remoteipКонфиг виртуального хоста на стороне Apache ничего особенного в себя включать не должен, кроме указания адреса и порта.<VirtualHost 127.0.0.1:8080>Не забудьте блок Directory, если хотите использовать файлы .htaccess на стороне Apache. Обычно именно это основная причина, по которой быстрота Nginx меркнет на фоне геморроя с ЧПУ в различных CMS. Так же не забудьте включить модуль rewrite.<Directory /home/user/путь_к_сайту/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>Если у вас виртуальные хосты в отдельных конфигах, то не забудьте включить сам хост.sudo a2ensite имя_конфига.confОтредактируйте конфиг модуля rpaf.conf. В Debian в папке mods-available, в корне директории Apache. Раскомментируйте или добавьте нужные строки. Должно получиться нечто подобное:<IfModule rpaf_module>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1
RPAFheader X-Real-IP
</IfModule>Сохраните файл. Не забудьте про IP, если Nginx на другой машине. На этом на стороне Apache всё готово. Перезагрузите Apache.sudo systemctl restart apache2В настройках виртуального хоста на стороне Nginx добавьте следующее:location / {
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;
proxy_pass http://127.0.0.1:8080;
}Так же обратите внимание на IP. Перезапустите Nginx.sudo systemctl restart nginxТак же можно добавить следующее:location ~* ^.+.(jpg|jpeg|gif|png|svg|js|css||zip|7z|gz|bz2)$ {
}Как видно из содержимого, это перечисление расширений файлов, которые будут обрабатываться на стороне Nginx.На этом всё. Теперь в логах Apache и в CMS (если такой функционал там присутствует) будут отображаться реальные IP адреса клиентов, а не локальный адрес Nginx.

Go to Source
Author: Tatyana

Windows 10. Проблемы с Wi-Fi

Одна из многих проблем с Wi-Fi в Windows связана с тем, что соединение с роутером как бы есть, но выхода в Интернет нет. Свойственно это многим версиям Windows 10 и проблема частично в том, что Windows любит решать за пользователя. Я не буду лить воду по поводу перезагрузки ПК, роутера и прочих шагов из серии “протрите монитор тряпочкой”. Предположим, что диагноз вы поставили верно и с вашим роутером, провайдером и фаерволом всё впорядке. Вы даже попытались подключить ПК к роутеру через кабель и всё заработало. То есть проблема с Wi-Fi на стороне ПК, так как другие устройства в вашей сети получают интернет со стороны роутера без каких-либо проблем. Кривизна обновлений Windows 10 в Сети уже легендарна. Видимо данная проблема также связана с очередным обновлением. 99% всех ПК получают настройки сети со стороны роутера автоматически. IP адреса локальной сети, выделенные в настройках роутера, в 99% случаев располагаются в диапазоне 192.168.X.X, но третий блок цифр может отличаться. В Microsoft, видимо, решили, что это не проблема и Wi-Fi по умолчанию пытается соединиться с сетью 192.168.1.X.Так же это может быть связано с получением неверной информации от роутера, но проблема свойственна именно Windows.Уточните диапазон вашей локальной сети. Посмотреть это можно в настройках роутера, в разделе LAN. Здесь IP адрес вашего роутера и маска подсети. То есть именно этот адрес вы вводите в браузере для входа в настройки роутера. На конце адреса (четвёртый блок) единица. Адреса в вашей локальной сети в диапазоне от 2 до 255. Смотрите настройки DHCP в настройках роутера. В зависимости от модели роутера количество свободных адресов может отличаться. На скриншоте прошивка роутера ASUS. Настройки вашего роутера могут сильно отличаться, но суть одна – локальная сеть может быть только в диапазоне адресов IP адреса вашего роутера. В моём случае адрес роутера – 10.20.1.1. Он же – шлюз. Для локальной сети первые 3 блока цифр всегда те же. То есть подключенное к роутеру устройство будут в адресе 10.20.1.Х, где Х – любая цифра от 2 до 255. Запомните маску подсети и адрес роутера.На стороне Windows откройте терминал. Подойдёт PowerShell. Так же можно вбить в поиск “cmd” (без кавычек) и открыть командную строку. Не важно что вы будете использовать. В командной строке или PowerShell введите команду “ipconfig”. Все команды вводятся без кавычек. Вы получите список сетевых устройств вашего ПК, в том числе виртуальных. Найдите в них ваш Wi-Fi адаптер. В случае если он подключен с сообщением “нет интернета”, то тут будет прописан его IP адрес. Если первые три блока цифр отличаются от адреса вашего роутера, то вы уже почти решили проблему подключением. Далее откройте Контрольную Панель в Windows. В последних версиях Десятки она спрятана как “пережиток” предыдущих версий Windows. Используйте поиск Windows. Через Контрольную Панель откройте настройки сетевых адаптеров. Смотрите скриншот. Выберите ваш Wi-Fi адаптер и правым кликом мыши откройте свойства (последний пункт меню, внизу). В открывшемся меню выделите пункт протокола TCP/IPv4 и откройте его свойства. В настройках указано “получать IP адрес автоматически”. Поставьте галку на ручной режим. В поле “IP адрес” укажите адрес, на котором будет располагаться ваш ПК. Как уже сказано выше – это один из адресов в вашей локальной сети. Любой свободный адрес в диапазоне вашей локальной сети. В моём случае адрес с цифрой 18 в последнем блоке был свободен и поэтому я использую его. Всё зависит от диапазона, выделенного в настройках роутера. В поле “маска подсети” укажите маску, которая указана в настройках роутера. Как правило это 255.255.255.0. В поле “шлюз” укажите адрес вашего роутера. В полях DNS (две строчки) достаточно заполнить одну. Если указать адрес роутера (то же, что и шлюз), то будут использоваться DNS вашего провайдера или те, что указаны в настройках роутера. В моём случае указаны публичные DNS Google. Можете скопировать эти данные. В этом случае данные о посещённых сайтах и проведённом на них времени будут недоступны вашему провайдеру, и только Google сможет шпионить за вашими похождениями. Сохраните настройки и перезагрузите компьютер. После чего убедитесь, что данные действительно сохранились. Проверить это можно командой “ipconfig” или посмотреть настройки адаптера, открыв их заново. Если вы ничего не напутали с адресами, то после вышеописанных манипуляций Интернет должен быть доступен.

Go to Source
Author: Tatyana

DXVK 1.5 с поддержкой Direct3D 9

Philip Rebohle выпустил DXVK 1.5, новейшую версию реализации трансляции вызовов Direct3D в Vulkan. Среди прочего, релиз примечателен объединением DXVK с проектом D9VK, разрабатываемым на его основе.

Go to Source
Author: Tatyana

Как соблюсти 32-х битные зависимости при сборке Wine

«Инструкция по сборке Wine» описывает процесс компиляции WoW-сборки Wine. Процесс подразумевает наличие всех 32-х битных зависимостей, необходимых для компиляции. В ряде дистрибутивов этого достаточно.

Go to Source
Author: Tatyana