问题标签 [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.
nginx - 如何使用 nginx 和 docker 将所有请求重定向到新路径?
我正在使用 nginx 和 docker 来托管应用程序,conf 文件是:
然后我们希望所有调用都重定向到新路径而不是子域。就像之前的域是类似 sub.example.com 的东西,但我们需要让它像 www.example.com/sub。我尝试更改 server_name,但它不起作用。
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 配置中缺少什么吗?请提供有关解决此错误的任何建议。
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 配置文件
caching - 如果返回 5xx,nginx 会将每个传入请求转发到上游,是否可以对其进行限制?
我使用 nginx 缓存响应 1 分钟。以下是配置:
使用此配置,当上游返回 5xx 响应时,nginx 从缓存中提供服务,这很好。但是我的问题是,当上游开始返回 5xx 并且缓存已过期时,每个传入的请求都被转发到上游,从而给上游服务器带来了巨大的负载,这些服务器已经处于不好的状态(它们以 5xx 响应)。是否可以将 nginx 配置为每 1 分钟向上游转发一次请求,即使上游响应 5xx 也是如此。我添加了以下行但无济于事:
将不胜感激任何建议。
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。
任何帮助,将不胜感激!
nginx - uri中的Nginx传递参数(如果存在)
在我的 nginx 配置文件中,我有一个 location 指令:
我有两种情况:
点击端点http://example/service1应该显示http://internal-service1/ 的内容 (即主页)
点击端点http://example/service1/someID应该告诉我http://internal-service1/someID 的联系(someID 的具体细节)
但是,在第一种情况下,它仍然 以“someID”为空访问 http://internal-service1/someID,因此我看到http://internal-service1/someID的页面,其中 someID 为空字符串。
我想我在这里遗漏了一些非常明显的东西。但无法弄清楚。
感谢任何帮助:)
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 -HUP
nginx 进程。
有没有更好的自动方式让 nginx 容器刷新其名称解析?
nginx - nginx + nodejs代理错误
为什么这不起作用?
我可以通过 curl 访问 127.0.0.1:8080 但 nginx 只显示 502 错误
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;
但它不起作用,我不知道如何有条件地进行重写。
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。
对于所有类型的请求,我都得到了如图所示的输出。
请帮助我。