[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работает PHP на *.html страницах
deeper
Столкнулся со следующей проблемой. Есть статичный html сайт. На нём мне нужно обрабатывать PHP код в HTML страницах. Я настроил это через .htaccess, добавив строчку "AddHandler application/x-httpd-php .html". Всё вроде бы работает, но только на страницах, где не указанно расширение *.html (например главная страница site.ru/ или подкаталоги site.ru/category). Если же напрямую указать site.ru/index.html, то инструкция из .htaccess не работает.
Я написал в саппорт, на что получил ответ: "Скорей всего у вас html обрабатываются через nginx. Проверьте настройки своего веб сервера, и если это так - то отключите обработку html в nginx."
Подскажите, пожалуйста, прав ли саппорт и если да, то как это сделать?
Сервер Debian 8/ngnix/apache2.
Zzepish
а поменять расширение в php?
Ron
deeper, чего за хостинг?
VELIK505
Прав.
/etc/nginx/nginx.conf
либо там будет строчка:
text/html html htm shtml;
Либо в /etc/nginx/mime.types
Ron
VELIK505, так это получается и nginx и apache натравлен на один document root? Зачем это нужно?
bestxp
Цитата (Ron @ 24.12.2015 - 09:23)
VELIK505, так это получается и nginx и apache натравлен на один document root? Зачем это нужно?

Все верно, apache отдает динамику а nginx статику, так как html это статика то и отдавать будет ее nginx
sergeiss
Цитата (deeper @ 24.12.2015 - 00:17)
Есть статичный html сайт. На нём мне нужно обрабатывать PHP код в HTML страницах.

Это уже не статичный сайт получается, ежели там идет обработка кода ПХП.

Цитата (Zzepish @ 24.12.2015 - 02:31)
а поменять расширение в php?

У меня тот же вопрос возник при прочтении вопроса.


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
deeper
Всем спасибо. VELIK505 оказался прав, собака зарылась в в /etc/nginx/mime.types.
Ron
Цитата (bestxp @ 24.12.2015 - 11:16)

Все верно, apache отдает динамику а nginx статику, так как html это статика то и отдавать будет ее nginx

А смысл какой?

Цитата (sergeiss @ 24.12.2015 - 11:31)
У меня тот же вопрос возник при прочтении вопроса.

Так видимо проиндексирвовано на html. Чтобы не слетели позиции в поисковиках.
VELIK505
Цитата (Ron @ 24.12.2015 - 17:19)
Цитата (bestxp @ 24.12.2015 - 11:16)

Все верно, apache отдает динамику а nginx статику, так как html это статика то и отдавать будет ее nginx

А смысл какой?

чтобы разгрузить apache от левой нагрузки. nginx более легкий и гибкий веб-сервер чем apache.
И вообще в последние время уже apache уходит в прошлое. От него отказываются. Используют nginx + php-fpm. Сам не так давно перешёл. Эффект потрясающий.
Ron
Цитата (VELIK505 @ 25.12.2015 - 06:19)
Используют nginx + php-fpm. Сам не так давно перешёл. Эффект потрясающий.

Спасибо, надо будет попробовать. А в цифрах какой прирост?

Меня последний апач взбесил конкретно. Чего-то они там перемудрили по-моему. Взяли allow, deny синтаксис сменили. Я изматерился весь, пока понял в чем дело.

inpost
Ron
Дело же не в апаче или nginx, а в распределении обязанностей между статикой и динамикой. Бывает и Nginx+Apache, бывает даже Apache+Apache smile.gif Суть одна, первая прослойка отдаёт статику, если запрос на статику идёт (jpg, css, js), а если запрос к ".php", то уже переправляет запрос дальше. Сервер на грани перестал перегружаться сделав несколько действий включая перевод на nginx+php-fpm, но лично я в цифрах не подскажу. Может 10%, может 30%.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
VELIK505
Цитата (Ron @ 25.12.2015 - 04:51)
Цитата (VELIK505 @ 25.12.2015 - 06:19)
Используют nginx + php-fpm. Сам не так давно перешёл. Эффект потрясающий.

Спасибо, надо будет попробовать. А в цифрах какой прирост?

Меня последний апач взбесил конкретно. Чего-то они там перемудрили по-моему. Взяли allow, deny синтаксис сменили. Я изматерился весь, пока понял в чем дело.

Извиняюсь не видел вопроса.

Ну не только в цифрах. Ну первое это конечно в цифрах это всё конечно сугобо индивидуально для каждого проекта (его реализации) но в целом так и есть что php как модуль apache хуже чем php-fpm+nginx раз в 5.
У меня была ситуация что сайт php+mysql и пришло время что у него онлайн стал под 6к. и все 8 ядер были загружены проца.

вот скрин нашёл ради тебя специально:
user posted image
в первую очередь конечно решать задачу нужно было быстро так как сайт принимал по 70к уников в сутки первое что пришло в голову вынести mysql на удалённый сервер. задача заняла минут 20.
Но сервер я разргрузил лишь на 15%
в итоге мне Inpost сказал чтобы я выкинул апач в мусорку и собрал php-fpm недолго подумав(так как больше вариантов у меня не было) я пересобрал пых настроил все реврайты и тд в nginx ребутнул нгинкс и всё получилось без простоя малейшего сайта!
и что я вижу что нагрузка упала на 70%....

После этого я понял что apache это полнейшей днище а когда через 2дня разобрался с php-fpm полностью как кешировать/чем кешировать как повешать его на сокеты как руководить его процессами и тд и тп так вообще кайф полный. Доволен до сих пор как слон.
Что такое apache и .htaccess я вообще забыл про это старообрядство 2000ых годов...
По мимо уменьшения расхода ресурсов, php-fpm он работает как fcgi что примерно на 20% прирост в скорости выполнения скриптов нежели при php как модуль апача при этом расходуя в разы меньше ресусурсов сервера!

По мимо этого как бы не совсем могу обьяснить но в целом и головняков меньше стало и код быстрее и лучше и тд и тп. короче всё кардинально меняеться.

По мимо этого вот не поверишь сразу т.к. разобрался в nginx тут же понял что такое node.js так как всё по сути в современном вебе строиться через nginx туже ноду можно встречать нгинксом балансировать порты проксировать и тд и тп. вплоть до того что nginx своим limit_req_module отбивает спокойно маленький/средний ддос чего не может сделать апач. знаний гора открывается. ну и в самом fpm почти нет утечки памяти так как php-fpm-master запускаеться каждые 3-5 сек и дочерние процессы которые уже убиты самим fpm-ом он за ними весь мусор заметает (озу/процессорное время). По мимо этого если сервер многоядерный то nginx по воркерам спокойно принимает на себя часть от fcgi что даёт более быстрый доступ к php скриптам и разбалансированную нагрузку на ядра проца сервера а апач может 2 ядра грузануть при том же ддосе от php а остальные ядра будут отдыхать а сайт твой быть в ауте. php-fpm+nginx устоичив к ддосу и нагрузкам. тот же php как модуль апача я могу с лоика положить, на fpm это невозможно практически (если ты не с 60 компов одновременно запускаешь коечно лоик) благодоря limit_req_module который ты можешь выставить только на location ~ \.php$ {
limit_req zone=one burst= дабы чтобы обычный юзер который зашёл скажем допустим на страницу где 200 аватаров не рубился ему доступ к 80ому порту. По мимо этого в апаче вечно дыры загугли дыры апача там почти в каждой версии дыра через которую можно положить весь сервак наглухо в свап загнать что только холодная перезагрузка поможет. По мимо этого даже при сильном ддосе апач наглухо падает и твой сайт не пахает всё 502 словил apache при сильном ддосе php-fpm+nginx ты можешь долгое время поддерживать сайт путём того что поставив приоритет nginx worker_priority -2 даже можно до -20 выставлять nginx может упасть а пых будет работать сайт будет работать и даже отдавать статику но с задержкой, а апач в таком случае уйдёт в полный аут и как я уже говорил загонит в свап сервак, а nginx нет так как ты можешь на лету обрубить worker_connections.

+ ты можешь через тот же round-robin очень быстро маштабироваться(балансироваться) в случае чего так же докупаешь сервак там подымаешь nginx и php-fpm и делаешь просто реврайт по tpc через nginx на php скрипты того сервака и через round-robin задаёшь 15% сюда принимать на этот сервак (т.е. в случае маштабирования не какие ни скрипты и тд и тп переносить не надо никуда!) (я просто сделал так сложил в tmpfs их реврайтами (асинхронно) и с другого сервака просто получаю что мне нужно без всяких переносов и прочей ерести. В итоге раунробин встречает нагрузку если тут под пик почти то нагрузка ложиться на другой сервак независимо от того где лежат скрипты! С апачем пытался балансировать php между серверами (может и есть решение) но так ничего и не получилось.

Но с round-robin я сделал коряво в идеале это делаеться так серваки понятно соеденены ты закидываешь на 1 сервак сокеты и с обоих(3,4,5,6...) серваков делаешь подключение к этим сокетым а раунд робином чекаешь сокетмакскон если привышает скоко ты ему задал перекидываешь на другой. Как то примерно так но я ещё не дорос до этого пока что :( Но суть понял что можно даже ничего не устанавливая на другой сервер просто его ресурсы подкачивать.

Ты становишься независимым а при php как модуль апача+nginx на статику старьё даём апачу 80 порт а nginx 81 с одного на другой порт проксируем вроде так делалось по старинке это просто тупо костыль вонючий. забив 1 порт падает всё. тут такого нет 80 порт(который nginx сам же наглухо защищает через limit_req_module) nginx и пых по сокету и всё! а раньше всё это работало через кип алив таймаут что есть издержка так как одно ждало ответа друг от дружки щас нет вообще вырубил кип алив таймаут нафиг так как nginx не ждёт от php ответа и пых от него всё щас независимо! Ну тоесть раньше ктонить находиться на странице где исполняется даже неоптимизированный php скрипт и есть статика то в этот момент нагружался по мимо апача и nginx так как ждал ответа и у другого юзера который вообще на другой странице могло подлагивать т.к. нагрузился nginx ожидая ответа от апача сейчас такой фигни нет и быть не может максимум что может быть просто фпм мастер обрубит скрипт но другие не пострадают клиенты!

nginx+apache - просто придумали чтобы старпёры которые не хотят убирать апаче что есть уже костыль чистой воды (хак можно сказать). По мимо этого даже используя веб сокеты такую конструкцию:
ready(function(){
window.socket = io('http://mysite.com:3000/', {reconnection: true});;

window.socket.on

ты можешь спокойно защитить через тот же nginx расходуя меньше ресурсов сервера нежели при файрволе(ну файрвол уже накрайняк подключиться)
apache уже по сути никто не поддерживает. его даже isp system не поддерживают уже давно раньше их же панель от апача работала токо а щас нет. Уже в isp5 всё на fcgi. Думаю через годик все забут вообще что такое или кто такой apache. В целом ты думаю понял почему нельзя php как модуль apache использовать. Придёт время будет более менее проект попадёшь в задницу (как попал я), а если бы не использовал apache то всё решилось бы за 1 минуту.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.