Articles of 反向代理

AWS中的负载平衡器和代理设置显示了不完整的性能

背景 最终用户发送给www.stuff.com/things的HTTP请求处理如下: 由负载平衡器(公共负载平衡器)负载平衡到NGINX逆向代理(我们称之为安全代理)。 安全代理将请求路由到专用应用程序负载均衡器。 专用负载均衡器根据URL路由stream量。 如果url是/things/…则请求被路由到另一个NGINX代理。 第二个NGINX代理(让我们称之为things代理)将所有请求路由到经典负载均衡器。 经典的负载均衡器侦听端口80和50000,并将请求平衡到托pipe应用程序的实例。 所以要回顾一下:我有公共负载平衡器 , 安全代理 , 私有负载平衡器 , things代理和经典负载平衡器。 问题 当用户试图访问www.stuff.com/things ,他们等待,他们等待,他们最终收到HTTP 504:网关超时。 或者,页面立即加载。 或者,一些元素快速加载而其他元素挂起。 debugging 我已经尝试从链中的几个地方发出请求: curl 经典的负载均衡器 ,响应是瞬间的 curl的things代理 ,反应是瞬间的 curl 私人负载均衡器 ,响应是即时的 curl 安全代理 ,响应是即时的 curl 公共负载平衡器 ,回应是slooooow …除非它是快速的 。 也许我需要重新configuration我的代理? 代理configuration things代理configuration如下: events { worker_connections 1024; } http { server { location ^~ /proxycheck { […]

使用nginx将真正的远程IP转发到代理服务器

为了隐藏我的网站IP,我用另一个VPS上的nginx代理了主服务器。 我想发送访问者真正的IP到我的网站,这里是我的conf.d文件夹中的configuration: proxy_cache_path /etc/nginx/cacheddata levels=1:2 keys_zone=staticfilecache:180m max_size=500m; proxy_temp_path /etc/nginx/cacheddata/temp; proxy_connect_timeout 30; proxy_read_timeout 120; proxy_send_timeout 120; #IMPORTANT – this sets the basic cache key that's used in the static file cache. proxy_cache_key "$scheme://$host$request_uri"; upstream wordpressapache { #The upstream apache server. You can have many of these and weight them accordingly, #allowing nginx to function as a […]

Rocket.Chat在Ubuntu 16.04 + Apache2 SSL代理不工作

问题:Rocket.Chat服务器完全通过HTTP运行,但不幸的是我无法使用HTTPS和Apache2反向代理… Apache-Config sub.example.com(Rocket.Chat): > <VirtualHost IP:443> > > ServerAdmin [email protected] > ServerName sub.example.com > ServerAlias www.sub.example.com > ErrorLog /var/log/chat.sub.example.com_error.log > TransferLog /var/log/chat.sub.example.com_access.log > LogLevel info > SSLEngine On > SSLCertificateFile /etc/letsencrypt/live/sub.example.com/fullchain.pem > SSLCertificateKeyFile /etc/letsencrypt/live/sub.example.com/privkey.pem > > <Location /> > Order allow,deny > Allow from all > </Location> > > RewriteEngine On > RewriteCond %{HTTP:Upgrade} =websocket […]

如何让nginx正确代理(包括在头文件中设置的基本authentication)Apache?

编辑:如果您有关于如何改进问题或缺less哪些细节的想法,请留下评论。 预期结果: 我试图将nginx作为反向代理来部署,让我公开由Apache提供的文件,而不必提供Apache所需的基本authentication凭证。 我的计划是在从代理发送到Apache的头文件中“静态地”提供基本的authentication凭证,以便用户可以在没有(或看到/知道)凭证的情况下访问这些文件。 build立: Apache需要通过https进行基本身份validation。 要部署的反向代理服务器本身是由一个处理到(docker)主机的传入stream量的nginx代理的。 (docker)主机入口nginx只在443上监听,(docker)主机上/内的stream量是http。 所以设置是: https >> [dockerhost ingress nginx] >> http >> [nginx reverse proxy] >> https >> [apache file server (basic auth)] 我正在使用最新的nginx docker镜像,只是添加了conf。 对于dockerhost入口代理,我使用https://github.com/jwilder/nginx-proxy 。 Apache正在从Hetzner存储箱提供文件。 我看不到或改变它的configuration,Hetzner说他们不能帮助我,因为他们没有正式支持这种设置。 他们最后的答复是: 我们的Apache不需要任何特定的头文件。 所有必要的是通过正确的主机名(由于SNI)和通过端口443处的SLL / HTTPS获得正确的凭证的请求。 问题: 直接地,没有nginx代理,我可以在浏览器中通过基本的身份validation提示或通过curl访问Apache上的文件。 当我尝试通过代理访问这些文件,并试图在nginxconfiguration中将“静态”的信息传递给头部时,我只能从404获得404s。 但是,我可以(而且这使我)通过代理访问文件时,代理没有“静态”基本身份validation,只是提示我的凭据。 所以它似乎是通过基本身份validation,但不能访问任何文件,这使我竹编。 我试过的: 我最初的方法是在这里使用 @Shai提供的位置块进行滚动: 如何使用nginx代理需要身份validation的主机? location / { proxy_set_header Host $host; proxy_set_header […]

IMAP:反向代理?

有这种情况: 在本地networking中存在两个完全不同/独立的邮件服务器,用于完成不同的maildomains。 只有一个公共IP地址可用。 现在应该可以从两个邮件服务器的“外部”获得IMAP访问权限。 因此只需要转发默认的IMAP端口143,这当然可以在本地networking中的一台服务器上完成。 因此,这台服务器必须根据maildomain(或在MailClient?或EMail Address?中设置的IMAP主机)将IMAPstream量转发到正确的邮件服务器。 这怎么能实现? 我以类似的方式为Apache提供了一些有关HTTP(“ProxyPass”/“ProxyPassReverse”)的“反向代理”。 提前Thx任何提示! T0mc @

Nginx作为反向代理不会发送所有的请求

在一个研究项目中,我创build了一个带有节点的networking应用 节点服务器托pipe在托pipe在物理机器上的虚拟机中,托pipe在作为逆向代理的Nginx服务器上的另一台机器与networking隔离。 我注意到一些POST请求发送到Web应用程序到达Nginx(它被logging),但从来没有到达节点服务器(服务器没有反应,而不是在日志logging器生成的日志中的提示。最令人惊讶的是,相同请求可能或不能到达第二台机器,似乎总是随机的,我的意思是我无法预测一个请求是否会成功,但如果不是,我可以再试一次,直到它工作,它会工作。这是/ etc / nginx / proxy_params: proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Host $http_host; 这里是site-available中的nginx文件: server { listen 443 ssl spdy; ## listen for ipv4 keepalive_timeout 70; server_name 10patch.server.com 10patch; include error_params; location / { […]

使用ARR作为ASP.NET WebAPI的反向代理的IIS以不同的方式随机地转义换行符

我们正在生产中运行一个asp.net Web API应用程序,使用IIS和ARR进行SSL卸载和反向代理。 我们看到一些奇怪的问题,从webapi端点请求xml。 随机地每隔一段时间,请求之间可能是2秒,或者几分钟,这并不重要,即使数据库没有改变,输出也是不同的。 几乎所有的事情都发生了,每分钟设置一个计时器,几乎所有的响应都会以不同的方式结束。 响应的一部分可以有真实的换行符,而下一个响应中的相同内容可以将它们转义为“\ n”,从而输出文本\ n而不是真正的换行符。 对于相同的请求,这也可以在同一响应的不同部分以不同的方式转义。 例如,一个XML元素可以有真正的换行符,下一个XML元素可以让他们逃脱。 Web应用程序使用内置的.NET xmlwriter,因此没有会​​导致此问题的自定义xml输出。 我已经克隆了虚拟机,并设置了一个不可重现的临时环境,尽pipe由于数据较less,此处的响应要小得多。 在ARR中是否有任何设置可能会导致转换按请求进行? 例如一些caching机制

设置nginx反向代理与重写适用于网站中的所有链接

我有以下的Nginxconfiguration: server { listen 80; location /test { rewrite /test(.*) /$1 break; proxy_pass "http://www.example.com/"; } } 这适用于主页,当input“ http:// localhost / test ”时,我得到http://www.example.com/的内容,URL仍然是“ http:// localhost / test ”。 很酷,但是当我点击网站中的一个链接时,说/more_examples我想链接被改写为: http:// localhost / test / more_examples 。 在实践中,我得到以下: http:// localhost / more_examples ,这显然不会工作。 这甚至有可能吗? 任何帮助将不胜感激。

Nginx反向代理 – 从cookies中删除“安全”

为了开发的缘故,我需要让NGINX从cookie头文件中删除“Secure”标志。 Set-Cookie:XSRF-TOKEN=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzz; Path=/; Secure 应该成为 Set-Cookie:XSRF-TOKEN=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzz; Path=/; 对于每个Set-Cookie头。 我正在创build一个反向代理configuration,以将开发服务器与UI分离,并且由于上游运行在HTTPS后面,而NGINX运行在纯HTTP上,所以浏览器拒绝发回cookie。

nginx proxy_pass仅适用于根path

我想将nginx设置为apache的反向代理。 我在端口8080上有apache。它只适用于根path,例如https://www.example.com ,但它不适用于https://www.example.com/index.html location / { try_files $uri $uri/ /index.php; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } 我尝试join斜线地址,如http://127.0.0.1:8080/,但后来我得到configuration错误。 就像这里: https : //stackoverflow.com/questions/21662940/nginx-proxy-pass-cannot-have-uri-part-in-location我试图使用重写,但我不知道该重写什么是。