Regex Nginx-在uwsgi\u传递之前重写请求\u uri

Regex Nginx-在uwsgi\u传递之前重写请求\u uri,regex,nginx,uwsgi,bottle,Regex,Nginx,Uwsgi,Bottle,我有一个Nginx vhost,其配置如下: ... location /one { include uwsgi_params; uwsgi_pass unix:///.../one.sock; } location /two { include uwsgi_params; uwsgi_pass unix:///.../two.sock } ... 当然,这是一个简化的配置 当我请求/one/something时,我希望我的Python脚本以请求uri的形式接收/somethi

我有一个Nginx vhost,其配置如下:

...
location /one {
  include uwsgi_params;
  uwsgi_pass unix:///.../one.sock;
}
location /two {
  include uwsgi_params;
  uwsgi_pass unix:///.../two.sock
}
...
当然,这是一个简化的配置

当我请求
/one/something
时,我希望我的Python脚本以
请求uri
的形式接收
/something

我使用的是BottalPy,但我希望它由Nginx处理,而不是在我的Python代码中

我是否可以执行类似于
uwsgi\u参数请求\u URI替换($REQUEST\u URI,“^/one',”)

编辑

以下是我的Python代码的请求: [pid:30052 | app:0 | req:1/1](){844字节中的42个变量}[Tue Aug 21 14:22:07 2012]GET/one/something=>在4毫秒内生成0字节(HTTP/1.1200)在85字节内生成2个报头(核心0上的0个开关)

所以Python是可以的,但uWSGI不是


如何解决这个问题?

我刚刚遇到了同样的问题,这里有一个解决方案

location /one {
  rewrite /one/(.+) /$1 break;
  include uwsgi_params;
  uwsgi_pass unix:///.../one.sock;
}
location /one {
    include uwsgi_params;
    uwsgi_pass unix:///.../one.sock;
    uwsgi_param SCRIPT_NAME /one;
    uwsgi_modifier1 30;
}
您可以在此处找到有关
uwsgi\u modifier1
的更多信息:
我刚刚遇到了同样的问题,这里有一个解决方案

location /one {
    include uwsgi_params;
    uwsgi_pass unix:///.../one.sock;
    uwsgi_param SCRIPT_NAME /one;
    uwsgi_modifier1 30;
}
您可以在此处找到有关
uwsgi\u modifier1
的更多信息:

我知道这个线程很旧,但是如果您使用uWSGI运行python应用程序,还有另一种方法可以解决这个问题

[uwsgi]
route-uri = ^/one/(.*) rewrite:/$1

我知道这个线程很旧,但如果您使用uWSGI运行python应用程序,还有另一种方法可以解决这个问题

[uwsgi]
route-uri = ^/one/(.*) rewrite:/$1

我用另一种方式解决了这个问题:

[uwsgi]
module = wsgi:application
master = true
processes = 10
socket = 127.0.0.1:9090
mount = /one=customscript.py
manage-script-name = true
nginx


我用另一种方式解决了这个问题:

[uwsgi]
module = wsgi:application
master = true
processes = 10
socket = 127.0.0.1:9090
mount = /one=customscript.py
manage-script-name = true
nginx


在你的答案中链接的文档现在明确地说不要做你展示的事情(上面写着“过去的uWSGI版本支持”它,暗示它不再被支持)。在你的答案中链接的文档现在明确地说不要做你展示的事情(上面写着“过去的uWSGI版本支持”$1在这里是什么意思?$1表示正则表达式中从左到右的第一个捕获,在本例中为(.*)。如果有更多捕获,则可能有$2、$3等等。请尝试
route uri=^/one/?(*)$rewrite:/$1
https:///one
不带斜杠也可以,Good catch@netzego这里$1是什么意思?$1表示正则表达式中的第一个捕获,从左到右,在本例中为(.*)。如果有更多捕获,则可能有$2、$3等等。请尝试
route uri=^/one/?(*)$rewrite:/$1
https:///one
不带斜杠也可以,Good catch@netzegoif one使用此规则:
rewrite/one/?(*)$/$1 break,路线
https:///one
(不带尾随的
/
)也可以使用。@netzego-Eh,虽然
/one
/one/
都不是有效的URL,但为什么允许呢?他们希望最终收到随后出现的
/某物
。IDK,现在正在考虑我自己的应用程序。如果使用此规则:
rewrite/one/?(*)$/$1 break,路线
https:///one
(不带尾随的
/
)也可以使用。@netzego-Eh,虽然
/one
/one/
都不是有效的URL,但为什么允许呢?他们希望最终收到随后出现的
/某物
。IDK,现在正在考虑我自己的申请。