Открыть список
Как стать автором
Обновить

Делаем nginx как front-end к apache

Разработка веб-сайтов
Из песочницы
Эта тема довольно избита, но на просторах интернета не так и просто найти короткий и четкий ответ на этот вопрос. Вот по этому я решил собрать все в виде небольшой инструкции.

Для начала разберемся в логике работы. Все очень просто: статические файлы отдает nginx, а динамикой занимается apache (см. схему)

image

Данный пример реализован на Ubuntu Server 10.04

Шаг первый: установка Apache, PHP, MySQL и nginx


Установка Apache
apt-get install apache2
[+mod_rewrite]
a2enmod rewrite

Установка PHP
apt-get install php5-cli

Установка MySQL
apt-get install mysql-server
apt-get install mysql-client-core-5.1
apt-get install php5-mysql

Установить nginx
apt-get install nginx
Конфиги -> /etc/nginx

Шаг второй

Вешаем apache на порт 8080 (или на другой, кроме 80)
Вносим изменения в конфигурацию апача:
/etc/apache2/ports.conf
NameVirtualHost *:8080
Listen 8080
Если есть виртуальные хосты, то их тоже нужно повесить на порт 8080

Шаг третий

Настраиваем nginx
Создаем файл конфигурации в директории: /etc/nginx/sites-available
server {
listen *:80; ## listen for ipv4
server_name ВАШ_ДОМЕН;
access_log /var/log/nginx/access.log;
# Перенаправление на back-end
location / {
proxy_pass ВАШ_ДОМЕН:8080/;
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;
}
# Статическиое наполнение отдает сам nginx
# back-end этим заниматься не должен
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
root ПУТЬ_ДО_КОРНЕВОГО_КАТАЛОГА_САЙТА;
}
}

Шаг четвертый

Перезапускам apache и nginx:
/etc/init.d/apache2 restart
/etc/init.d/nginx restart
Теги:frontendbackendnginxapachephp
Хабы: Разработка веб-сайтов
Всего голосов 84: ↑43 и ↓41 +2
Просмотры143.7K

Похожие публикации

Лучшие публикации за сутки