Категорії
FreeBSD Linux Solaris WWW

Правильная ротация логов java/tomcat’a

Всё бы хорошо, но tomcat не понимает сигналs HUPSIGUSR1 (при их получении он просто завершается). Как быть, если надо ротировать логи. Есть 2 варианта: через системный log-ротатор и через встроенные механизмы самого tomcat’a. Я рассмотрю первый вариант, так как в нём больше возможностей в плане ротации файлов. Но тут есть нюанс: ротировать будем с помощью метода copytruncate, то есть нужный нам лог сначала копируется, а потом урезается до нулевой длинны, тем самым не нарушая последующей записи в исходный лог.

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

PHP Fatal error: Call to undefined method Imagick::getImageAlphaChannel()

Недавно столкнулся с такой проблемой: на одном сайте получаем ошибку, что в теме. Естественно многие подумают, что не установлен модуль imagick (или сам ImageMagick) для php. Но не тут-то было. Модуль (да и сам ImageMagick) установлен, виден через php -m, реинсталл модуля тоже не решил проблему. Через ldd проблем не видно. Осталось одно подозрение: что-то не так с самим модулем imagick.so.

Категорії
WWW

[nginx] Исключения для limit_req_zone

Как убрать ограничение для limit_req_zone? Оказывается это просто и решается через модули geo и map. Ниже решение, найденное на просторах сети:

geo $limited_net {
    default      1;
    10.1.0.0/16  0;
}

map $limited_net $addr_to_limit {
    0  "";
    1  $binary_remote_addr;
}

limit_req_zone  $addr_to_limit  zone=gulag:10m  rate=2r/s;

Вся разгадка в том, что бы сделать непустое значение для нашей переменной. Напомню, что пустые значения (как в даном случае у нас определена подсеть 10.1.0.0/16) не учитываются.

Категорії
WWW

[nginx] Исключения для auth_basic

Если вам нужно исключить для определёных IP auth_basic, то эта статья для вас. Замечу, что данный метод позволяет исключить только по IP, а не по другим признакам. Для этого в nginx’e есть модуль satisfy. Ниже выдержка из документации

синтаксис: satisfy all | any;
умолчание: satisfy all;
контекст: http, server, location

Разрешает доступ, если оба (all) или хотя бы один (any) из модулей ngx_http_access_module и ngx_http_auth_basic_module разрешают доступ.

Категорії
WWW

[apache] rewrite url на другой домен с исключением

Задача: URL вида http://domain.com/URI перенаправлять на http://otherdomain.org/URI с сохранением URI. При этом, URL вида http://domain.com/lists* не редиректить. Решение такое (2 блока = один для домена без www, второй – с www):

RewriteCond %{REQUEST_URI} !^/lists(.+)$
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://otherdomain.org/$1 [R=301,L]

RewriteCond %{REQUEST_URI} !^/lists(.+)$
RewriteCond %{HTTP_HOST} ^www.domain.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.otherdomain.org/$1 [R=301,L]

А вот пример, когда нужно сделать такой редирект http://domain.com/page/URI -> http://otherdomain.com/URI (поместить а файл /page/.htaccess относительно корня сайта):

RewriteEngine On
RewriteRule ^(.*)$ http://otherdomain.org/$1 [R=301,L]

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

get запрос к сайту из консоли

Иногда бывают моменты, когда нужно протестировать работоспособность сайта из консоли. Для этого не нужно ставить X11, браузеры, а достаточно обычного telnet-клиента и openssl (для проверки https).

Проверка http

$ telnet XXX.XX.XX.XXX 80
...
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
...

Проверка https

$ openssl s_client -connect XXX.XX.XX.XXX:443
... connection information will be displayed ...
GET / HTTP/1.1
Host: www.example.com
...

А если нужно проверить работу SNI, то можно использовать такую конструкцию:

$ openssl s_client -connect <address> -servername <name>

Посмотреть сертификат:

$ openssl s_client -connect example.com:443 -showcerts

Категорії
Linux Solaris WWW

Ставим Selenuim на Solaris/Linux

Что такое Selenuim – можно прочитать на wiki. Здесь опишу только установку

Тестовый стенд: Solaris 11.1 x86, selenium-server-standalone-2.30.0, Debian linux 7.2

Скачиваем selenium-server-standalone с официального сайта http://selenium.googlecode.com/files/selenium-server-standalone-2.30.0.jar в папку /opt/selenium.

Категорії
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

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

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

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

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

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