Вы находитесь на странице: 1из 5

Установка nginx как front-end к apache в Debian / Ubuntu

Общий вид схемы front-end/back-end

В общем виде, http-соединение будет проделывать следующий путь:

HTTP Client ----> Front-End (nginx) ----> Back-End (apache)


----------- <---- ----------------- <---- -----------------
1.2.3.4:80 192.168.0.1:80 192.168.0.1:8080

В данном случае, front-end и back-end располагаются на одной машине. В общем же


случае, при необходимости они могут работать на разных машинах.

Установка и настройка Nginx

Установка Nginx

Установка Nginx тривиальна, начиная с Lenny (5.0). До этого, чтобы поставить nginx версии
0.6 и выше, необходимо было собирать пакет вручную.

$ sudo apt-get install nginx

Запускаем nginx:

$ sudo service nginx start

Набираем в браузере: "http://192.168.0.1" (IP той машины, где был установлен nginx).
Должно появиться приглашение nginx: "Welcome to nginx!".

Настройка проксирования в Nginx

Отключаем сайт по умолчанию:

$ sudo rm /etc/nginx/sites-enabled/default

Корректируем конфигурационный файл:

$ sudo vim /etc/nginx/nginx.conf

Должен иметь приблизительно следующий вид:

# пользователь, от которого запускается процесс


user www-data;
# кол-во рабочих процессов. Обычно равно кол-ву ядер на машине
worker_processes 2;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

access_log /var/log/nginx/access.log;

sendfile on;
tcp_nopush on;

keepalive_timeout 2;
tcp_nodelay on;

gzip on;
gzip_comp_level 3;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss
text/javascript;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

Останавливаем nginx:

$ sudo service nginx stop

Создаем файл конфигурации proxy.conf:

$ sudo vim /etc/nginx/proxy.conf

Должен иметь следующий вид:

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 10m;
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;

Настройка виртуального хоста в Nginx

Создаем файл виртуального хоста:

$ sudo vim /etc/nginx/sites-available/coffee

Файл следующего вида:


upstream backend {
# Адрес back-end'a
server 192.168.0.1:8080;
}

server {
listen 80;
server_name coffee.com www.coffee.com;

access_log /var/log/nginx/nginx_access.log;
error_log /var/log/nginx /nginx_error.log;

# Перенаправление на back-end
location / {
proxy_pass http://backend;
include /etc/nginx/proxy.conf;
}

# Статическиое наполнение отдает сам nginx


# back-end этим заниматься не должен
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /var/www/coffee/static/;
}
}

Включаем новый хост:

$ sudo ln -s /etc/nginx/sites-available/coffee /etc/nginx/sites-enabled/coffee

Установка и настройка Apache

Установка Apache

Установка проста:

$ sudo apt-get install apache2

Настройка Apache

Корректируем конфигурационный файл:

$ sudo vim /etc/apache2/apache2.conf

Необходимо найти и скорректировать следующие строки (при отсутствии добавить):

# Таймаут 90 секунд
Timeout 90

# Выключаем KeepAlive
KeepAlive Off

Перезагружаем apache:

$ sudo service apache2 restart


Проверяем корректную настройку apache, открываю в браузере: "http://192.168.0.1" (IP
той машины, где был установлен apache). Должно появиться "It works!".

Отключаем хост по умолчанию:

$ sudo a2dissite 000-default

Настраиваем apache на работу с портом 8080, а не 80:

$ sudo vim /etc/apache2/ports.conf

Должен иметь вид:

NameVirtualHost *:8080
Listen 8080

Перезагружаем apache, nginx:

$ sudo service apache2 restart


$ sudo service nginx restart

Настройка mod_rpaf

Теперь, если посмотреть в логи apache, то там все запросы будут идти с адреса front-end'a.
Чтобы это исправить, необходимо установить модуль mod_rpaf:

$ sudo aptitude install libapache2-mod-rpaf

И настроить его:

$ sudo vim /etc/apache2/mods-enabled/rpaf.conf

Должен выглядеть примерно так:

<IfModule mod_rpaf.c>
# Включаем модуль
RPAFenable On

# Приводит в порядок X-Host


RPAFsethostname On

# Адрес фронтенда (nginx)


RPAFproxy_ips 127.0.0.1 192.168.0.1
</IfModule>

Перезагружаем apache:

$ sudo service apache2 restart

Настройка виртуального хоста в Apache

Создаем файл виртуального хоста:


$ sudo vim /etc/apache2/sites-available/coffee

Приблизительно следующего содержания:

<VirtualHost *:8080>
# Осн. настройки домена
ServerAdmin admin@coffee.com
ServerName coffee.com
ServerAlias www.coffee.com

<Directory /var/www/coffee/>
Order deny,allow
Allow from all
</Directory>

LogLevel warn
ErrorLog /var/log/apache2/apache_error.log
CustomLog /var/log/apache2/apache_access.log combined

# Остальные настройки
# ...
</VirtualHost>

Включаем новый хост:

$ sudo ln –s /etc/apache2/sites-available/coffee /etc/apache2/sites-enabled/coffee


$ sudo service apache2 restart

Вам также может понравиться