Apache + Nginx + mod_rpaf

1. Устанавливаем Apache

yum install httpd
chkconfig httpd on

– меняем в /etc/httpd/conf/httpd.conf Listen 80 на Listen 8080

– также меняем порт и у виртуальных хостов на 8080

service httpd start

2. Устанавливаем Nginx

yum install nginx
chkconfig nginx on

– редактируем файл /etc/nginx/nginx.conf ниже конфиг проксирования статики

user  nginx;                            # имя пользователя
worker_processes  auto;                 # кол-во процесов

events {
    worker_connections  2048;           # кол-во соединений
    multi_accept on;
}

http {
    default_type  application/octet-stream;
    include  /etc/nginx/mime.types;
    log_format  main  '$remote_addr - $remote_user [$time_local] $status '
                '"$request" $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "http_x_forwarded_for"';
                                    
    access_log  /var/log/nginx/access.log  main;
    include /etc/nginx/conf.d/*.conf;

    sendfile       on;
    tcp_nopush     on;
    tcp_nodelay    on;
    keepalive_timeout   45;
    reset_timedout_connection  on;
    types_hash_max_size 4096;
    server_names_hash_bucket_size 64;
    client_body_timeout 35;
    send_timeout        30;
    server_tokens off;
    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 45s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    server {
        listen      80;
        listen      [::]:80;
        server_name sitename.ru www.sitename.ru;
        return 301 https://sitename.ru$request_uri;
    }
                                    
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name sitename.ru www.sitename.ru;
        access_log  /var/log/nginx-sitename.ru-access.log  main;
                                    
        # Main location
        location / {
            proxy_pass         http://127.0.0.1:8080/;
            proxy_redirect     off;
                                    
            proxy_set_header   Host              $host;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   X-Real-IP         $remote_addr;
            proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
                                
            client_max_body_size       50m;
            client_body_buffer_size    128k;
                            
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
                                    
            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
                                    
        # Static files location
            location ~* ^.+\.(jpg|jpeg|gif|ico|css|tgz|gz|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
            root   /var/www/sitename.ru;
        }
    }


    server {
        listen      80;
        listen      [::]:80;
        server_name sitename2.ru www.sitename2.ru;
        access_log  /var/log/nginx-sitename2.ru-access.log  main;
                
        # Main location
        location / {
            proxy_pass         http://127.0.0.2:8080/;
            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;
                                                                        
            client_max_body_size       50m;
            client_body_buffer_size    128k;
                                                                                        
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
                                                                                                                
            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
                                                                                                                                                    
        # Static files location
           location ~* ^.+\.(jpg|jpeg|gif|ico|css|tgz|gz|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ {
           root   /var/www/sitename2.ru;
        }
    }

}
service nginx start

3. Устанавливаем mod_rpaf для корректного определения ip пользователей

Так как все запросы на httpd приходят от NGINX, они воспринимаются как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей.

Для решения проблемы будем использовать модуль mod_rpaf. Устанавливаем набор разработчика для apache:

yum install httpd-devel gcc unzip

Переходим в каталог /usr/local/src:

cd /usr/local/src

Скачиваем модуль:

wget https://github.com/gnif/mod_rpaf/archive/stable.zip

Распаковываем его:

unzip stable.zip

Переходим в распакованный каталог:

cd mod_rpaf-stable/

Собираем модуль и устанавливаем его:

make
make install
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.5.tar.gz
tar -zxvf mod_rpaf-0.5.tar.gz
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
make
make rpaf-2.0
make install-2.0

Создаем конфигурационный файл со следующим содержимым:

mcedit /etc/httpd/conf.d/mod_rpaf.conf

Вносим следующее, если несколько виртуальных сервером, перечислить через запятую

LoadModule              rpaf_module modules/mod_rpaf.so
RPAF_Enable             On
RPAF_ProxyIPs           127.0.0.1 127.0.0.2
RPAF_SetHostName        On
RPAF_SetHTTPS           On
RPAF_SetPort            On
RPAF_ForbidIfNotProxy   Off

Перезапускаем Apache

systemctl restart httpd

Micro
Author: Micro

///

Поделиться в социальных сетях
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии