域更改后,使用Nginx上载进度模块上传文件时出现422错误

时间:2010-11-20 19:34:57

标签: http nginx

我已经在各种Ubuntu 8.04服务器上运行了几个月的Nginx上传进度模块,但是在我的一台服务器上,我尝试上传的每个文件都有422个错误(所有文件都在其他服务器上运行)。我的任何日志中都没有告诉我任何内容。

这是nginx给我的回复:“{”state“:”error“,”status“:422}”

服务器配置与其他工作服务器相同。

但这里是非常奇怪的部分:这只发生在我更改了服务器上的域名时(我更改了主机名,主机文件,后缀配置,nginx站点配置和部分Rails)应用程序所有使用新域,重新启动机器等。)我通过整个机器,并没有找到任何旧域名的痕迹。一旦我将域名更改回旧域名,文件上传就会重新开始。

有谁知道如何解决这里发生的事情?我完全难过了。

编辑: 我使用--with-debug重新编译了nginx,这里有一些来自我的日志的调试信息,这些信息似乎与此相关。

2010/11/20 11:55:53 [debug] 8652#0: *13 test location: "upload_progress"
2010/11/20 11:55:53 [debug] 8652#0: *13 using configuration "/upload_progress"
2010/11/20 11:55:53 [debug] 8652#0: *13 http cl:-1 max:10485760
2010/11/20 11:55:53 [debug] 8652#0: *13 generic phase: 2
2010/11/20 11:55:53 [debug] 8652#0: *13 generic phase: 3
2010/11/20 11:55:53 [debug] 8652#0: *13 post rewrite phase: 4
2010/11/20 11:55:53 [debug] 8652#0: *13 generic phase: 5
2010/11/20 11:55:53 [debug] 8652#0: *13 generic phase: 6
2010/11/20 11:55:53 [debug] 8652#0: *13 access phase: 7
2010/11/20 11:55:53 [debug] 8652#0: *13 access phase: 8
2010/11/20 11:55:53 [debug] 8652#0: *13 post access phase: 9
2010/11/20 11:55:53 [debug] 8652#0: *13 http set discard body
2010/11/20 11:55:53 [debug] 8652#0: *13 upload-progress: get_tracking_id
2010/11/20 11:55:53 [debug] 8652#0: *13 malloc: 080E7CA0:8
2010/11/20 11:55:53 [debug] 8652#0: *13 upload-progress: get_tracking_id found header: b3fec
2010/11/20 11:55:53 [debug] 8652#0: *13 reportuploads handler found id: b3fec
2010/11/20 11:55:53 [debug] 8652#0: *13 upload-progress: find_node b3fec
2010/11/20 11:55:53 [debug] 8652#0: *13 upload-progress: found node
2010/11/20 11:55:53 [debug] 8652#0: *13 reportuploads found node: b3fec (rest: 0, length: 168849, done: 1, err_status: 422)
2010/11/20 11:55:53 [debug] 8652#0: *13 http script copy: "{ "state" : "error", "status" : "
2010/11/20 11:55:53 [debug] 8652#0: *13 http script var: "422"
2010/11/20 11:55:53 [debug] 8652#0: *13 http script copy: " }
"
2010/11/20 11:55:53 [debug] 8652#0: *13 upload progress: state=1, err_status=422, remaining=168849, length=168849
2010/11/20 11:55:53 [debug] 8652#0: *13 uploadprogress error-tracker error: 0
2010/11/20 11:55:53 [debug] 8652#0: *13 HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Sat, 20 Nov 2010 19:55:53 GMT
Content-Type: application/json
Content-Length: 39
Connection: keep-alive
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: no-cache

2010/11/20 11:55:53 [debug] 8652#0: *13 write new buf t:1 f:0 080DF1F0, pos 080DF1F0, size: 219 file: 0, size: 0
2010/11/20 11:55:53 [debug] 8652#0: *13 http write filter: l:0 f:0 s:219
2010/11/20 11:55:53 [debug] 8652#0: *13 http output filter "/upload_progress?"
2010/11/20 11:55:53 [debug] 8652#0: *13 copy filter: "/upload_progress?"
2010/11/20 11:55:53 [debug] 8652#0: *13 http postpone filter "/upload_progress?" BFEB0A78
2010/11/20 11:55:53 [debug] 8652#0: *13 write old buf t:1 f:0 080DF1F0, pos 080DF1F0, size: 219 file: 0, size: 0
2010/11/20 11:55:53 [debug] 8652#0: *13 write new buf t:1 f:0 080DF160, pos 080DF160, size: 39 file: 0, size: 0
2010/11/20 11:55:53 [debug] 8652#0: *13 http write filter: l:1 f:0 s:258
2010/11/20 11:55:53 [debug] 8652#0: *13 http write filter limit 0
2010/11/20 11:55:53 [debug] 8652#0: *13 writev: 258
2010/11/20 11:55:53 [debug] 8652#0: *13 http write filter 00000000
2010/11/20 11:55:53 [debug] 8652#0: *13 copy filter: 0 "/upload_progress?"
2010/11/20 11:55:53 [debug] 8652#0: *13 http finalize request: 0, "/upload_progress?" 1
2010/11/20 11:55:53 [debug] 8652#0: *13 set http keepalive handler
2010/11/20 11:55:53 [debug] 8652#0: *13 http close request

1 个答案:

答案 0 :(得分:0)

逻辑上,如果它工作或不起作用,只取决于服务器的域名,并且您没有同时更改任何其他内容,并且您上面写的所有内容都是正确的,那么只有三种可能性:

  1. 旧域名被加密,压缩或编译成文件,而不是以纯文本形式出现,这就是代表无法找到它的原因。

  2. 您正在更改不应更改的旧域名的配置设置。即忘记更改您应该更改的配置,而忘记不要更改您不应更改的配置。

  3. 您依赖于服务器外部的某些东西,它希望看到来自的请求或包含一个域的请求,但您发送的是另一个域。

  4. 我最好的猜测(结合上面的第2点和第3点)是您正在使用某些外部服务(Web服务,身份验证服务或类似的东西)并且忘记更新该配置。