LINUX.ORG.RU

fproxy v83 — локальный прокси-сервер для фильтрации http(s)-трафика

 , , , ,


3

5

Опубликована 83-я версия кэширующего и антиспамного прокси-сервера для персонального использования c гибкими настройками.

Основные функции (всё настраивается):

  1. фильтрация нежелательного контента (белые/чёрные списки на урлы, запрет кук);
  2. принудительное и бессрочное кеширование полученных данных (в основном удобно для картинок и скриптов);
  3. исправление содержимого веб-страниц на лету (правкой исходника на Си, есть пример для замены содержания страниц-клонов stackoverflow ссылкой на оригинал);
  4. чёрные/белые списки сертификатов и certificate pinning по списку;
  5. подмена айпи-адреса/домена/пути/протокола http-запроса по конфигу (такой расширенный вариант /etc/hosts);
  6. http/https-сниффер.

Прекрасно подходит для просмотра сайтов через медленный интернет или с медленного устройства (благодаря п.1 и 2, ради которых изначально всё и затевалось), но вообще полезно в любом случае.

Прокси-сервер в целях безопасности и упрощения логики работы разделён на три части: TLS-сервер (терминирующий браузерные подключения), центральный модуль прокси и клиент, терминирующий исходящие подключения.

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

Пример списка блокировки:

deny    nosub   all     share.yandex.ru browser-updater.yandex.net
deny    nosub   all     a.ria.ru # ?
deny    nosub   spec    vk.com
                query   /share.php
deny    nosub   spec    yastatic.net
                query   /pcode/adfox/loader.js
                query   /share2/share.js
deny    nosub   spec    www.youtube.com
                query   /subscribe_widget
deny    nosub   spec    pano.img.ria.ru
                query   /adriver/flashplagin/movie.swf
deny    nosub   spec    a.ria.ru
                query   /ping
deny    nosub   spec    n-ssl.ria.ru
                query   /polling
deny    nosub   spec    apis.google.com
                query   /js/plusone.js
deny    nosub   spec    yandex.ru
                pref    /clck/safeclick/
                pref    /clck/click/
                pref    /clck/jclck/
deny    all     spec
                query   /tnc    # index.ru proxied counter
                exact   /tnc.js # index.ru proxied counter
                query   /pixel.gif # some spammers use this

Пример списка роутинга:

https://my.local.site
        set proxy none
        set target http://127.0.0.1:1234/localsite
        set http_host new.host:1234
.intel.com
        resolve off
        set proxy socks5://127.0.0.1:3333

В случае обновления с версии более старой чем 78 следует сконвертировать кеш: зайти в рабочую директорию прокси-сервера от юзера (uid/gid) прокси-сервера и выполнить fproxy-cacheconv-78 (по умолчанию эта программа не компилируется).

Изменения с прошлой опублированной версии (80):

  1. fproxy-dashboard теперь имеет опцию для показа размеров контента в байтах а не кбайтах;
  2. поддержка багнутых серверов, игнорирующих заголовок «Connection: close»;
  3. поддержка багнутых серверов, отдающих некорректный заголовок «Content-Encoding: identity»;
  4. отправка TLS-опции ALPN;
  5. улучшение работы TLS-терминатора внешней стороны (клиента): он теперь поддерживает не только TLS, но и обычные соединения, поддерживает работу в виде независимого демона с приёмом запросов от основного прокси по сети, а также может пробрасывать свои исходящие соединения через другое прокси, таким образом позволяя гибко разделять задачи между узлами в условиях плохого интернет-соединения и/или необходимости организовать «выход» трафика где-то на удалённом сервере разной степени доверенности; так же новая версия более удобна для использования вручную из командной строки в качестве консольного TLS-клиента с поддержкой проксирования;
  6. упрощена сборка, теперь есть Makefile вместо шелл-скриптов
  7. организованы предсобранные .deb-пакеты в репозитории (для версий Debian 8-12)
  8. изменения файла конфигурации, обратно-несовместимые
  9. новый конфиг для управления роутингом запросов, объединивший ранее бывшие отдельными конфиги resolv и включения проброса исходящих соединений на удалённый сервер, а так же получивший ряд новых опций: теперь можно для каждого url-а (протокол, домен, порт, путь) выбирать через какой клиент, какое прокси он будет отправлен, через чей днс-сервер будет проводиться определение его айпи-адреса (включая опциональное делегирование этой задачи внешнему прокси-серверу http или socks5), либо прописать адрес вручную, а так же заменить протокол, порт или префикс пути url-а
  10. добавлена поддержка SAN-сертификатов для ip-адресов и в клиенте и в сервере (браузеры с некоторых пор перестали принимать ip-адреса в CommonName)

