У меня есть небольшой VPS Ubuntu 16.04, на котором запущен nginx / php-fpm для запуска сайта Wordpress и запущен SMTP-сервер через Postfix / Saslauthd. Мой почтовый сервер отлично работает при отправке и получении почты, и у меня Wordpress настроен на использование SMTP вместо php mail () через плагин Postman, и это отлично работает.
Однако при попытке отправить контактную форму электронной почты через Wordpress я продолжаю получать ошибку 405 Not Allowed. Я попробовал несколько разных плагинов для контактных форм (Pirate Forms, Contact Email Form) и все равно получил тот же результат. Я также отключил Postman, чтобы заставить Wordpress использовать php mail (), но все равно получил ошибку 405.
Журналы отладки Nginx Вот Конфигурация Nginx Вот.
РЕДАКТИРОВАТЬ: URL-адрес, на который я пытаюсь отправить сообщение, https://example.com/contact/
Журнал доступа Nginx показывает это:
xxx.xxx.xxx.xx - - [09/Oct/2016:20:10:07 -0400] "GET /favicon.ico HTTP/2.0" 200 524 "https://example.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"
xxx.xxx.xxx.xx - - [09/Oct/2016:20:10:08 -0400] "GET /contact/ HTTP/2.0" 200 6090 "https://example.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"
xxx.xxx.xxx.xx - - [09/Oct/2016:20:10:09 -0400] "GET /favicon.ico HTTP/2.0" 200 524 "https://example.com/contact/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"
xxx.xxx.xxx.xx - - [09/Oct/2016:20:10:22 -0400] "POST /contact/ HTTP/2.0" 405 626 "https://example.com/contact/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"
xxx.xxx.xxx.xx - - [09/Oct/2016:20:10:22 -0400] "GET /favicon.ico HTTP/2.0" 200 524 "https://example.com/contact/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36"
Ничего не появляется в error.log.
Вы получаете ошибку 405, потому что вы сначала передаете все запросы в memcached, но он может обрабатывать только запросы GET (и HEAD). Следовательно, этот восходящий поток возвращает 405 Метод запрещен. Вам нужно с этим справиться, но в настоящий момент вы игнорируете это. Я думаю, что самый простой способ сделать это - добавить 405 в список ошибок, которые вы обрабатываете в error_page
.