我是nginx的新手,我想知道是否有办法将已编辑的请求网址传递给网络服务器。例如,我可能正在运行一个Web服务器(让我们说apache。或者Flask。)。我想要/foo/(.*)$的所有请求都转到我的网络服务器,但我希望我的网络服务器在没有foo的情况下看到它们。但是如果最初的请求没有foo,那么它将完全转移到其他地方。
对/ foo / bar的请求将被路由到我的Web服务器,该服务器只会将请求视为" / bar"。但是,最初是对" / bar"将完全不同地处理。 (所以我不想重定向)。
有没有办法做到这一点?我的想法是我可以使用它来模块化和命名我写的应用程序,在那里我可以编写一个应用程序,好像它是在root上路由请求,但它实际上会埋没在我的网站中。
谢谢!
答案 0 :(得分:0)
这应该是技巧(未经测试):
location /foo {
rewrite /[^/](/.*) $1 break;
# Pass to web server, e.g.:
#proxy_pass http://127.0.0.1:8080;
}
请注意,重写中的正则表达式将从请求中删除任何子目录;但只有一个子目录。你也可以使用:
rewrite /foo(/.*) $1 break;
哪个更易读,更清晰,但功能更强大。这取决于您和您的正则表达技巧。