nginx
Добавляем в раздел server/http такие строки:
gzip on
gzip_types text/plain application/xml application/x-javascript application/javascript text/javascript text/css text/xml;
gzip_comp_level 3;
gzip_buffers 128 4k;
Добавляем в раздел server/http такие строки:
gzip on
gzip_types text/plain application/xml application/x-javascript application/javascript text/javascript text/css text/xml;
gzip_comp_level 3;
gzip_buffers 128 4k;
Означает скорее всего то, что директивы
listen 80
и
listen 443
описаны в пределах одного блока server. Решений здесь 2:
– разнести из в разные блоки server {}
– закомментировать ssl on как показано на примере ниже:
server {
listen 80;
listen 443 default ssl;
# ssl on - remember to comment this out
}
Если вам нужно быстро поднять webserver без установки дополнительного ПО, то эта статья для вас. Ниже будет описано несколько разных методов.
1) python
$python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
Как видим, запустился web-сервер на порту 8000.
2) netcat
$while true ; do nc -l 80 < index.html ; done
Здесь идёт жёсткое указание, какой файл будет отдаваться по http.
Всё бы хорошо, но tomcat не понимает сигналs HUP, SIGUSR1 (при их получении он просто завершается). Как быть, если надо ротировать логи. Есть 2 варианта: через системный log-ротатор и через встроенные механизмы самого tomcat’a. Я рассмотрю первый вариант, так как в нём больше возможностей в плане ротации файлов. Но тут есть нюанс: ротировать будем с помощью метода copytruncate, то есть нужный нам лог сначала копируется, а потом урезается до нулевой длинны, тем самым не нарушая последующей записи в исходный лог.
Недавно столкнулся с такой проблемой: на одном сайте получаем ошибку, что в теме. Естественно многие подумают, что не установлен модуль imagick (или сам ImageMagick) для php. Но не тут-то было. Модуль (да и сам ImageMagick) установлен, виден через php -m, реинсталл модуля тоже не решил проблему. Через ldd проблем не видно. Осталось одно подозрение: что-то не так с самим модулем imagick.so.
Как убрать ограничение для 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) не учитываются.
Если вам нужно исключить для определёных 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 разрешают доступ.
Задача: 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]
Иногда бывают моменты, когда нужно протестировать работоспособность сайта из консоли. Для этого не нужно ставить 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
Что такое 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.