Блог системного администратора » Ваш сервер » Web сервер » Nginx и Apache2. Установка и быстрая настройка!
 

Nginx и Apache2. Установка и быстрая настройка!

 
Ваш сервер » Web сервер Root 12-05-2011, 23:03

altЗачем нужен Nginx?

Это веб-сервер, предназначенный в основном для отдачи статики (для того чтобы разгрузить бекенд) и использования в качестве фронтендов. Apache при этом можно использовать в качестве бэкенда для генерации динамического контента. Так же Nginx можно использовать в режиме FastCGI, при этом Apache вам не понадобится. Однако при этом режиме у PHP наблюдается ряд проблем, поэтому на помощь приходит php-fpm! 

Однако мы сегодня поговорим о совместной установке с Apache, а не в режиме FastCGI. Более того, по задаче у нас эти веб-сервера будут находится на одном сервере, поэтому выделим для Nginx — 80, а для Apache — 88 порт!

 

alt

 

Установка Apache и Nginx 

Ставим Apache:

yum install httpd

Ставим Nginx:

yum install nginx

Настройка Nginx 

Отредактируем файл /etc/nginx/nginx.conf 


# пользователь и группа от которого запускается процесс
user  www www;

# 3 рабочих процесса (лучше ставить аналогично кол-ву ядер в ЦП)
worker_processes  3;

# Лог для ошибок
error_log  logs/error.log;

events {

    # максимум рабочих соединений
    worker_connections  1024;

    # Метод обработки соединений
    # kqueue — эффективный метод, используемый во FreeBSD
    # Подробнее http://sysoev.ru/nginx/docs/events.html
    use kqueue;
}

http {

    # Подключаем таблицу mime
    include       mime.types;

    # mime-тип по умолчанию
    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"';

    # Лог доступа всего веб-сервера
    #access_log  logs/access.log  main;

    # Директива задаёт таймаут при чтении заголовка запроса клиента
    client_header_timeout  3m;

    # Директива задаёт таймаут при чтении тела запроса клиента
    client_body_timeout    3m;

    # Директива задаёт таймаут при передаче ответа клиенту
    send_timeout           3m;

    # Директива задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера
    keepalive_timeout      2m;

    # Директива разрешает или запрещает использовать sendfile()
    sendfile        on;

    # Директива разрешает или запрещает использовать опции TCP_NOPUSH во FreeBSD
    # Подробнее http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#keepalive_timeout
    #tcp_nopush     on;

    # Директива задаёт размер буфера для чтения заголовка запроса клиента
    #client_header_buffer_size    1k;

    # Директива задаёт максимальное число и размер буферов для чтения большого заголовка запроса клиента
    #large_client_header_buffers  4 4k;

    # Модуль позволяет описывать группы серверов, которые могут использоваться
    # в директивах proxy_pass и fastcgi_pass.
    upstream backend {
        # Директива задаёт имя и параметры сервера. Обратите внимание, мы будем
        # использовать имя "backend" в директиве proxy_pass
        server 127.0.0.1:88;
    }

    server {

        # Слушать 80 порт
        listen       80;

        # Использовать следующие хосты
        server_name  pyha.ru www.pyha.ru;

        # Кодировка
        #charset koi8-r;

        # Лог доступа для конкретного виртуального хоста
        #access_log  logs/host.access.log  main;

        # Максимальный размер тела запроса клиента
        client_max_body_size 101M;

                # Разруливаем статику и динамку, смотрите описание ниже в этой статье!
                location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
                        root /home/pyha/pyha.ru;
                }

                location ~ /\.ht {
                        deny  all;
                }

                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;
                }

        # Адрес страницы 404-ой ошибки, далее все ошибки по аналогии
        #error_page  404              /404.html;

        # Аналогично 404, только при этом назначается псевдоним 50x.html для всех
        # 50x-тых ошибок и далее перенаправляется все на "root"
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            # корневая директория
            root   /usr/local/www/nginx-dist;
        }
    }
}
 

После конфигурации необходимо перезагрузить Nginx

/usr/local/etc/rc.d/nginx restart

alt

 

С помощью этих правил разруливаем запросы на отдачу статику и динамического контента


# Следующие расширения файлов (jpg, jpeg, gif, png, ico, css, bmp, swf и js) отдаются напрямую, без участия Apache.
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
    root /home/pyha/pyha.ru;
}

# htaccess и htpasswd не отдаем
location ~ /\.ht {
       deny  all;
}

# Все остальное разруливает бекенд (Apache)
location / {

        # Адрес бекенда. Параметры бекенда перечислили в директиве "upstream" (см. выше в статье)
        proxy_pass http://backend/;

        # Заголовок Host
        proxy_set_header Host $host;

        # Заголовок X-Real-IP
        proxy_set_header X-Real-IP $remote_addr;

        # Заголовок X-Forwarded-For
        proxy_set_header X-Forwarded-For $remote_addr;

        # Директива задаёт таймаут для соединения с проксированным сервером, сек
        proxy_connect_timeout 120;

        # Директива задаёт таймаут при передаче запроса проксированному серверу, сек
        proxy_send_timeout    120;

        # Директива задаёт таймаут при чтении ответа проксированного сервера, сек
        proxy_read_timeout    180;
}

Настройка Apache 

Редактируем файл /etc/httpd/conf/httpd.conf 

# Меняем порт с 80 на 88

Listen 88

Тоже самое делаем и в httpd-vhosts.conf для ваших хостов.

Ключевые слова: nginx
 (голосов: 1)
- 3 Просмотров: 2931
 

Root - 5 октября 2009 22:22

 
Спасибочки, очень благодарен!
[ICQ: --] Коментариев: 0  
 

Root - 6 октября 2009 15:19

 
И придратся не к чему, а я так люблю покритиковать...
[ICQ: --] Коментариев: 0  
 

Root - 10 октября 2009 14:06

 
Огромный сенкс, очень полезная вещь
[ICQ: --] Коментариев: 0  

Информация

Комментировать статьи на нашем сайте возможно только в течении 180 дней со дня публикации.