Regex Nginx-在uwsgi\u传递之前重写请求\u uri
我有一个Nginx vhost,其配置如下: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
...
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,现在正在考虑我自己的申请。