Nginx и Apache в одной связке

Тема разжевана, но все же, в первую очередь для себя, как памятку сделаю. А может и еще кому пригодится.
На сервере Nginx будет обрабатывать только статичные запросы, а динамические запросы будет проксировать к Apache.
Проксирование будет происходить на определенный порт Apache, который будет доступен только локально. Т. е. извне попасть на этот порт будет нельзя.

Настройка Apache

sudo nano /etc/apache2/sites-available/000-default.conf

Конфиг может выглядеть так:

<VirtualHost 127.0.0.1:8080>
	ServerAlias mysite.ru
	DocumentRoot /var/www/mysite.ru
	<Directory /var/www/mysite.ru/>
		DirectoryIndex index.php
		Options FollowSymLinks
		AllowOverride None
		RewriteEngine on
		RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
		RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

		# Если запрашиваемая в URL директория или файл существуют обращаемся к ним напрямую
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d
		# Если нет - перенаправляем запрос на index.php
		RewriteRule . index.php
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Стоит обратить как указан VirtualHost:

VirtualHost 127.0.0.1:8080

Порт, соответственно, подберите сами.

Теперь включим порт:

sudo nano /etc/apache2/ports.conf

Пишем в данный файл:

Listen 127.0.0.1:8080

Сохраняем изменения и перезапустим Апач:

sudo service apache2 restart

Настройка Nginx

Создадим для нашего сайта новый конфиг

nano /etc/nginx/sites-available/mysite.ru

И вставляем в этот файл следующий кусок:

server {
	listen 80;
	listen [::]:80;

	root /var/www/mysite.ru;
	index index.php index.html index.htm;

	server_name mysite.ru;
	location / {
	    # Далее проксируем динамику на Апач
	    proxy_pass http://127.0.0.1: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;
	}
	# Статику обрабатывает Нджинкс самостоятельно
	location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
	    expires max;
	    root /var/www/mysite.ru;
	}
	# Запрещаем
	location ~ /\.(ht|svn|git) {
	    deny all;
	}
}

Сохраним изменения и рестартанем nginx:

sudo service nginx restart

А теперь в браузере набираем mysite.ru и проверяем работоспособность данной схемы.

Поделиться
Отправить
Популярное