Эта тема довольно избита, но на просторах интернета не так и просто найти короткий и четкий ответ на этот вопрос. Вот по этому я решил собрать все в виде небольшой инструкции.
Для начала разберемся в логике работы. Все очень просто: статические файлы отдает nginx, а динамикой занимается apache (см. схему)
Данный пример реализован на Ubuntu Server 10.04
Установка 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
Перезапускам apache и nginx:
/etc/init.d/apache2 restart
/etc/init.d/nginx restart
Для начала разберемся в логике работы. Все очень просто: статические файлы отдает nginx, а динамикой занимается apache (см. схему)
Данный пример реализован на 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