Nginx的 - 重写uwsgi_pass前REQUEST_URI(Nginx - Rewrite

2019-06-27 05:20发布

我有一个Nginx的虚拟主机比被配置为这样:

...
location /one {
  include uwsgi_params;
  uwsgi_pass unix:///.../one.sock;
}
location /two {
  include uwsgi_params;
  uwsgi_pass unix:///.../two.sock
}
...

当然,这是一个简化的结构

当我请求/one/something ,我想我的Python脚本接收/somethingrequest_uri

我使用BottlePy但想这nginx的在我的Python代码来处理,而不是。

我可以做这样的事情uwsgi_param REQUEST_URI replace($request_uri, '^/one', '')

编辑

下面是从我的Python代码请求:[PID:30052 |应用程式:0 | REQ:1/1](){42个VARS在844个字节} [星期二年08月21 14点22分07秒2012] GET /一个/一些= >生成的0字节中4毫秒(HTTP / 1.1 200)2个的报头85个字节(0交换机核心0)

所以Python是确定的,但uWSGI是没有的。

如何解决呢?

Answer 1:

location /one {
  rewrite /one/(.+) /$1 break;
  include uwsgi_params;
  uwsgi_pass unix:///.../one.sock;
}


Answer 2:

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

location /one {
    include uwsgi_params;
    uwsgi_pass unix:///.../one.sock;
    uwsgi_param SCRIPT_NAME /one;
    uwsgi_modifier1 30;
}

你可以找到更多关于uwsgi_modifier1这里: http://uwsgi-docs.readthedocs.org/en/latest/Nginx.html#hosting-multiple-apps-in-the-same-process-aka-managing-script-name-和路径信息



文章来源: Nginx - Rewrite the request_uri before uwsgi_pass