В планах на будущее:

  1. поддержка CGI/FastCGI/.so хуков для mitm-обработки полученного от сайтов контента
  2. менеджер профилей и конфигураций прокси
  3. интерактивное управление проверкой сертификатов удалёных сайтов и списками блокировок

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 4)
Ответ на: комментарий от hateWin

Написано же - старее чем 78. Может быть двусмысленно звучит, исправлю тогда.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 3)

А куда его надо ставить? На роутер? Или на свой комп? Ежели дефолтное поставлю, у меня весь онторнет пропадёт? Есть какие-то списки на манер адблока? Или каждый лепит свои неповторимые правила?

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

Ставишь куда хочешь, в браузере указываешь как прокси. Правила свои, да. На компе будет удобнее во всех аспектах - т.к. основная цель по возможности не пользоваться сетевым интерфейсом вообще и запросы отвечать локально из кеша (в т.ч. смотреть ранее посещённые сайты после отключения инета) либо блокировать если они ненужные.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от R_He_Po6oT

Утилиты для выборочной чистки нет. Но нужна, да.

firkax ★★★★★
() автор топика
Ответ на: комментарий от R_He_Po6oT

Вот такой скрипт всё скачает и соберёт (если zlib-dev и openssl-dev установлены) за меньше минуты

wget https://dev.m1089.ru/fcl/files/fcl-20231219.tar.gz
tar xf fcl-20231219.tar.gz
wget https://dev.m1089.ru/fproxy/files/fproxy-v83.tgz
tar xf fproxy-v83.tgz
cd fcl-20231219/DEV
FCLPATH=`pwd`
cd src
./build.sh fcl
cd ../../../fproxy-v83
make FCLPATH=$FCLPATH
rm -Rf work/obj
mkdir ../RESULT
mv work ../RESULT/bin
mv share ../RESULT/share
firkax ★★★★★
() автор топика
Ответ на: комментарий от R_He_Po6oT

Держи:

pkgname=fproxy
pkgver=83
_fclver=20231219
pkgrel=1
arch=('i686' 'x86_64' 'armv6h')
url="https://dev.m1089.ru/fproxy"
license=('BSD')
depends=('zlib' 'openssl')
source=("https://dev.m1089.ru/fproxy/files/fproxy-v$pkgver.tgz"
        "https://dev.m1089.ru/fcl/files/fcl-$_fclver.tar.gz")
sha256sums=('0d53b80de47c504fb32e5b1d9985e77cda53eaaa54a65e4792db01fa7ac21e4d'
            'a472449faba4754acf4ffeaf93df1989cfe5ec6fcf49c3978305ec0496211690')

build() {
  export PATH="$srcdir/fcl-$_fclver/DEV/src/scripts:$PATH"
  export FCLPATH="$srcdir/fcl-$_fclver/DEV"
  echo $PATH
  cd "$srcdir/fcl-$_fclver/DEV/src/fcl"
  sh build.sh
  cd "$srcdir/$pkgname-v$pkgver"
  make
}

