proxy_pass 可以使用变量吗?我正在尝试使以下配置工作:
http {
...
map $http_user_agent $myvariable {
default 'mobile';
}
...
}
Run Code Online (Sandbox Code Playgroud)
位置配置:
server {
listen 80;
...
location /site {
proxy_pass http://docker-site/site/$myvariable;
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果我将 proxy_pass 替换为http://docker-site/site/mobile;
让我知道我是否走在正确的轨道上。
这两个案例并不相同。如果您使用变量,该值将替换整个 URI。
在这种情况下:
location /site {
proxy_pass http://docker-site/site/mobile;
}
Run Code Online (Sandbox Code Playgroud)
URI/site/foo作为 向上游传递/site/mobile/foo。
要使用变量,您可以使用重写(有关详细信息,请参阅本文档):
location /site {
rewrite ^/site(.*)$ /site/$myvariable$1 break;
proxy_pass http://docker-site;
}
Run Code Online (Sandbox Code Playgroud)
或者正则表达式位置:
location ~ ^/site(.*)$ {
proxy_pass http://docker-site/site/$myvariable$1;
}
Run Code Online (Sandbox Code Playgroud)
正则表达式位置块的求值顺序很重要。有关详细信息,请参阅此文档。
| 归档时间: |
|
| 查看次数: |
14792 次 |
| 最近记录: |