问题标签 [nginx-reverse-proxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
471 浏览

nginx - 如何使用 nginx 和 docker 将所有请求重定向到新路径?

我正在使用 nginx 和 docker 来托管应用程序,conf 文件是:

然后我们希望所有调用都重定向到新路径而不是子域。就像之前的域是类似 sub.example.com 的东西,但我们需要让它像 www.example.com/sub。我尝试更改 server_name,但它不起作用。

0 投票
0 回答
621 浏览

nginx-reverse-proxy - Nginx 作为 WebSocket 代理给出无效的 URL 前缀错误

在将 Nginx 配置为 Web 应用程序中的 webSocket 代理时,我们遇到了问题。我们在 nginx.conf 中添加了以下与 websockets 相关的配置:

234.61.55.59:8090 - 是安装和运行 Nginx 的机器的 IP 地址和端口。

234.61.34.23:3389 - 是要连接的后端系统的 IP 地址和端口。

现在从 Web 应用程序中的 javascript 代码创建 websocket 并生成以下请求 URL:

wss://234.61.55.59:8090/websocket-tunnel/connect?id=12345

现在在 Nginx error.log 中收到以下错误

[错误] 9516#33264: *396 在“ws://websocket/websocket-tunnel/connect?id=12345”中的 URL 前缀无效

我们在 nginx websocket 配置中缺少什么吗?请提供有关解决此错误的任何建议。

0 投票
0 回答
2224 浏览

angular - 如何使用 NGINX 将所有请求重定向到子路径?

应用程序、问题和目标的概述。

该应用程序由一个微服务网络组成,封装在单独的 Docker 容器中。这些容器是 Django、Postgres、Nodejs(+ Socket.io) 和 Nginx+Angular2(静态文件)。Nginx 目前有文件的特定路由,并将所有其他请求路由到 Angular2 应用程序,然后它有自己的路由器。

目前,应用程序可以直接从根目录提供服务,但必须将其移动到子目录中。该地址随后将包含目录的新路径。

因此,它在部署到 ... 时有效http://host,但不适用于http://host/path,因为微服务中的所有请求都由 NGINX 反向代理路由。

如何使用 NGINX 重写/重定向附加/path到 URL 以便可以从子目录提供它,但 NGINX 仍然会知道这些位置仍然存在于根级别?

我的 301 尝试

在这里,我在捕获所有位置进行了 301 重定向。它适用于所有问题,但将 301 添加到静态位置时,重定向不起作用。301是最好的解决方案吗?我将如何重定向静态位置?

原始 NGINX 配置文件

0 投票
0 回答
131 浏览

caching - 如果返回 5xx,nginx 会将每个传入请求转发到上游,是否可以对其进行限制?

我使用 nginx 缓存响应 1 分钟。以下是配置:

使用此配置,当上游返回 5xx 响应时,nginx 从缓存中提供服务,这很好。但是我的问题是,当上游开始返回 5xx 并且缓存已过期时,每个传入的请求都被转发到上游,从而给上游服务器带来了巨大的负载,这些服务器已经处于不好的状态(它们以 5xx 响应)。是否可以将 nginx 配置为每 1 分钟向上游转发一次请求,即使上游响应 5xx 也是如此。我添加了以下行但无济于事:

将不胜感激任何建议。

0 投票
1 回答
6258 浏览

nginx - Nginx 不区分大小写的 proxy_pass

我有一个名为 的站点http://example.com,其中运行着一个应用程序,可以在http://example.com/app1. app1 位于 nginx 反向代理后面,如下所示:

在字段中添加尾部斜杠proxy_pass可以让我“删除”URL 的 /app1/ 部分,至少就应用程序而言。所以 app1 认为它正在获取对根 url 的请求(例如,我在 app1 中有一个路由,它位于'/',而不是'/app1')。

但是,我想让 nginx 不区分大小写。所以无论我去http://example.com/App1还是http://example.com/APP1,它仍然应该只是将请求转发给 app1,删除 /app1/ 部分的 url。

当我尝试使用 nginx 的不区分大小写的规则时,它不会将 URI 的其余部分转发给 app1。

这给了我一个nginx配置错误。

我的目标有两个:

  • /app1/不区分大小写匹配
  • /app1/将网址“传递”到应用程序时删除网址的一部分

我已经尝试重写 url,但它不允许我将 URI 的其余部分添加到 proxy_pass。

任何帮助,将不胜感激!

0 投票
0 回答
62 浏览

nginx - uri中的Nginx传递参数(如果存在)

在我的 nginx 配置文件中,我有一个 location 指令:

我有两种情况:

  1. 点击端点http://example/service1应该显示http://internal-service1/ 的内容 (即主页)

  2. 点击端点http://example/service1/someID应该告诉我http://internal-service1/someID 的联系(someID 的具体细节)

但是,在第一种情况下,它仍然 以“someID”为空访问 http://internal-service1/someID,因此我看到http://internal-service1/someID的页面,其中 someID 为空字符串。

我想我在这里遗漏了一些非常明显的东西。但无法弄清楚。

感谢任何帮助:)

0 投票
2 回答
3869 浏览

docker - nginx 不会自动获取 swarm 中的 dns 更改

我在 docker swarm 的默认 nginx 配置(根据lets-nginx项目)中通过lets-nginx运行nginx:

服务:

api是一个烧瓶应用程序,在 swarm 覆盖网络的 5000 端口上运行backend

最初启动服务时,一切正常。但是,每当我api以使api容器在三个节点群中的节点之间移动的方式更新时,都nginx无法将流量路由到新容器。

我可以在 nginx 日志中看到它坚持使用旧的内部 ip,例如 10.0.0.2,而新容器现在位于 10.0.0.4 上。

为了让 nginx “看到”新 IP,我需要重新启动 nginx 容器或docker exec进入它和kill -HUPnginx 进程。

有没有更好的自动方式让 nginx 容器刷新其名称解析?

0 投票
1 回答
39 浏览

nginx - nginx + nodejs代理错误

为什么这不起作用?

我可以通过 curl 访问 127.0.0.1:8080 但 nginx 只显示 502 错误

0 投票
2 回答
161 浏览

nginx - Nginx 有条件地重写 uri

我使用 nginx 作为多个 Rails 应用程序的反向代理(使用 Nixy)。如果缺少,我需要重写一些请求以在 url 前面注入一个字符串。

例如:如果我有http://proxy_ip/app_name/some/root我不想修改任何东西,但如果我有http://proxy_ip/some/root我想转换http://proxy_ip/app_name/some/root

我试过rewrite ^ /app_name/$uri;但它不起作用,我不知道如何有条件地进行重写。

0 投票
2 回答
523 浏览

web-services - Nginx SSL pass-thru 不适用于 REST Web 服务

我正在尝试使用 Nginx 对 3 个启用 SSL 的 REST Web 服务实例进行负载平衡。

在我的情况下,我需要使用 SSL pass-thru。

我已关注https://www.cyberciti.biz/faq/configure-nginx-ssltls-passthru-with-tcp-load-balancing/

https://serversforhackers.com/c/tcp-load-balancing-with-nginx-ssl-pass-thru

但我在访问负载均衡器端点时没有得到默认的 json。

对于所有类型的请求,我都得到了如图所示的输出。

在此处输入图像描述

请帮助我。