问题标签 [nginx-upstreams]
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.
wordpress - Nginx 作为 wordpress 的负载均衡器,提供静态文件时出错
我正在使用以下堆栈在 docker 上设置一个简单的环境:
- nginx作为负载均衡
- wordpress 实例
- mysql
我的简单 docker compose 文件如下:
nginx 是从基础镜像构建的,配置如下:
现在,当我连接到 my.site.com 时,我已正确重定向到我的 wordpress 实例,但加载了http://wploadbalance
无法访问的静态文件。
例如,在我的浏览器控制台中,我看到类似的内容:
获取
http://wploadbalance/wp-includes/js/wp-util.min.js?ver=4.4
网络::ERR_NAME_NOT_RESOLVED
由于wploadbalance
无法从 docker 容器外部访问,因此应该通过某种方式告诉 wordpress 静态文件是从my.site.com
. 有谁知道如何实现这一目标?
nginx - 多个上游的 Nginx 一致性哈希
上游服务器是 wowza。有两个上游
第一个上游指向 API,第二个指向缩略图 URI。
我将 hashKey 更改为查询参数,认为哈希将基于查询参数,并且它将为两个上游解析到同一服务器,但事实并非如此。
在某些情况下,第二个上游解析到不同的服务器,我认为这是由于端口的变化。
有没有办法使两个上游的一致哈希一致?
任何帮助,将不胜感激。
docker - “在上游找不到主机......”使用“kubectl apply -f”但在“docker-compose up”中有效
我在 docker 中有四个图像,它们是两个服务,一个前端和一个反向代理。
当我使用docker-compose up
时,它可以工作并且服务正在运行。
但是当我想使用kubectl apply -f
在 pod 中运行时。日志中有[emerg] 1#1: host not found in upstream "backend-user:8080" in /etc/nginx/nginx.conf:11。我对此一无所知。
这是我的图片:
这是docker-compose.yaml
这是nginx.conf
当我使用docker-compose up
时,它可以工作。
这是反向代理部署.ymal
我不确定为什么 nginx 在 pod 启动时找不到“后端”,但可以运行docker-compose up
nginx - 基于响应头的nginx反向代理
我有一个网站设置,该网站由引擎盖下的 2 个 Web 应用程序提供支持。
一个应用程序 ( fast
) 应该处理目录页面。
另一个应用程序 ( slow
) 应该处理客户/购物车/结帐页面。
两个应用程序应该运行在同一主机上:
example.com:80 ( fast
) 和 example.com:8000 ( slow
)
当然,8000 端口不会暴露给访问者,并由 nginx 内部使用。
我希望 Web 请求slow
仅在应用程序返回特定响应标头时才到达应用fast
程序,例如 X-catalog-not-found。
预期结果如下:
- 所有请求都转到
fast
应用程序 example.com:80 - 如果
fast
应用程序通过 uri 找到产品 - 它会呈现页面 - 如果
fast
应用程序没有通过 uri 找到产品 - 它发送空正文和响应标头 X-catalog-not-found - 根据上一步中收到的标头,nginx 将代理传递到
slow
应用程序 example.com:8000
我觉得应该使用 ngx_http_proxy_module 或/和 nginx_upstream 模块,但在阅读文档后还没有找到可行的解决方案。
nginx - Nginx反向代理:并行尝试多个上游服务器并返回第一个成功响应
我已将 nginx 配置为下载软件工件(例如 JAR 文件)的反向代理,并希望通过将每个请求并行代理到多个上游服务器来加速它。
以下当前有效:在 nginx 在 localhost:8080 运行时,我请求,nginx在预先配置的列表(例如,等)中localhost:8080/com/foo/bar.jar
串行检查每个主机上的文件,并返回第一个匹配的工件(即首先返回状态 200)。com/foo/bar.jar
repo1.org/com/foo/bar.jar
repo2.org/com/foo/bar.jar
下面的配置使这项工作适用于 maven.org 和 osgeo.org 上的 repos:
为了减少延迟,我希望 nginx 并行运行请求,返回第一个给出 200 的请求,否则返回错误代码 404。
我不确定哪些指令(如果有)可以启用这种行为。我很感激任何提示。
nginx - nginx proxy_next_upstream 工作很奇怪
nginx 的 proxy_next_upstream 工作很奇怪。
当上游到其他国家/地区的代理无法返回请求时,我想传递到下一个服务器。所以我像这样设置上游(代理到其他国家)。
它运作良好。但是连接tomcat的上游也会在失败时重试。
上游tomcat配置
我认为只有当上游有两个以上的服务器时,nginx 才会尝试下一个上游。
但即使上游有一台服务器,它也会尝试两次以上。
我使用 nginx、tomcat 和 java spring。
有我的nginx的配置、访问日志和错误日志。
代理配置
日志格式
访问日志
错误日志
如您所见,我将 proxy_next_upstream_tries 设置为 2。但它重试了两次以上。(访问日志:{502、502、502、502} -> 这意味着上游尝试第四次代理到下一个服务器)
我对此有疑问。
- 我希望上游 tomcat 不会重试通过下一个服务器。可能吗?
- 为什么上游只有一台服务器时会重试?
- 为什么它重试两次以上?
- 当upstream返回502时,为什么暂时无法连接?(发生时,服务器状态正常)
如果您知道我的问题之一的答案,请告诉我。
谢谢你。
nginx - 使用 NGINX 上游,是否可以代理传递到同一上游中的 HTTP 和 HTTPS 后端?
假设我想将部分流量代理到远程后端,而不是服务器上的本地侦听器。例如:
在上述配置中,每 20 个左右的请求 NGINX 将尝试路由到http://other-remote-backend.company-internal.com:443
仅侦听 SSL 的路由。
上游有没有办法定义自己的协议方案?现在,如果不将本地侦听器进程也更改为 SSL,这似乎是不可撤销的(这是一个不太理想的更改)。
谢谢
nginx - 基于服务器200响应失败的NGINX路由
我的目标是在配置中配置 nginx 的流对象,以在某些健康检查失败的情况下将请求路由到上游备份(2/3)
健康检查虽然有点具体,但我认为不应该成为问题:
-TCP 1212 可用性
-TCP 1912 可用性
-HTTP GET 7078 /?
- 响应应该是 200,如果我能以某种方式让身体检查它是否符合预期,那就更好了!
如果可以说这些检查在一个上游“集群”上失败,我想将请求路由到另一个相同的集群,就像备份一样。
我要解决的问题在于服务器实际上相距半个世界,因此通过一台服务器进行负载平衡会导致与您等待它失败时相同的延迟。因此,虽然负载均衡器最终会有“路由”行为,但响应时间将是不可接受的。
有没有办法在 NGINX 配置中做到这一点,还是我把它分散得太薄了?
nginx - nginx如何使用证书将域名请求转发到ip地址?
再会!我在 nginx 配置中配置了 upstream 和 proxypass。配置中的任何地方都没有关于域名的信息。上游包含同一个站点所在的主机xxx和yyy的ip地址。Nginx 监听主机 zzz 的 443 端口,并将请求重定向到两台主机之一。证书包含有关域名的信息。尝试通过这个域名时,nginx重定向到主机xxx或yyy,但是我不明白如果我们通过域名,它是如何做到的,并且nginx将请求重定向到ip地址。该配置还包括证书验证。问题的症结所在:如果它们没有以任何方式明确相关,nginx 如何通过域名将请求重定向到 IP 地址?
UPD。该证书包含域名 DOMAIN_NAME。当导航到 DOMAIN_NAME 时,nginx 在 zzz 处获取此请求并重定向到 xxx 或 yyy。所有这些主机都有证书。我对将请求从域名重定向到 IP 地址的原理很感兴趣。
asp.net-core - NGINX 反向代理背后的 ASP.NET Core
我在尝试在 NGINX 反向代理后面运行我的 ASP.NET Core 3 应用程序时遇到问题。我正在关注本指南: https ://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-3.1
我正在使用 Let's Encrypt 为我的 SSL 证书和代理传递到我本地网络中的另一台机器。我真的不知道如何解决这个问题。我已经尝试使用 SSL 保护反向代理和 Kestrel 服务器之间的连接,但这仍然不起作用。任何帮助将不胜感激。我的 NGINX Site.conf 文件如下:
ASP.NET Core 应用程序运行在与 NGINX 反向代理(本地 IP:192.168.3.111)不同的机器(本地 IP:192.168.3.222)上。如果我在 ASP.NET Core 应用程序正在运行的机器上设置 NGINX 反向代理,并且代理传递到 127.0.0.1:5000,我可以通过本地网络毫无问题地访问它。我还配置了 Startup.cs 以接受我的反向代理:
如果我尝试访问 MyDomain.net,我会收到 502 Bad Gateway。所以反向代理无法连接到应用程序。文档中的示例在与 Kestrel 服务器相同的机器上使用反向代理。NGINX 错误日志如下:
连接到上游时失败(111:连接被拒绝),客户端:0.0.0.0.1,服务器:mydomain.net,请求:“GET / HTTP/1.1”,上游:“http://192.168.3.222:5000/$ ,主机:“mydomain.net”
带有 Kestrel 服务器的机器允许端口 5000 和 5001 的传入流量。