Lighttpd如何在将URI传递给uWSGI前重写URI?
解决方案
你可以利用lighttpd mod_scgi模块的strip-request-url参数实现需求,无需修改代码或uwsgi.ini,仅调整lighttpd配置即可剥离URL前缀。
修改后的lighttpd配置如下:
server.modules += ( "mod_scgi" ) scgi.debug = 7 $HTTP["url"] =~ "^/forms" { scgi.protocol = "uwsgi" scgi.server = ( "/" => (( "host" => "localhost", "port" => 8000, "fix-root-scriptname" => "enable", "check-local" => "disable", "strip-request-url" => "/forms" # 新增此行,剥离/forms前缀 )) ) }
配置说明
strip-request-url会移除请求URL中匹配的前缀(此处为/forms),再将处理后的URL转发给uWSGI后端。- 此时代码路由可直接写根路径,无需包含/forms前缀:
@app.route('/') def index(): return "<span style='color:red'>I am app 1</span>" - 后续若需变更API路径(比如改成/submit),仅需修改两处:
$HTTP["url"] =~ "^/submit"strip-request-url => "/submit"
代码和uwsgi.ini完全不需要改动。
这个方案避开了mod_rewrite在$HTTP["url"]段内的限制,直接通过mod_scgi自身参数完成URL前缀剥离,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Fred Helmers
相关产品推荐
相关产品推荐

