FreeBSD - встановлюємо та налаштовуємо nginx
Стаття написана 2015-04-03 09:11:02 Останні редагування 2015-06-01 13:50:48
Схоже, що ера Apache у світі web-серверів проходить і настає ера nginx. Я розповім вам, як встановити nginx, налаштувати geoip і запустити сайт. Як приклад наведено дві конфігурації, "свій сайт" та "проксі".
- Максимальна кількість з'єднань, які nginx може обслуговувати одночасно, визначаються добутком двох параметрів:worker_processes(в останніх версіях nginx рекомендується задавати значення auto) іworker_connections(значення від 1024 до 4096);
- use kqueue;- метод вибору з'єднань (epoll,kqueue). Для FreeBSD найшвидший – kqueue;
- server_tokens off;- не показуємо нічого у підписі
- sendfile on;- метод відправлення даних (найефективніший)
- keepalive_timeout 30;- nginx буде чекати 30 секунд перед закриттям keepalive з'єднання
- reset_timedout_connection on;- скидати з'єднання з клієнтом, який не відповідає;
- client_body_timeout 10;- чекати 10 секунд на тіло запиту від клієнта, після чого скинути з'єднання;
- send_timeout 2;- скинути з'єднання якщо клієнт припинив читання відповіді протягом 2 секунд;
- gzip- стискаємо дані під час передачі клієнту;
- include .- включаємо у загальну конфігурацію конфіги окремих сайтів;
Конфігураціясайту, який обслуговує сам nginx./usr/local/etc/nginx/sites/mysite.confДетально про конфігурацію:
- listen 192.168.1.3:80 default sndbuf=16k rcvbuf=8k accept_filter=httpready;- слухаємо на ip=192.168.1.3, порт 80.default- сайт за замовчуванням (наприклад, показується якщо клієнт ломиться по ip а не на ім'я сайту), можна вказати тільки для одного сайту (в одному блоці server<>).sndbuf rcvbuf- буфери в пам'яті на відправлення та отримання;
- accept_filter=httpready- технологія "accept filters" існує тільки в FreeBSD і дозволяє передавати пакет від ядра до процесу тільки у разі приходу будь-яких даних або валідного http запиту, що допомагає розвантажити сервер у разі великої кількості з'єднань. Щоб її увімкнути, необхідно прописати в /boot/loader.conf завантаження модулів ядра accf_http accf_data, а краще перезбирати ядро з опціями:
- root- коренева директорія сайту;
- location /- у цьому блоці вказуємо індексні файли;
- location
\.html - у цьому блоці вказуємо, що файли з розширенням .html обробляються за допомогою ssi;location
/cgi-bin/ - у cgi-bin у нас зберігаються скрипти на perl, запускаємо їх через fastcgi-сервер. access_log і error_log в цьому блоці додані для складання звернень до скриптів в окремі лог-файли, ці рядки можна забрати і все буде писатися в загальний лог;