Категорії
WWW

[nginx] online upgrade

Nginx становиться с каждым днём всё популярнее и популярнее. И вот, недавно обнаружил тот факт, что мы можем обновить nginx вообще без downtim’a и restart’a. Этим может похвастаться не каждый продукт.

Тестовый стенд: FreeBSD 9.0 Release amd64, nginx-1.2.3 (в последствии ставший 1.2.6)

Категорії
WWW

Пробрасываем ftp в локалку

Иногда бывают моменты, когда нужно заставить “видеть” локальный ftp снаружи. Как правильно подойти к этому вопросу? Нормально ли будет он работать за NAT’ом? Для того, что бы ftp нормально работал, нужно выполнение таких условий

1) Только пассивный режим работы самого FTP-сервера
2) Указать диапазон портов для пассивной передачи (passive ports range)
3) Проброс портов должен соответствовать 1:1 (то есть для passive ports range 5000:5099 пробрасываться они должны тоже в порты 5000:5099)

После этого можно спокойно “пробрасывать” в локалку passive ports range + 21-ый. При этом, 21-ый не обязательно снаружи должен быть 21-ым, а вот portrange – должны соответствовать 1:1.

Вот как это выглядит на примере файервола pf:

rdr on $ext_if proto tcp from any to $ext_if port 21 -> 10.10.10.10 port 21
rdr on $ext_if proto tcp from any to $ext_if port 5000:5099 -> 10.10.10.10 port 5000:5099

Естественно, так же нужно в самом файерволе разрешить подключение на указанные порты.

а так для ipfw

ipfw nat 1 config redirect_port tcp 10.10.10.10:21 21
ipfw nat 1 config redirect_port tcp 10.10.10.10:5000-5099 5000-5099

а вот так для iptables

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to-destination 10.10.10.10:21
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5000:5099 -j DNAT --to-destination 10.10.10.10

Категорії
Misc, staff, other WWW

FTP FXP или сливаем файлы с одного FTP на другой, без участия промежуточного PC пользователя

FXP (англ. File eXchange Protocol — протокол обмена файлами) — способ передачи файлов между двумя FTP-серверами напрямую, не закачивая их на свой компьютер. При FXP-сессии клиент открывает два FTP-соединения к двум разным серверам, запрашивая файл на первом сервере, указывая в команде PORT IP-адрес второго сервера.

Категорії
Programming WWW

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

Представим себе ситуацию: mysql у вас стоит на одной машине, а php – на другой. И вам нужно добавить поддержку pdo_mysql в php. Тянуть mysql на машину с php не надо, достаточно лишь создать каталог /usr/mysql и в нём такие каталоги:

lib/mysql – сюда скопировать либы libmysqlclient.so и libmysqlclient_r.so
bin – сюда скопировать mysql_config
include – сюда скопировать заголовочные файлы

Этого достаточно, что бы собрать pdo_mysql.

Тестовый стенд: Solaris 11, php-5.4.3 (php установлен в /usr/php54)

Категорії
WWW

nginx(frontend)+apache(backend)

Рассмотрим довольно популярную связку Apache+Nginx для снижения нагрузки на сервер. Так же, хочу заметить, что данная статья учитывает virtual hosts, а не отдельно хостящийся сайт (для такого сайта статья тоже подойдёт)

Категорії
WWW

[nginx] Ошибки nginx’a

[error] upstream timed out (Operation timed out) while reading response header from upstream

Эта ошибка появляется тогда, когда страница генерируется больше времени, чем установленный timeout front-end’a. Обычно она возникает когда nginx отправляет запросы дальше (на apache, на php-fpm, …) По умолчанию эти таймауты – 60 секунд. Поставим 180 (эти параметры прописываются в location):

proxy_send_timeout 180s;
proxy_read_timeout 180s;

Хочу заметить, что буква ‘s’ – обязательна. Без неё ошибок не будет, но и значения не будут учитываться.

Категорії
WWW

[nginx] Рекомендации по защите

В статье будем рассмотрены варианты защиты nginx от разного рода нападений, атак, а так же улучшений

1) Запрет доступа по IP

Разрешим доступ только через доменное имя:

if ($host !~ ^(host.com|www.host.com)$ ) {
return 444;
}

Категорії
Misc, staff, other WWW

[apache] Failed to enable the ‘httpready’ Accept Filter

Если вы видите такую ошибку, она может означать одно: есть проблемы с модулем httpready. Но решение проблемы делиться на 2 случая:

1) Модули не подгружены.

Проверить загрузку модулей можно так:

$/sbin/kldstat -v | grep accf_http
$/sbin/kldstat -v | grep accf_data

Категорії
WWW

[PHP] Добавляем поддержку модуля без пересборки

Представим ситуацию: нужно добавить модуль, без пересборки всего php (так называемый shared модуль). То есть по сути, мы скомпиллируем *.so и просто подгрузим его через php extensions.

Категорії
Security WWW

Убираем информацию о версии из web-сервера

Что бы добавить работы взломщикам 🙂 уберём из заголовков (запрос get HEAD / HTTP/1.0) информацию о версии нашего web-сервера. Естественно, что информацию о самом web-сервере таким образом убрать не удастся (зато можно изменить или убрать, поправив исходники).

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP