Home »

Настройка http/2 для веб сервера на связке nginx + httpd


DarkAshio
Сообщения: 6
Topic starter
(@darkashio)
Младший сисадмин
Присоединился: 11 месяцев назад

Добрый день.

 

Подскажите, пожалуйста, как правильно настроить конфиги httpd и nginx (Обратный прокси сервер) для обеспечения протокола http/2 для Centos 7?

Я малоопытен в таком вопросе, т.к в основном настраивал только апач для работы сайта.

Техподдержка хостинга не поможет (а если и поможет, то за кругленькую сумму, тк у нас VPS) 

На всякий случай:

апач работает на 8080 и 443 порту. (версия 2.4.48, mod_ssl и mod_http2 я поставил, ssl сертификаты от let's Encrypt).

nginx на 80 и отдает всю статику (соответственно все передаваемые картинки и css, js передаются по http 1.1 ). 

На что нужно обратить внимание, чтобы обеспечить работу nginx по http/2 протоколу?

Ответить
Метки темы
9 Ответов
Zerox
Сообщения: 762
Admin
(@zerox)
Prominent Member
Присоединился: 9 лет назад

Достаточно в конфиге виртуального хоста nginx добавить одну фразу http2:

listen 443 http2 ssl;

Этого достаточно, чтобы заработал протокол http2.

Ответить
8 Ответы
DarkAshio
(@darkashio)
Присоединился: 11 месяцев назад

Младший сисадмин
Сообщения: 6

@zerox Да, но у меня апач на 443, подобная конструкция приводит к отвалу nginx

Вот конфиг виртуального хоста

 

Спойлер
Конфиг виртуального хоста сайта
server {
	listen 80;    
	server_name example.ru www.example.ru;
	return 301  https://$host$request_uri; 
	gzip on;
	gzip_disable "msie6";
	gzip_min_length 1000;
	gzip_vary on;
	gzip_proxied expired no-cache no-store private auth;
	gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

# Ведём журнал доступа:
	access_log /var/www/html/example/logs/nginx/access.log;

# Разделяем статику и динамку, статику храним в кэше 10 дней:
	location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ {
	root /var/www/html/example/public_html/;
	expires 1y;
}

	location / {
		proxy_pass          http://127.0.0.1:8080/; 
		proxy_redirect     off;
		log_not_found      off;
		proxy_set_header   X-Real-IP $remote_addr;
		proxy_set_header   Host $http_host;
		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_connect_timeout    120;
		proxy_send_timeout    120;
		proxy_read_timeout    180;
	}
}
Ответить
Zerox
Admin
(@zerox)
Присоединился: 9 лет назад

Prominent Member
Сообщения: 762

@darkashio насколько я понимаю, http2 не будет работать без ssl. У вас какая-то странная конфигурация. Обычно делается так. Nginx работает по https c http2, отдает статику и проксирует запросы на apache, который может работать и по 80-му порту, но при желании и его можно на 443 и https перевести, но чаще всего это не требуется.

Ответить
DarkAshio
(@darkashio)
Присоединился: 11 месяцев назад

Младший сисадмин
Сообщения: 6

@zerox Я не спорю, я впервые настраивал такую связку

Ответить
DarkAshio
(@darkashio)
Присоединился: 11 месяцев назад

Младший сисадмин
Сообщения: 6

@zerox Мне бы понять, как это делать правильно

Ответить
DarkAshio
(@darkashio)
Присоединился: 11 месяцев назад

Младший сисадмин
Сообщения: 6

@zerox
Есть ли у Вас пример подключения http/2 к nginx + apache? Какая-нибудь рабочая инструкция? Я буду Вам очень признателен за помощь.

Ответить
Zerox
Admin
(@zerox)
Присоединился: 9 лет назад

Prominent Member
Сообщения: 762

@darkashio такой инструкции у меня нет. Для чего вам вообще nginx и apache одновременно? Если не разбираетесь в настройке этой связки, оставьте отдельно либо nginx, либо apache. Большой необходимости использовать их одновременно обычно нет.

Ответить
DarkAshio
(@darkashio)
Присоединился: 11 месяцев назад

Младший сисадмин
Сообщения: 6

@zerox Мне нужна конкретно связка nginx и апач.

Объясняю: для прироста производительности рекомендовали использовать nginx для быстрой выдачи всех картинок, js, css и других ресурсов, относящихся к статическим ресурсам. Апач берет на себя роль бекенд, работая с динамикой (то есть, со криптами php). Объясняли, что апачу проще работать со скриптами. А nginx быстрее отображает картинки и тому подобное.(Тем более, что картинок у нас на сайте уйма.)  Опытным путем установлено, что такая связка дает 25-30% производительности веб-серверу. Я проверял.

Почему мне это нужно: Я цепляюсь за любую возможность ускорить работу сайта. 
Тем не менее, спасибо, что проконсультировали в этом вопросе.

Ответить
Zerox
Admin
(@zerox)
Присоединился: 9 лет назад

Prominent Member
Сообщения: 762

@darkashio если для вас важна производительность, то связка nginx + php-fpm будет еще быстрее, чем apache в бэкенде. То, что вы описали, должно работать так, что первые запросы принимает на себя nginx. Он должен работать по http2+https с tls сертификатом. И потом отправлять запросы на бэкенд в виде apache. Причём, чтобы это быстрее работало, передавать на apache надо по http, а не https.

Что-ты вы напутали и не до конца разобрались. В вашем конфиге nginx я вижу, что он отправляет запросы на бэкенд на порт 8080. Для чего тогда apache слушает 443 порт?

Ответить
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar