nginx / php-fpm – 405错误提交电子邮件联系表单

我有一个小型的Ubuntu 16.04 VPS,运行nginx / php-fpm来运行一个Wordpress站点,并通过Postfix / Saslauthd运行一个SMTP服务器。 我的邮件服务器在发送和接收邮件方面工作得很好,而且我通过Postman插件设置了使用SMTP代替php邮件()的Wordpress,并且完美地工作。

但是,当试图通过Wordpress提交电子邮件联系表单时,我不断收到405不允许的错误。 我尝试了几个不同的联系表单插件(海盗表格,联系人电子邮件表格),仍然得到了相同的结果。 我也禁用邮递员强制Wordpress使用PHP邮件(),但仍然得到了405。

Nginx的debugging日志在这里 Nginx的configuration。

编辑:我想要发布到的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" 

没有得到任何错误.log。

你得到了405错误,因为你将所有请求首先传递给memcached,但它只能处理GET(和HEAD)请求。 因此,该上游返回405方法不允许。 你需要实际处理这个,但是现在你忽略了它。 我认为最简单的方法是将405添加到您在error_page处理的错误列表中。