Використовуємо nginx, як frontend до apache, Media UniX

freebsd команди, налаштування, встановлення сервера і не тільки

Використовуємо nginx, як frontend до apache

Є apache22, і щоб не завантажувати його, а як наслідок і сам сервер, такою нісенітницею, як віддача статичних файлів jpg, jpeg, gif, png, ico, bmp, swf, js, вирішено було пустити в бій веб-сервер nginx, саме для віддачі статично. Іншими словами, все як і раніше буде робити apache (зберігаємо його міць), за винятком видачі картинок, флешу і JavaScript. Це зменшить навантаження на веб-сервер загалом. Думатимемо що Apache22 вже у вас встановлений, якщо ні, то тут у статті описано, як це зробити.

Далі встановлюємо nginx: cd /usr/ports/www/nginx make config

Вибираємо опції: Options for nginx 1.1. [ ] DEBUG Enable nginx debugging [ ] DEBUGLOG Enable debug log (—with-debug) [ ] FILE_AIO Enable file [ ] IPV6 Enable IPv6 [ ] GOOGLE_PERFTOOLS Enable google perftool [X] HTTP_MODULE Enable HTTP module [ ] HTTP_ADDITION_MODULE Enable http_addition module [X] HTTP_CACHE_MODULE Enable http_cache module [ ] HTTP_DAV_MODULE Enable http_webdav module > [ ] HTTP_GEOIP_MODULE Enable http_geoip module [X] HTTP_GZIP_STATIC_MODULE Enable http_gzip_static module [X] HTTP_IMAGE_FILTER_MODULE Enable http_image_filter module [ ] HTTP_PERL_ INDEX_MODULE Enable http_random_index module [X] HTTP_REALIP_MODULE Enable http_realip module [X] HTTP_REWRITE_MODULE Enable http_rewrite module [ ] HTTP_SECURE_LINK_MODULE Enable http_secure_link module [ ] HTTP_SSL_MODULE Enable http_ _stub_status module [ ] HTTP_SUB_MODULE Enable http_sub module [ ] HTTP_XSLT_MODULE Увімкнути модуль http_xslt [ ] MAIL_MODULE Увімкнути модуль проксі IMAP4/POP3/SMTP [ ] MAIL_IMAP_MODULE Увімкнути модуль проксі IMAP4 [ ] MAIL_POP3_MODULE Увімкнути модуль проксі POP3 [ ] MAIL_SMTP_MODULE Увімкнути Проксі-модуль SMTP [ ] MAIL_SSL_MODULE Увімкнути модуль mail_ssl [ ] WWW Увімкнути файли зразків html [ ] CACHE_PURGE_MODULE Сторонній модуль cache_purge [ ] ECHO_MODULE 3-й розробник echo module [ ] HEADERS_MORE_MODULE сторонній headers_more module [ ] HTTP_ACCEPT_LANGUAGE Сторонній модуль accept_language [ ] HTTP_ACCESSKEY_MODULE Сторонній модуль http_accesskey [ ] HTTP_AUTH_PAM_MODULE Сторонній модуль http_auth_pam [ ] HTTP_AUTH_REQ_MODULE Сторонній модуль http_auth_request e [ ] HTTP_EVAL_MODULE третьої сторони eval module [ ] HTTP_FANCYINDEX_MODULE Сторонній модуль http_fancyindex [ ] HTTP_GUNZIP_FILTER Сторонній модуль http_gunzip_filter [ ] HTTP_MOGILEFS_MODULE Сторонній модуль mogilefs [ ] HTTP_MP4_H264_MODULE Сторонній модуль mp4/h264 [ ] HTTP_NOTICE_MODULE Сторонній модуль сповіщень [ ] HTTP_PUSH_MODULE Сторонній модуль push [ ] HTTP_REDIS_MODULE Сторонній модуль http_redis [ ] HTTP_RESPONSE_MODULE Сторонній модуль http_response [ ] HTTP_SUBS_FILTER_MODULE Сторонній модуль фільтра підписок [ ] HTTP_UPLOAD_MODULE Сторонній модуль завантаження [ ] HTTP_UPLOAD_PROGRESS Сторонній модуль uploadprogress [ ] HTTP_UPSTREAM_FAIR сторонній вихідний модуль Fair [ ] HTTP_UPSTREAM_HASH сторонній хеш-модуль висхідного потоку [ ] HTTP_UPSTREAM_KEEPALIVE сторонній висхідний модуль keepalive [ ] HTTP_ZIP_MODULE Сторонній модуль http_zip [ ] CHUNKIN_MODULE Сторонній модуль chunkin [ ] DEVEL_KIT_MODULE Сторонній модуль devel_kit [ ] GRIDFS_MODULE Сторонній модуль gridfs [ ] LUA_MODULE Сторонній модуль lua [] MEMC_MODULE 3rd party memc (memcached) module [ ] PASSENGER_MODULE 3rd party passenger module [ ] POSTGRES_MODULE 3rd party postgresql module [ ] REDIS2_MODULE 3rd party redis2 slowfs_cache module [ ] SRCACHE_MODULE 3rd party srcache module [ ] SUPERVISORD_MODULE 3rd party supervisord module [ ] SYSLOG_SUPPORT 3rd party syslog support [ ] UDPLOG_MODULE 3rd party udplog (sys xss module

встановлюємо: make BATCH=yes -C/usr/ports/www/nginx install clean rehash

Далі додаємо nginx в автозапуск, для цього /etc/rc.conf дописуємо: nginx_enable=»YES»

Підправимо конфіг апача, змусимо слухати його інший номер порту. Посадимо апач, наприклад, на порт 8080 (просто довільно вибрав) ee /usr/local/etc/apache22/httpd.conf

шукаємо рядок: Listen 80

і змінюємо її на: Listen 8080

і дописуємо в самому кінці конфіга (це необхідно для mod_rpaf apache22, його ми встановимо трохи нижче в цій статті): RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 RPAFheader X-Forwarded-For

Закриваємо конфіг. Далі правимо конфіг nginx: cp /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx.conf_bkp ee /usr/local/etc/nginx/nginx .conf

до наступного стану: # кількість робочих процесів worker_processes 3; # пріоритет робочих процесів # негативне число означає вищий пріоритет. # Можливий діапазон від -20 до 20. worker_priority -5; timer_resolution 100ms; #worker_rlimit_nofile 8192; error_log /var/log/nginx-error.log;

events worker_connections 1024; # kqueue - «ефективний спосіб обробки сполук використовуваний у FreeBSD 4.1+» usekqueue; >

http include mime.types; default_type application/octet-stream; #access_log /var/log/nginx-access.log main; sendfile off; tcp_nopush on; tcp_nodelay on; output_buffers 2 64k;

client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; keepalive_timeout 2m;

gzip on; gzip_min_length 1000; gzip_proxied any; gzip_types text/plain text/xml application/xml application/x-javascript text/javascript text/css text/json; gzip_disable "msie6"; gzip_comp_level 8;

upstream backend # а це наш apache server 127.0.0.1:8080; >

server listen 80; server_name localhost;

#charset koi8-r; #access_log /var/log/host.access.log main;

# розширення файлів, які будемо віддавати, не вдаючись до допомоги apache location

* \.(jpgjpeggifpngicobmpswfjs)$ # директорія, де лежать файли, для видачі веб-сервером root /usr/local/www; >

location/proxy_pass http://backend/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr;

proxy_connect_timeout 120; proxy_send_timeout 120; proxy_read_timeout 180; >

#error_page 404/404.html; error_page 500 502 503 504 /50x.html; location = /50x.html root /usr/local/www/nginx-dist; > # deny access to .htaccess files, якщо Apache's document root # concurs with nginx's one # #location

/\.ht # deny all; #> location = /stat stub_status on; access_log off; # allow xx.xx.xx.xx; # deny all; >

> Ось тепер ставимо модуль RPAF: cd /usr/ports/www/mod_rpaf2 make install clean rehash

виконуємо (щоб apache22 перечитав свій конфігhttpd.conf): apachectl graceful

запускаємо сам nginx: /usr/local/etc/rc.d/nginx start

перевірити що статичні файлики стали віддаватися nginx'ом можна спробувавши зайти на http://ip-сервера/wrt.jpg де: ip-сервера -це там де тільки що проводили налаштування за статтею wrt. jpg -не існуючий jpg файлик на вашому сервері отримайте відповідь сервера

значить, картинку спробував віддати наш, щойно встановлений, nginx. Все, таким чином, ми завдяки розробці Ігоря Сисоєва (nginx) зменшили навантаження на веб-сервер.

Навігація за записами