1

我试图理解为什么几乎相同的 nginx/HttpUploadProgressModule 配置在我的本地 Ubuntu 下工作,而在 Linode 服务器上却没有。

长话短说:从源代码配置 nginx 以包含 HttpUploadProgressModule 模块支持((http://wiki.nginx.org/HttpUploadProgressModule#Installationhttps://github.com/masterzen/nginx-upload-progress-module

使用相同的 1.2.4 nginx,本地和服务器上的相同虚拟主机配置。现在我在服务器上重新加载 nginx 时出错:

Restarting nginx: nginx: [emerg] unknown directive "  " in /etc/nginx/sites-enabled/example.com:12
location ~ (?<upload_form_uri>.*)/x-progress-id:(?<upload_id>\d*) {
#Line 12 below #
rewrite ^ $upload_form_uri?X-Progress-ID=$upload_id; 
# Line 12 above #
}

但它在本地工作得很好。下面是 nginx-V 和ldd /usr/sbin/nginx比较,这让我到目前为止也没有谷歌搜索:

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

某些东西显然会导致 nginx 配置解析器无法正常工作。

带有命名反向引用的正则表达式引起了我的注意。Nginx 使用 PCRE 库来解析正则表达式,所以这应该是有效的语法

请参阅此内容以了解捕获组和命名/未命名反向引用 http://regular-expressions.mobi/named.html

试试这个

location ~ (.*)/x-progress-id:([0-9]+) {
    set $upload_form_uri $1;
    set $progress_id $2;
    rewrite .* $upload_form_uri?X-Progress-ID=$progress_id;
}

相同的含义,但更基本的语法。如果这没有帮助,则需要进行更多调查。

于 2012-12-23T09:48:05.617 回答