Обсуждаемые примеры – это всего лишь примеры и для перевода в продакшн требуют глубокой доработки, но как база для понимания вполне подойдет.
Схема
Nginx будет у нас стоять как front-end и отдавать статику, так как с ней он справляется намного быстрее, нежели Apache.
Динамический контент у нас будет генерировать Apache, и отдавать его Nginx, который в свою очередь будет отдавать его клиенту.
Установка серверов.
Устанавливаем apache2 со всеми необходимыми модулями. Предполагается что вы будете использовать php5 и mysql.
$ sudo su $ apt-get install apache2 php5 libapache2-mod-php5 mysql-server mysql-client php5-mysql
Теперь устнавливаем nginx.
$ apt-get install nginx
Весь необходимый софт у нас установлен.
Настройка Nginx.
Создаем новый виртуальный хост. Выполняем команды ниже, вписываем туда желаемое имя сайта.
$ touch /etc/nginx/sites-available/SITE_NAME $ ln -s /etc/nginx/sites-available/SITE_NAME /etc/nginx/sites-enabled/SITE_NAME
Теперь открываем в только что созданный файл
$ gedit /etc/nginx/sites-available/SITE_NAME
и пишем там следующие настройки
server { listen SITE_NAME:80; # ip вашего сервера и порт server_name SITE_NAME www.SITE_NAME; # Имя вашего домена с www и без location / { proxy_pass http://SITE_NAME:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|txt|wav|mp3|js)$ { # Обрабатываемые типы файлов root ПУТЬ_К_КОНЕВОМУ_КАТАЛОГУ # Путь к корневому каталогу вашего сайта } }
Здесь мы видим, что Nginx слушает 80 порт, и если запросили статику, то он сам её и отдает, а если нет, то он перенаправляет на порт 8080, на который мы сейчас настроим Apache.
Настройка apache.
Ну во первых начнем с того, если вы используете mod_rewrite и только что заново поставили сервер, то не забудьте
$ a2enmode rewrite
Меняем порты в ports.conf
$ gedit /etc/apache2/ports.conf
Меняем в открывшемся файлике строки
NameVirtualHost *:80 Listen 80
на
NameVirtualHost *:8080 Listen 8080
можем закрыть этот файл.
Редактируем уже имеющийся виртуальный хост.
$ gedit /etc/apache2/sites-available/default
В примере приведены минимальные настройки, вы можете сделать как вам угодно.
<VirtualHost *:8080> DocumentRoot ПУТЬ_К_КОРНЕВОМУ_КАТАЛОГУ </VirtualHost>
Теперь перезагружаем сервера
$ service apache2 restart $ service nginx restart
Все, минимальная настройка завершена. В дальнейшем можно поднять несколько виртуальных хостов, по мануалу в статье Vhost для apache2+nginx в одно нажатие .
Автор статьи pharrell