我有一台小型 Ubuntu 16.04 VPS,它运行 nginx/php-fpm 来运行 Wordpress 网站,并通过 Postfix/Saslauthd 运行 SMTP 服务器。我的邮件服务器在发送和接收邮件方面运行良好,并且我已通过 Postman 插件将 Wordpress 设置为使用 SMTP 而不是 php mail(),并且运行完美。
但是,当我尝试通过 Wordpress 提交电子邮件联系表单时,我不断收到 405 Not Allowed 错误。我尝试了几个不同的联系表单插件(Pirate Forms、Contact Email Form),但结果仍然相同。我还禁用了 Postman 以强制 Wordpress 使用 php mail(),但仍然收到 405。
编辑:我尝试发布的 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 中未收到任何内容。
答案1
您收到 405 错误是因为您将所有请求首先传递给 memcached,但它只能处理 GET(和 HEAD)请求。因此,此上游返回 405 方法不允许。您需要实际处理此问题,但目前您忽略了它。我认为最简单的方法是将 405 添加到您在 中处理的错误列表中error_page
。