- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Сайт на vps, операционная система Debian 6.0 Настроен Content-Security-Policy.
Параметры ограничивающие длину заголовка вроде бы не установлены (смотрел nginx.conf и apache2.conf), поэтому по умолчанию длина заголовка равна 8190 bytes. Возникла необходимость увеличить это значение до 16380, так как лимит достигнут, и возникает ошибка 500 Internal Server Error.
Первым делом в nginx.conf добавил строки:
client_header_buffer_size 4k;
large_client_header_buffers 8 16k;
Перезагрузил сервер, но ошибка осталась.
Тогда в apache2.conf добавил строки:
LimitRequestLine 16380
LimitRequestFieldSize 16380
Перезагрузил сервер, но ошибка также осталась.
Может быть кто-нибудь сможет подсказать в чем может быть дело? Может быть еще какого-нибудь параметра не хватает? Спасибо!
Смотрите лог ошибок nginx или Apache (в зависимости от того, чью страницу ошибки видите).
На странице "500 Internal Server Error" указано, что ошибку выдает apache. Можно ли этому доверять?
В apache2.conf сменил LogLevel на debug. Затем перезагрузил сервер, воспроизвел ошибку. Однако в логе /var/log/apache2/error.log только записи [notice] и [info]. Т.e ничего критического не зафиксировано.
Тогда я решил в apache2.conf указать в LimitRequestLine и LimitRequestFieldSize значения в два раза меньше дефолтного, т.е. 4096 По идее после перезагрузки сервера, сайт не должен был даже запуститься и сразу выдать 500 ошибку, ведь заголовок Header set Content-Security-Policy практически в два раза больше нового значения.
Но сайт заработал. Получается apache вообще не реагирует на записи LimitRequestLine и LimitRequestFieldSize, однако реагирует на изменение уровня логирования, т.к. начал показывать записи уровня [debug]. Записи сделаны в глобальную область.
Директивы
LimitRequestLine
LimitRequestFieldSize
имеют отношение к заголовкам запроса, а не к заголовкам ответа.
Если я правильно понял, у вас проблема при установке длинного заголовка через mod_headers?
Судя по исходному коду httpd-2.4.28:
Макс длина строки в .htaccess - 8192 байт.
Вы можете обойти проблему, установив заголовок через httpd.conf, там максимальная длина строки - 16*1024*1024 байт.
Документация подтверждает эти цифры
https://httpd.apache.org/docs/2.4/configuring.html
Да, у меня проблема из-за длинного заголовка в <IfModule mod_headers.c> записанного в .htaccess
Для начала попробую разделить строку в .htaccess символом "\".
Если не получится, попробую установить заголовок через httpd.conf
Этот файл имеет такой же синтаксис, что и .htaccess? Достаточно просто добавить следующую запись?
<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src 'self' ..."
</IfModule>
Да, у меня проблема из-за длинного заголовка в <IfModule mod_headers.c> записанного в .htaccess
Для начала попробую разделить строку в .htaccess символом "\".
Если не получится, попробую установить заголовок через httpd.conf
Этот файл имеет такой же синтаксис, что и .htaccess? Достаточно просто добавить следующую запись?
<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src 'self' ..."
</IfModule>
Разделение строк символом "\" не поможет.
Синтаксис httpd.conf почти тот же.
Возможно, вам нужно не в самом httpd.conf добавить строку, а в конкретном VirtualHost (если используется).
Уж лучше передать в index.php этот заголовок. Проблем не будет.
Попробовал добавить заголовок в apache2.conf:
Header set Content-Security-Policy "default-src 'self' ..."
Заголовок передался без проблем. А вот когда я увеличил длину строки больше 8192 байт, то появилась ошибка. На этот раз ошибку 502 вызывал nginx, хотя в конфиге nginx были выставлены следующие параметры
client_header_buffer_size 4k;
large_client_header_buffers 8 16k;
Уровень логирования был crit, и ошибок в логе зафиксировано не было.
Нет, 502 ошибка это опять же апатч не ответил, а nginx передал, что апатч молчит.
На 502 ошибку в error_log nginx будет сообщение. Вы где-то не там смотрите или процесс nginx не может писать в нужный файл.
Попробуйте сделать в nginx
proxy_buffer_size 64k;
proxy_buffers 8 64k;
Попробовал добавить заголовок в apache2.conf:
Header set Content-Security-Policy "default-src 'self' ..."
Заголовок передался без проблем. А вот когда я увеличил длину строки больше 8192 байт, то появилась ошибка. На этот раз ошибку 502 вызывал nginx,
Смотрите лог апача, он или не ответил, или послал некорректный ответ. Предположу, что он просто не запустился после изменений в конфигурационном файле. Если актуально, проверьте apachectl -T
Учитывая ОС, предположу, что апач там все же 2.2. Думаю, что тс все же не собирал руками более новую версию, а поставил ту, что есть в репах.
А если апач 2.2, то согласно все той же документации, получается, что уже не только .htaccess ограничивается 8192 символами, но и сам конфигурационный файл апача - https://httpd.apache.org/docs/2.2/configuring.html . И соответственно от переноса директив из .htaccess в httpd.conf, ничего не меняется, ибо лимиты там одни. Думаю это и есть причина вашей 502-ой, перенесли строку из .htaccess-а в конфиг, и апач просто не запустился, ругаясь на эту директиву.
Вероятно, я что-то упускаю, но уточните, пожалуйста, почему просто не передавать этот заголовок через nginx, при помощи того же "add_header"? На первый взгляд, это самое простое и вменяемое решение в данном случае.