Ответ 1
location /one {
rewrite /one/(.+) /$1 break;
include uwsgi_params;
uwsgi_pass unix:///.../one.sock;
}
У меня есть 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 не работает.
Как это исправить?
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_modifier1
:
http://uwsgi-docs.readthedocs.org/en/latest/Nginx.html#hosting-multiple-apps-in-the-same-process-aka-managing-script-name-and-path-info
Я знаю, что эта ветка старая, но есть другой способ решить эту проблему, если вы используете uWSGI для запуска своего приложения на python.
[uwsgi]
route-uri = ^/one/(.*) rewrite:/$1