微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何编写 Nginx 配置文件以传递带有 id ([0-9]+) 的 URL 以执行负载平衡

如何解决如何编写 Nginx 配置文件以传递带有 id ([0-9]+) 的 URL 以执行负载平衡

假设我必须访问一个 URL localhost/tag/9,其中 9 是一个 id。那么我需要在里面写什么

location /tag/? {

}

问题实际上是我在一个网页中有几个标签链接),每个标签都有一个与之关联的 ID。当我点击一个 ID 为 9 的标签时,它会带我到 localhost/tag/9 并且我得到 404错误。现在我想知道如何将这个 URL 代理传递给我的实际 URL,即 localhost:1111/tag/9 ?我的 express 应用在端口 1111、2222 和 3333 上运行。

到目前为止我的 conf 文件

upstream expressweb {
    server localhost:1111;
    server localhost:2222;
    server localhost:3333;
}
server {

    listen 80;
    location /my_app/ {
        proxy_pass http://expressweb/;
    }
    location /tag/[0-9]+/ {
        proxy_pass http://expressweb/tag/$1/;
    }
}

知道我该怎么做吗?

编辑:

我尝试过

location /tag/1/ {
        proxy_pass http://expressweb/tag/1/;
    }
    location /tag/2/ {
        proxy_pass http://expressweb/tag/2/;
    }
    location /tag/3/ {
        proxy_pass http://expressweb/tag/3/;
    }

等等,但仍然无法正常工作

解决方法

nginx 提供文件,而不是网页中的标签 - 这可能意味着多方面的开始。

假设您的 nginx 服务页面引用了位于 http://expressweb/tag/9 的文件(并且您可以从运行 nginx 的主机上使用 curl 获取它),您可以通过代理传递简单地观察正确syntax。从我的头顶

location /tag { proxy_pass http://expressweb; }

或者如果你真的需要正则表达式

location ~ /tag/([0-9]+) { prxy_pass http://expressweb/tag/$1; }

这里是 proxy_pass syntax

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。