FreeBSD - встановлюємо та налаштовуємо nginx

Стаття написана 2015-04-03 09:11:02 Останні редагування 2015-06-01 13:50:48

Схоже, що ера Apache у світі web-серверів проходить і настає ера nginx. Я розповім вам, як встановити nginx, налаштувати geoip і запустити сайт. Як приклад наведено дві конфігурації, "свій сайт" та "проксі".

  • УстановкаУ налаштуваннях вибираємо:
  • /etc/rc.conf
  • НалаштуванняКонфігураційні файли зберігаються в/usr/local/etc/nginxОсновне налаштування:/usr/local/etc/nginx/nginx.conf. Пишемо з нуля: Примітки щодо конфігурації:
    • Максимальна кількість з'єднань, які 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 в цьому блоці додані для складання звернень до скриптів в окремі лог-файли, ці рядки можна забрати і все буде писатися в загальний лог;