package() {
  install -dm755 "$pkgdir/usr/bin"
  rm -rf "$srcdir/$pkgname-v$pkgver/work/obj"
  cp $srcdir/$pkgname-v$pkgver/work/* "$pkgdir/usr/bin"
  install -dm755 "$pkgdir/usr/share/$pkgname"
  cp -r $srcdir/$pkgname-v$pkgver/share/* "$pkgdir/usr/share/$pkgname"
}
token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Там файла scripts/BUILD.CONF будет не хватать, без него ничего не соберётся. Его как раз src/build.sh создаёт при первом запуске. Возможно ты его как-то заранее создал.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Действительно.

--- PKGBUILD        2023-12-31 22:30:31.910288895 +0100
+++ PKGBUILD    2023-12-31 22:30:26.096316189 +0100
@@ -15,8 +15,8 @@
   export PATH="$srcdir/fcl-$_fclver/DEV/src/scripts:$PATH"
   export FCLPATH="$srcdir/fcl-$_fclver/DEV"
   echo $PATH
-  cd "$srcdir/fcl-$_fclver/DEV/src/fcl"
-  sh build.sh
+  cd "$srcdir/fcl-$_fclver/DEV/src"
+  sh build.sh fcl
   cd "$srcdir/$pkgname-v$pkgver"
   make
 }
token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от Bers666

Делает сам запросы и ретранслирует их браузеру уже со своим сертификатом, который надо в доверенные добавить. В целом это стандартный способ вмешательства в https. Т.к. браузер в итоге видит только проксевый сертификат и не видит настоящие сертификаты сайтов, прокси берёт их проверку на себя, заодно делая тут поддержку белых/чёрных списков сертификатов для сайтов.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)

Слегка вводит в ступор то, что репозитория по-прежнему нет, и исходники приходится качать тарболлом. С другой стороны, как я уже писал, если автор не надеется на появление пулл/мержреквестов и рассчитывает исключительно на свои силы – почему бы и нет…

hobbit ★★★★★
()
Ответ на: комментарий от sunjob

В firefox это делается в about:preferences на вкладке «приватность и защита», там есть кнопка «просмотр сертификатов». Сам сертификат для добавления даёт (генерирует) установщик.

firkax ★★★★★
() автор топика
Ответ на: комментарий от firkax

Сам сертификат для добавления даёт (генерирует) установщик.

каким образом? «выхлоп в консоль» или создается «где-то» данный сертификат в хомятнике/конфиге? (в 3х слова)

sunjob ★★★★
()
Ответ на: комментарий от hobbit

Слегка вводит в ступор то, что репозитория по-прежнему нет, и исходники приходится качать тарболлом

Ну вообще-то это разные штуки. Само по себе скачивание, что тарболлом, что какой-нить vcs, отличается не сильно - и там и там надо ввести какую-то команду с урлом. Но в целом да, интерактивности не хватает.

firkax ★★★★★
() автор топика
Ответ на: комментарий от sunjob

Для начала работы с проксей надо создать её рабочую директорию (аналог профиля в браузере), вот скрипт её создающий среди прочего генерирует сертификат и сообщает тебе о необходимости добавить его в браузер.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от gns

Нативно нет, и переделывать слишком много. Можно в виртуалке или в WSL если там новая винда. Или с cygwin наверно.

firkax ★★★★★
() автор топика
Ответ на: комментарий от firkax

Пожалуйста. Считай его лицензированным под WTFPL.

token_polyak ★★★★★
()
Ответ на: комментарий от sunjob

Не имеет. Из-за неё пришлось deb-пакеты переименовывать.

Squid это тоже прокси сервер, основная его направленность - это публичный прокси-сервис с контролем доступа и возможностью кеширования страниц в соответствии со спецификациями http (заголовками ответов).

Основная направленность fproxy - это личное использование для активного вмешательства в работу одного конкретного браузера и замены собой браузерного сетевого кода. Контроля доступа для пользователей нет (предполагается что пользователь ровно один), зато есть гибкий контроль доступа по разрешённым/запрещённым урлам и возможность их подменять на лету на другие (а так же подменять ответы от сайтов, но это надо кодить). Что касается кеширования, то оно поддерживается в соответствии с конфигом, настроенным пользователем (вплоть до зеркалирования вообще всего трафика на диск для последующего просмотра сайта оффлайн).

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Что значит «лучше»? nginx это веб-сервер. Сходства, конечно, имеются (потому что и то и то работает с http), но это совсем разное. Сравнение выше со squid-ом было более понятным.

firkax ★★★★★
() автор топика
Ответ на: комментарий от firkax

Я конечно не настоящий сварщик, но в качестве разминки, заплывшего от оливье мозга, накатал PKGBUILD. В комментах видел другой PKGBUILD но там есть лишние действия и нет необходимых ну и совершенно недопустимый rm -fr, не нужно так.

Прогнал через namcap победил всё кроме: lacks FULL RELRO, check LDFLAGS. Добавление export DCFLAGS='-L-zrelro -L-znow' ничего не даёт, ну и ладно.

pkgname=fproxy
_fclname=fcl
pkgver=83
_fclver=20231219
pkgrel=1
pkgdesc="A multipurpose proxy-server with ssl/tls-intercepting"
arch=(i686 x86_64 armv7h aarch64)
url="https://dev.m1089.ru"
license=(CUSTOM)
#makedepends=()
depends=(bash glibc openssl zlib)
source=(${pkgname}-v${pkgver}.tgz::${url}/${pkgname}/files/${pkgname}-v${pkgver}.tgz
        ${_fclname}-${_fclver}.tar.gz::${url}/${_fclname}/files/${_fclname}-${_fclver}.tar.gz)
sha256sums=('0d53b80de47c504fb32e5b1d9985e77cda53eaaa54a65e4792db01fa7ac21e4d'
            'a472449faba4754acf4ffeaf93df1989cfe5ec6fcf49c3978305ec0496211690')
conflicts=(${_fclname})
#install=${pkgname}.install

prepare() {
  cd ${_fclname}-${_fclver}/DEV/src
  ./build.sh fcl
}

build() {
  cd ${pkgname}-v${pkgver}
  make FCLPATH=${srcdir}/${_fclname}-${_fclver}/DEV 
}

package() {
  install -Dm755 ${pkgname}-v${pkgver}/work/fproxy{,_r} -t ${pkgdir}/usr/bin/
  install -Dm755 ${pkgname}-v${pkgver}/work/fproxy-{cache_add,client-wrapper,dashboard,tun} -t ${pkgdir}/usr/bin/
  install -Dm755 ${pkgname}-v${pkgver}/work/ssl-{client,server}-wrapper -t ${pkgdir}/usr/bin/
  install -Dm755 ${pkgname}-v${pkgver}/share/prepare-dir.sh -t ${pkgdir}/usr/share/${pkgname}/
  install -Dm644 ${pkgname}-v${pkgver}/share/LICENSE.txt -t ${pkgdir}/usr/share/licenses/${pkgname}/
  install -Dm644 ${pkgname}-v${pkgver}/share/rules_example/*.{sh,conf,txt} -t ${pkgdir}/usr/share/${pkgname}/rules-example/
}

Еще замечания:

  1. Ставится всё нужное, всё не нужное - не переносится в пакет. Вероятность, что кто-то полезет за инструкциями в share - нулевая, надо это переписывать в man или переносить в docs. С ходу непонятно, что именно нужно делать, даже если ты запустишь prepare-dir.sh
  2. В AUR есть fcl, но видимо устаревший и вообще не собрается, поэтому тут собираем свой. В качестве конфликтного указал.
  3. Можно также указать запуск prepare-dir.sh в файле fproxy.install но это уже прям надо ставить всю балалайку и разбираться дальше, что именно нужно для запусков. Пока закомментировал.
  4. Так как это сервер, то имеет смысл написать systemd service, выделить его в отдельного пользователя и ограничить его своей домашней папкой. Пример есть здесь wireguard-ui.install и wireguard-ui.service Повторюсь, не ставил в систему, поэтому кому именно нужно будет, направление указал. Можно этот PKGBUILD выложить в AUR, лучше конечно когда это будет делать тот, кто этим пользуется, в идеале сам автор.
Nebulosa
()
Ответ на: комментарий от Nebulosa

Спасибо, есть ответы и где-то замечания:

1) насчёт документации в share - я если честно вообще не знаю что с ней делать, написал по-быстрому какую-нить (часть писал ещё так же по-быстрому для старой версии), тут чтоб привести в порядок надо думать

2) fcl который есть в разных репах - это другая библиотека, я про неё узнал уже после того как много лет (в основном для себя, но не только) поддерживал свою, и переименовывать уже не хочется; а вот пакеты для дебиана переименовал, так же можно переименовать и пакеты в других репах если будут отдельные. А вот само имя файла вряд ли будет конфликтовать, там же libname.so.VER и вот это VER скорее всего будет разным. В случае сборки как тут вообще не о чем беспокоиться - если оно линкуется статически то никаких библиотечных файлов вообще не будет в итоге

3) не понял что за fproxy.install (если что я в Arch не разбираюсь)

4) насчёт сервиса - пояснено в самой новости - тут больше расчёт на организацию подобную профилям в браузере, которые создаются по мере надобности, а общесистемный сервис хоть и будет работать, но смысла в нём немного; когда будет менеджер профилей и конфигураций - вот его можно общесистемным сервисом сделать

lacks FULL RELRO, check LDFLAGS. Добавление export DCFLAGS='-L-zrelro -L-znow'

Я так понял это из-за того что LDFLAGS не учитываются, надо будет наверно учитывать их. Вроде сломать сборку ими нельзя.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

не понял что за fproxy.install

Скрипт, который pacman исполняет после установки пакета и в некоторых других случаях.

token_polyak ★★★★★
()
Ответ на: комментарий от Nebulosa

совершенно недопустимыйrm -fr

Поясни, знание пригодится.

install -Dm755 install -Dm755 install -Dm755 install -Dm755 install -Dm644 install -Dm644

Вот этого хотелось избежать.

есть лишние действия и нет необходимых

???

Я конечно не настоящий сварщик

После всего этого - если ты не настоящий пакаджер, то кто я такой вообще? :’(

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 2)
Ответ на: комментарий от firkax

насчёт документации в share - я если честно вообще не знаю что с ней делать

Как минимум свести в один большой README, разделив текстовые конфиги от мануалов. Сейчас это по разным папкам раскидано и смешано.

fcl который есть в разных репах - это другая библиотека

Ну тогда нужно удалить строку conflicts=(${_fclname})

не понял что за fproxy.install

Тут можно прописать необходимые действия для инициализации установки, тот самый prepare-dir.sh чтобы pacman запустил их с нужными опциями.

насчёт сервиса - пояснено в самой новости - тут больше расчёт на организацию подобную профилям в браузере, которые создаются по мере надобности, а общесистемный сервис хоть и будет работать, но смысла в нём немного;

Читаю - «прокси-сервер», понимаю что это резидентная программа, которая обслуживает клиентские запросы. Или я вообще не понял как оно работает..

Nebulosa
()
Ответ на: комментарий от Nebulosa

Да, резидентная, но персональная - привязанная к конкретному браузеру и даже его профилю в идеале, и выполняющая то что нужно конкретному пользователю. Если б было общесистемное то конфиги в /etc бы хранились.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от Nebulosa

В AUR есть fcl, но видимо устаревший

Есть и новее, но насколько подходит для данного проекта, вопрос.

fcl-git Last Updated: 2023-10-08

krasnh ★★★★
()
Ответ на: комментарий от token_polyak

Поясни, знание пригодится.

Были случаи кривых PKGBUILD где тоже были rm -rf и люди не глядя ставили и оставались без системы. Я не знаю, вообще сейчас возможно загрузить в аур PKBUILD с rm Потом, зачем сначала копировать файлы а потом их удалять, нужно сперва отбросить ненужные и явно скопировать только нужные файлы с нужными правами запуска.

Вот этого хотелось избежать

Наоборот, когда речь идёт об исполняемых файлах лучше указать их все в файле, чтобы у стороннего человека было понимание какие именно файлы переносятся в /usr/bin а не гадать, сколько их там 10 или 2 и какие они именно. Если я правильно понимаю, это нужно для того, чтобы потом pacman смог их правильно удалить, когда пакет деинсталлируется.

???

Ну манипуляции c PATH и лицензия не BSD а значит надо её устанавливать явно.

После всего этого - если ты не настоящий пакаджер, то кто я такой вообще? :’(

Всегда найдётся сварщик покрупнее :)

Nebulosa
()
Ответ на: комментарий от Nebulosa

Что непонятного то? Создаёшь «профиль» (prepare-dir.sh), запускаешь (от основного юзера или лучше от отдельного изолированного), пользуешься. Если нужен другой профиль браузера - создаёшь к нему второй профиль прокси (лучше от ещё одного отдельного юзера).

Например можно сделать отдельное прокси для бытового серфинга и развлечений где разрешёно всё кроме спама, отдельное прокси для, например, работы, где в белом списке только корпоративные сайты и их зависимости, и отдельное прокси для каких-нить банков и госуслуг где опять в белом списке только доверенные гос сайты (и кстати другой набор доверенных root ca). У каждого из профилей будут свои отдельные логи и отдельный набор закешированных урлов (в которых теоретически могут быть приватные данные и даже токены для авторизации), поэтому лучше доступ к ним максимально порезать.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Как сложно всё 2-го января))

Ну вот же:

запускаешь (от основного юзера или лучше от отдельного изолированного), пользуешься.

Значит можно написать system service файл и запускать его по мере необходимости от нужно пользователя. Я про это и написал. Ну чтоб окно терминала не висело, например

Nebulosa
()
Ответ на: комментарий от Nebulosa

Ну чтоб окно терминала не висело, например

Оно и не висит если proxy.sh, идущий в комплекте, использовать.

Значит можно написать system service файл и запускать его по мере необходимости от нужно пользователя

Речь про user service может? Ну, может быть, но с systemd нет желания возиться.

firkax ★★★★★
() автор топика

С его помощью можно будет использовать старые браузеры, не поддерживающие https? Есть такая надобность.

My_quest ★★★★★
()
Ответ на: комментарий от My_quest

Вообще не поддерживающие или поддерживающие только старую версию? Если второе - то точно можно, просто разрешаешь SSLv3 на локальной стороне (если нужно SSLv2 то надо ещё древнюю версию openssl найти где он ещё не выкинут). Если первое - то тут зависит от сайта. Стоит попробовать настроить в rules_route подмену протокола http на https, вот так:

http://*
<------>set proto https
<------>set port 443
<------>set wrapper unix:internal/client-wrapper.sock

(последнюю строчку лучше перенести в .conf в виде client.wrapper_http= чтобы не таскать по всем правилам, точнее она зависит от способа установки и в .conf рядом должна быть правильная для https)

С некоторыми сайтами это, думаю, прокатит. Но есть две проблемы:

1) в коде сайта могут быть ссылки на урлы с https:// - и если браузер его вообще не поддерживает, то он посчитает что это битые урлы; тут можно вставить в прокси фильтр для автозамены всех https:// на http:// но это не в конфиге а надо на Си писать

2) если сайт с помощью джаваскриптов проверяет протокол и что-то по этому поводу предпринимает - аналогичная проблема, только тут сложнее автоматически что-то исправить. Кстати, у старых браузеров ещё и поддержка джаваскриптов устаревшая, проблемы будут не только с https.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от firkax

Что значит «лучше»? nginx это веб-сервер. Сходства, конечно, имеются (потому что и то и то работает с http), но это совсем разное. Сравнение выше со squid-ом было более понятным.

Ээээ нет дядя. Nginx – это не веб-сервер. Nginx – это дичайший комбайн ада и кутежа, который может работать веб-сервером. А может работать проксёй, причём не только HTTP(S), но и вообще всего подряд, включая SSH и даже чёрта лысого.

hateyoufeel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.