使用 proxypass 重写 Nginx

使用 proxypass 重写 Nginx

我在 node js 服务器 (next.js) 的前端运行了一个 Nginx。我正在尝试编写我的 Nginx 配置以实现此行为,我想将主机名作为 proxy_pass 到 node js 之前路径的第一部分添加。

例如,客户端将写入a.com/a.com/product/...a.com/**
我的 nextjs 应用程序除了类似http://a.com/[:域名]/.... 而域名与主机相同。

因此目标是在将其传递给 nextjs 服务器之前将 URL 从 更改为a.com/**a.com/a.com/**

我创建的 nginx 配置:

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                # try_files $uri $uri/ =404;
                # if ($host = a.com) { proxy_pass http://site/a/; }
                # if ($host = b.com) { proxy_pass http://site/b/; }
                rewrite ^(/.*)$ /$host/$1 ;
                proxy_pass http://site;
        }

但那没有用。

答案1

看起来有效,您应该检查上游在其访问日志中获取了什么。打赌答案就在那里。不过我猜主要问题是您忘记传递 Host 标头了:

proxy_set_header Host <whatever the Host is expected on the upstream, definitely not $host though>

但这仅当上游服务器不是默认服务器或唯一服务器时才是一个线索。

相关内容