Nginx + Ajax + Post = проблемы
На проекте необходимо передавать с десяток файлов, с помощью Ajax.
Установлена виртуальная машина BitrixVM, на которой крутиться проект.
Nginx не дает файлы передавать методом Post (Ajax), вываливается ошибка: «405 Not Allowed».
Nginx раздает статический контент. Суть проблемы в том, что nginx при раздаче статического контента не поддерживает запросы POST.
Пробывал сделать проброс на апач таким способом:
Существует несколько возможных причин такого поведения. Некоторые из них зависят от версии Nginx.
Если интересует именно причина проблемы, то было бы неплохо предоставить некоторую дополнительную информацию:
- версию Nginx (nginx -v);
- конфигурацию веб-сервера (файлы с расширением .conf из /etc/nginx);
- заголовки HTTP запроса и ответа (можно получить с помощью инструментов разработчика в Chrome или Firefox).
Если же требуется только решение, то достаточно доработать второй вариант — заменить бессмысленную в данном контексте директиву root на proxy_pass к соответствующему бекенду.
Да, меня интересует причина проблемы, чтобы в последствии больше не наступать на те же грабли.
Предоставляю доп. информацию:
nginx version: nginx/1.4.3
/ect/nginx/nginx.conf
user bitrix;worker_processes 8; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; worker_rlimit_nofile 10240; |
/etc/nginx/bx/conf/bitrix.conf
# Assign error handler include bx/conf/errors.conf; # Include im subscrider handlers # Add / to request for dav services ^(/extranet/docs|/docs|/workgroups|/company/profile|/bitrix/tools|/company/personal/user|/extranet/contacts/personal|/extranet/workgroups|/mobile/webdav) < # dav service processing ^(/extranet/docs|/docs|/workgroups|/company/profile|/bitrix/tools|/company/personal/user|/extranet/contacts/personal|/extranet/workgroups|/mobile/webdav).*/$ < # HTML cache location for calls without kernel ^(/bitrix/html_pages) < if (!-f $request_filename) < # php file processing \.php$ < # If session is not set and HTML cache is enabled, try cached file first # Dynamic pages /$ < # If session is not set and HTML cache is enabled, try cached file first # Deny cache access to anyone except for merged CSS files and JS files # Excange and Outlook # Deny external access to critical areas # Static content # Use nginx to return static content from s3 cloud storage ^/upload/bx_cloud_upload/(http[s]?)\.([^/:]+)\.(s3|s3-us-west-1|s3-eu-west-1|s3-ap-southeast-1|s3-ap-northeast-1)\.amazonaws\.com/(.+)$ < # Apache server status page # Nginx server status page /nginx-status < # Main location # Error page for static content * \.(css|js|gif|png|jpg|jpeg|ico)$) < # Bitrix setup script ^(/bitrixsetup\.php)$ |
Заголовки HTTP запроса и ответа
Remote Address:192.168.7.238:80 Request URL: http://192.168.7.238/upload.php Request Method:POST Status Code:405 Not Allowed Request Headersview source Accept:*/* Accept-Encoding:gzip,deflate,lzma Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Connection:keep-alive Content-Length:667516 Content-Type:multipart/form-data; boundary=—-WebKitFormBoundaryG9FIzWmdQAls1WVU Cookie:authautologin=R7ebDMB9t2SJ4PJSLeozpy0YsyyS1OCL; __utma=121056456.722613466.1412690277.1415281578.1415284425.55; __utmz=121056456.1412690277.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) Host:192.168.7.238 Origin: http://192.168.7.238 Referer: http://192.168.7.238/ User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36 OPR/25.0.1614.68 X-Requested-With:XMLHttpRequest Request Payload ——WebKitFormBoundaryG9FIzWmdQAls1WVU Content-Disposition: form-data; name=»myfile[]»; filename=»(1).png» Content-Type: image/png ——WebKitFormBoundaryG9FIzWmdQAls1WVU Источник При включении протокола spdy перестают работать Ajax запросы
Ajax запросы не работают, например нельзя поменять пароль себе. Проблему подтверждаю. Проверял еще на старых версиях nginx, как только там появилась поддержка spdy. Сейчас ничего не изменилось. Если включить spdy через перестают работать некоторые запросы к биллингу. Например, «настройки». Сделайте отдельный вирт.хост в nginx без поддержки spdy и пропускайте через него запросы к биллингу. Я сомневаюсь, что какое-либо другое решение смогут предложить на текущий момент разработчики.
т.е. у вас вполне спокойно будет работать конструкция
Источник LiveStreet CMSБесплатные расширения из каталогаВопросыПрямой эфирlifecom 21 сентября 2021, 21:53 cshome 21 сентября 2021, 13:08 rebrov 8 июля 2021, 16:28 lifecom 24 июня 2021, 11:01 Maxit 8 мая 2021, 23:16 Maxit 6 мая 2021, 21:44 sersar 5 апреля 2021, 18:22 lifecom 27 февраля 2021, 03:26 iVee 16 февраля 2021, 13:07 Doom74 5 февраля 2021, 09:03 Работа!Блоги
работа php-fpm и JQuery на LS 0.4.2 (проблема)Здравствуйте, прошу подсказки куда копать? кусок фрагмента кода. мои подозрения на то, что на сервере не проходит авторизация сесси пользователией для этих методов работы с jQuery «+data+» это как раз данные которые передает туда где появлется Hacking attemp! Источник Node.js+ajax+долгий sql-запрос. Почему данные не доходят до клиента?Приложение — генератор отчетов, по данным, полученным из MS SQL SERVER. а вот код ajax ф-и на клиенте: Сервер создан на основе модуля Express: Может это node (или кто-то другой) закрывает соединение с клиентом через 2 минуты? Может какие-то таймауты в ноде надо указать?
>может сериализация данных из mysql в сумме с запросом превышает таймаут. UPD: UPD2: К сожалению мне сложно вам подсказать, к слову даже не понимаю зачем нужен nginx когда nodejs и есть http-server (Ну может у вас одно там, другое там,в целом это никак не поможет решить вашу проблему). В случае sleep(2) и timeout: 5000 = success Источник |