我想添加一个字符串 ti url(如果它不存在)并使用 Nginx 反向处理

发布于 2025-01-18 08:55:32 字数 666 浏览 0 评论 0 原文

我目前正在使用端口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;
    }
}

我该如何实现?事先感谢您的帮助。

I am currently using a service exposed at port 8083. My use case is I want to add "/service" to all the url if it's not present.

Like user hits -> www.example.com:8083 -> goes to Nginx -> (Have my checks here) -> Reverse Proxy and return result

so www.example.com:8083 should become www.example.com:8083/service.

Here is my conf file:

server {
    listen        8083;
    server_name   _;

    location / {
        proxy_pass http://some_service:8083;
    }
}

How can I achieve this? Thanks in advance for the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

简单 2025-01-25 08:55:32

NGINX位置指令接受控制前缀的匹配行为的修饰符。

使用^〜< /code>,如果URL以 /服务开头,则将其视为匹配,而Nginx不会搜索更好的匹配。

location ^~ /services {
    proxy_pass http://some_service:8083/services
}

修饰符告诉Nginx,即使找到了匹配项,也会继续寻找更好的(更长)匹配:

location ~ / {
    proxy_pass http://some_service:8083/services
}

这是记录在在这里

在您的情况下,甚至不需要修饰符,因为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.

location ^~ /services {
    proxy_pass http://some_service:8083/services
}

The ~ modifier tells nginx that even if a match is found, keep looking for a better (longer) match:

location ~ / {
    proxy_pass http://some_service:8083/services
}

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 for http://server/services and / for everything else. So just add the two locations, both with proxy_pass http://some_service:8083/services, and you should be covered.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文