Выпекаем сайты, находим покупателей

Установка Nginx фронтом к Apache2

Краткая инструкция по установке nginx на сервер с OC Freebsd8 и Apache2.

Зачем нужен nginx?
Для более быстрой работы вашего хостинга. Nginx будет отдавать статические данные(css,html,jpg), а apache2 займётся отдачей динамики(php).
Nginx Fronted Apache Backend


1. Установка модуля mod_rpaf для apache2.
Модуль нужен для правильной передачи ip адресов от nginx к apache. Необходимость появляется после установки nginx в качестве front-end, т.е. теперь, пользователь не будет обращаться к apache, это будет делать только nginx.

Устанавливаем из портов:

cd /usr/ports/www/mod_rpaf2
make install clean

Добавляем в httpd.conf апача:

LoadModule rpaf_module    libexec/apache22/mod_rpaf.so

	RPAFenable On
	RPAFsethostname On
	RPAFproxy_ips IP_адреса_вашего_хостинга 127.0.0.1 8.8.8.8
	RPAFheader X-Forwarded-For

#Теперь apache будет слушать 127.0.0.1:81 по которому будут передаваться данные от nginx.
Listen 127.0.0.1:81
#Если используете виртуальные хосты, то не забудьте для них указать:
NameVirtualHost 127.0.0.1:81

...


2. Nginx ставим мы.
Установка из портов:

cd /usr/ports/www/nginx-devel
make install clean
echo 'nginx_enable="YES"' >> /etc/rc.conf

Настраиваем /usr/local/etc/nginx/nginx.conf по своему усмотрению.
Вот пример с использованием несколько виртуальных хостов:

user www www;
worker_processes  15;
worker_priority -5;
#error_log  /var/log/nginx_global.log;
pid        /var/run/nginx.pid;
events {
    worker_connections  30000;
    use kqueue;
}
http {
client_max_body_size 100m;
server_tokens off;
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=100r/s;
client_header_timeout  3m;
client_body_timeout    3m;
send_timeout           3m;
reset_timedout_connection on;
resolver 127.0.0.1;
resolver_timeout 300s;
open_file_cache          max=1000  inactive=40s;
open_file_cache_valid    30s;
open_file_cache_min_uses 2;
open_file_cache_errors   on;
sendfile on;
include       mime.types;
default_type  application/octet-stream;
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio"';
log_format  mini  '$remote_addr - "$request"';
access_log off;
#access_log  /var/log/nginx-access.log  main;
tcp_nopush on;
tcp_nodelay on;
limit_rate_after 1m;
keepalive_timeout 40;
map  $host  $name  {
     domen.org                     dirdomen;
     www.domen.org                 dirdomen;
     mydomen.org                   dirmydomen;
     yourdomen.org                 diryourdomen;
}
server {
 listen внешний_IP_хостинга:80 accept_filter=httpready;
 server_name domen.org default;
 limit_req   zone=one  burst=500; ### to ddos
 access_log off;
 #access_log  /var/log/nginx_access.log  main;
 location / {
		proxy_pass         http://127.0.0.1:81;
		proxy_redirect     off;
		proxy_set_header   Host             $host;
		proxy_set_header   X-Real-IP        $remote_addr;
		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_connect_timeout 120;
		proxy_send_timeout    120;
		proxy_read_timeout    180;
		}
 location ~* \.(jpg|jpeg|css|gif|png|txt|rar|zip|torrent|js|swf|ico|exe)$ { root /usr/local/www/$name/docs; expires 4h; 
proxy_cache_valid 200 301 302 304 5m;
proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
}
 location ~ /\.ht { deny all; }}
}

Проверка синтаксиса:
nginx -t

Официальный сайт Nginx

Комментарии и отзывы к материалу

25.02.2013

Jimmy пишет:
client_header_timeout 100m;
client_body_timeout 200m;
send_timeout 200m;

Руки оторвать.

25.02.2013

Григорий (MakeFuture) пишет:
Действительно... поправил.

Отправить комментарий

Как зовут?

Сообщение