我想添加一个字符串 ti url(如果它不存在)并使用 Nginx 反向处理
我目前正在使用端口8083公开的服务。如果不存在,我的用例是我想向所有URL添加“/服务”。
像用户命中一样 - > www.example.com:8083 - >转到nginx - > (在这里有我的支票) - >反向代理和返回结果
so www.example.com:8083 应该成为 www.example.com:8083/service 。
这是我的conf文件:
server {
listen 8083;
server_name _;
location / {
proxy_pass http://some_service:8083;
}
}
我该如何实现?事先感谢您的帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
NGINX位置指令接受控制前缀的匹配行为的修饰符。
使用
^〜< /code>,如果URL以 /服务开头,则将其视为匹配,而Nginx不会搜索更好的匹配。
〜
修饰符告诉Nginx,即使找到了匹配项,也会继续寻找更好的(更长)匹配:这是记录在在这里。
在您的情况下,甚至不需要修饰符,因为NGINX将在最长的前缀上匹配,因此,如果您有位置
/services
/code>/,则NGINX将选择/services
<代码> http://服务器/服务和/
for其他所有内容。因此,只需添加两个位置,都添加proxy_pass http:// some_service:8083/services
,您应该被覆盖。The nginx location directive accepts a modifier that controls the matching behavior for the prefix.
With
^~
, if a URL starts with /services, it is considered a match and nginx will not search for a better match.The
~
modifier tells nginx that even if a match is found, keep looking for a better (longer) match:This is documented here.
In your case, the modifiers are probably not even needed, as nginx will match on the longest prefix, so if you have locations
/services
and/
, nginx will pick/services
forhttp://server/services
and/
for everything else. So just add the two locations, both withproxy_pass http://some_service:8083/services
, and you should be covered.