首页 > 解决方案 > 上游不工作的 nginx proxy_pass 并给出 404 错误

问题描述

我已经通过以下方式使用 NGINX 设置了 IIS:

public_facing_IIS --> NGINX[速率限制] --> internal_IIS

用户点击公共网站 url,将请求转发到 NGINX,然后将其转发到内部 IIS 服务器。这条链的原因是我需要将 NGINX 到 internal_IIS 的命中限制为一个特定的数字——我不希望在公共 url 端进行速率限制。在使用代理通道设置上游时这样做会出现 404 错误。

因此,这适用于面向公众的 IIS 网站上的任何链接,但是一旦我进入路径 /Billing/ 我就会收到 404 错误

http{

    upstream myupstream {
            server internal.IISwebsite:80;
    }


  server {
        listen       81;
        server_name  internal.nginx;

        location / {
            proxy_pass http://internal.IISwebsite;
        }

        location /Billing/ {
            limit_req zone=mylimit burst=20;

            proxy_set_header Host $host;
            proxy_pass http://myupstream/;
        }
   }

}

即使绕过external_IIS url并直接调用internal.nginx:81,我也试过了。这一切都适用于http://internal.nginx:81上的所有其他 url 。我点击http://internal.nginx:81/Billing/的那一刻是我收到 http 404 错误的时候。

标签: nginxiisurl-rewritingrate-limiting

解决方案


推荐阅读