我已经在网上搜索了几天,但没有找到答复。
在 Nginx 中,您可以使用Location
并且我希望Location
我的请求在请求末尾带有“/”或不带有“/”来接受。
我该怎么做 ?
这是我的文件:
server {
server_tokens off;
server_name test.fr;
include /etc/nginx/include.d/ssl-default.conf;
location ~*test\/(.*) {
proxy_pass http://test.fr/$1$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
多谢
答案1
它是基本的正则表达式,您可以在这里找到很棒的交互式教程: https://regexone.com/
因此,为了让 nginx 接受带有“/”或不带有“/”的位置,您只需在转义的“/”字符后添加一个问号,如下所示:
location ~*test(\/)?(.*)
请注意,URL 的其余部分((.*)
部分)现在位于第二个捕获组中,因此您也需要更改指令proxy_pass
:
proxy_pass http://test.fr/$2$is_args$args;
因此你的最终配置将是这样的:
server {
server_tokens off;
server_name test.fr;
include /etc/nginx/include.d/ssl-default.conf;
location ~*test(\/)?(.*) {
proxy_pass http://test.fr/$2$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}