Nginx - перепишите request_uri перед uwsgi_pass

У меня есть 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 script получал /something как request_uri.

Я использую BottlePy, но хотел бы, чтобы это обрабатывалось Nginx, а не в моем коде Python.

Могу ли я сделать что-то вроде uwsgi_param REQUEST_URI replace($request_uri, '^/one', '')?

Edit

Вот запрос моего кода на Python: [pid: 30052 | app: 0 | req: 1/1]() {42 vars в 844 bytes} [Вт Авг 21 14:22:07 2012] GET/one/something = > сгенерировано 0 байт за 4 мс (HTTP/1.1 200) 2 заголовка в 85 байт (0 переключений на ядро ​​0)

Итак, Python в порядке, но uWSGI не работает.

Как это исправить?

Ответы

Ответ 1

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

Ответ 3

Я знаю, что эта ветка старая, но есть другой способ решить эту проблему, если вы используете uWSGI для запуска своего приложения на python.

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