我使用Squid作为反向代理来发布有限访问的Web资源。 我已经configuration它来检查用户凭据使用标准的Web浏览器表单(基本authentication)。 是否有可能使用身份validation表单显示网页?
我试图在Apache2反向代理背后使用Docker来build立一个Shopware站点。 由于Shopware软件出于某种原因将其后端主机“ http://127.0.0.1:18084 ”放入发送给浏览器的JavaScript中,我试图用mod_substitute将其replace为外部主机名: ProxyPass / http://127.0.0.1:18084/ ProxyPassReverse / http://127.0.0.1:18084/ <Location /> AddOutputFilterByType SUBSTITUTE text/html application/javascript Substitute "s!127.0.0.1:18084!my.real.domain.de!in" </Location> 这是行得通的,即主机名被replace。 但是,有些JavaScript文件是使用分块编码发送的,这会导致浏览器出现问题(从JS控制台输出): GET http://my.real.domain.de/engine/Library/ExtJs/ext-all.js?201611281529 net::ERR_INCOMPLETE_CHUNKED_ENCODING 我的第一个想法是replace与块长度混乱,但是当我删除Substitute线时也会出现这个问题。 只是有一个AddOutputFilterByType行的内容types的application/javascript导致的问题。 反向代理Apache是2.4.7版本,后端apache是2.4.18。 我做错了什么,或者这是一个Apache的问题? (有一些Apache的反向代理搞乱了2.2中的最后一个,空的块,但我认为这应该是现在修复) 更新: ezra_s指出,我应该确保浏览器caching不会发挥到这一点。 我使用curl检查: 在主机conf中没有AddOutputFilterByType和没有Substitute行,JS文件被完全传输(大约1259k字节)。 只需启用AddOutputFilterByType行,就可以得到以下输出: here:~ tos$ curl http://my.real.domain.de/engine/Library/ExtJs/ext-all.js?201611281529 /* This file is part of Ext JS 4.1 Copyright (c) 2011-2012 Sencha Inc Contact: http://www.sencha.com/contact GNU […]
我已经在反向代理(在localhost上运行,用于SSL卸载)后面运行Varnish。 代理设置X-Forwarded-For头部,或者如果头部已经存在,则将其自身添加到头部。 当我做ACL检查当然我想检查原始客户端的IP,而不是我的代理的IP,所以我不能使用client.ip字段。 与std vmod我可以做到以下几点: vcl 4.0; import std; sub vcl_recv { if (std.ip(regsub(req.http.X-Forwarded-For, ", 127.0.0.1$", ""), "0.0.0.0") ~ my_acl) { …do stuff… } } 换句话说,在通过std.ip运行代理服务器的IP(127.0.0.1)并将其与我的ACL进行比较之前,我会从代理服务器的IP中std.ip IP(127.0.0.1)。 这工作正常,除… 当X-Forwarded-For头部已经在它到达我的代理之前已经被设置,这将失败。 在这种情况下,XFF标题包含三个或更多的IP地址。 修剪最后一个仍然留下了多个和std.ip扼stream圈,延迟了几秒钟的请求,当然无法检查ACL。 我需要确保XFF标题只包含一个IP(IPv4或IPv6)后,我已经closures了代理服务器。 这应该是客户的IP。 例如: X-Forwarded-For: 10.10.1.1, 10.10.2.2, 2001:a031:100a:dead:beef:1234:1234:1234, 127.0.0.1 应该成为 X-Forwarded-For: 2001:a031:100a:dead:beef:1234:1234:1234, 127.0.0.1 由于我不能相信任何来自外部的XFF头文件,我想丢弃除代理服务器看到的客户端IP以外的任何内容。 我的代理不支持修改XFF头,所以我需要在Varnish中完成。 当我可以与头文件交互时,Varnishstream中的第一点是在vcl_recv()中,此时Varnish已经将client.ip添加到了列表的末尾。 我希望使用正则expression式来捕获最后两个项目(IPv4或IPv6)到一个编号的捕获组($ 1),并简单地用捕获组replace头。 喜欢这个: vcl 4.0; import std; sub vcl_recv […]
我将NodeJS作为一种服务于AngularJS前端的Web应用程序服务器来运行。 他们仅通过WebSockets进行通信,使用Socket.IO的SailsJS实现。 在前端(客户端)和NodeJS后端之间,nginx作为代理,像这样configuration: server { listen 1337 ssl; location /socket.io/ { proxy_pass https://localhost:1338; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 到现在为止还挺好。 我现在想要监视和保护WebSocket连接。 特别是,我想防止XSS攻击,并排除试图暴力login到我的应用程序的IP。 我很新的东西,但经过一些研究,我遇到了fail2ban和nginx-naxsi这可能正是我所需要的。 但是,我不知道如何使他们与我的设置工作。 这甚至有可能吗? 我可以以某种方式拦截通过在代理中的WebSocket(是Nginx)隧道通信?
我们有一个在TCP套接字上侦听非HTTP请求的服务。 我们希望在它之前放置一个HTTP反向代理,使HTTP请求的主体作为整个请求被转发到TCP套接字。 我们已经看过用nginx做这个,但是它可以很容易地反向代理TCP -> TCP和HTTP -> HTTP ,但是我们还没有find任何方式来做HTTP -> TCP 。 是否有任何“开箱即用”的反向代理软件能够为我们做到这一点,还是我们需要build立一些自定义?
使用Apache 2.4.25(Windows)和后端服务器Tomcat 8(Windows)。 我们有一些客户端软件可以使用HTTPS在通过Apache代理到Tomcat的authentication会话上上传文件。 但是,如果未使用已validation的会话(或会话超时),则后端Tomcat服务器将发送HTTP 401响应。 但是,Apache向客户端返回502错误。 Tomcat访问日志: 127.0.0.1 – – [21/Apr/2017:18:30:38 +0000] "POST /upload/10507.wav HTTP/1.1" 401 39 Apache访问日志: 10.8.21.23 – – [21/Apr/2017:18:30:27 +0000] "POST /upload/10507.wav HTTP/1.1" 502 232 14030 Apache错误日志: [Fri Apr 21 18:30:39.770715 2017] [proxy:error] [pid 33652:tid 120896] (OS 10053)An established connection was aborted by the software in your host machine. : [client […]
我已经用这个脚本运行一个docker容器与下一个云形象(从这里https://hub.docker.com/_/nextcloud/ ): docker run \ –rm \ –detach \ –publish 54002:80 \ –name cloud.example.com \ –volume /srv/cloud.example.com/:/var/www/html \ nextcloud 我用nginx做了一个反向代理: server { listen *:80; server_name cloud.example.com; proxy_set_header Host cloud.example.com; location / { rewrite ^(.*)$ https://cloud.example.com$1 permanent; } } server { listen *:443 ssl http2; server_name cloud.example.com; proxy_set_header Host cloud.example.com; set $service_port 54002; set $service_ip 192.168.2.33; […]
在尝试让Let's Encrypt Certbot在托pipe反向代理内容的本地服务器上工作时,我无法在Location块中获取本地exception。 httpd.conf片段: SSLProxyEngine on <Location "/"> ProxyPass "https://internal.host/" ProxyPassReverse "https://internal.host/" </Location> Include /etc/apache2/vhosts.d/01_acme.include 在Location块的上面或下面放置01_acme.include文件不起作用。 01_acme.include文件: <Location /.well-known/acme-challenge/> ProxyPass "!" Alias /run/acme/.well-known/acme-challenge </Location> 我在一个名为date目录中放置了一个文本文件。 试图检索这个文件会导致无休止的301redirect到date/index.html/index.html/…直到达到客户端的redirect限制。 日志显示这是在前端服务器上生成的,后端从未收到请求。 如果我用独立的指令replace位置块,它的function如预期: Alias /.well-known/acme-challenge /run/acme/.well-known/acme-challenge ProxyPass /.well-known/acme-challenge ! 根据ProxyPass文档,这种定义exception的方法应该可以工作 – 它非常符合该部分末尾提供的示例configuration。 这是刚刚打破,还是我错过了什么? redirect可能是根本原因,但我不能在这个范围内find任何redirect或重写指令,可能会抛出一个301,并且在.htaccess (没有一个)或configuration文件中只提及index.html是目录索引,我已经尝试明确禁用Options -Indexes没有效果。
我有两台服务器: (A)反向Nginx代理,在内部或B路由请求 (二)meteor部署使用meteor1.2.11版(Nginx里面的Docker) 我有两个上游目的地,每个服务器上有一个: upstream remote-app { server 123.45.67.890:8080; } upstream local-app { server localhost:7000; } 如果我使用单独的服务器块,一切工作正常。 server { listen 80; server_name local.* local.myapp.com; access_log /var/log/nginx/local.myapp.access.log; error_log /var/log/nginx/local.myapp.error.log debug; error_page 404 /4xx.html; error_page 500 502 503 504 /5xx.html; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://local-app; […]
我工作的公司正在寻求从旧的FreeBSD安装升级他们的反向代理。 我们只是安装了Cisco IronPort设备来进行标准的网页过滤,我们非常喜欢这些工作的方式。 我们正在寻找类似的做反向代理。 要求是: configuration简单 易于集群function 速度 我没有明确的无限预算,但我正在寻找一个体面的解决scheme。 我正在寻找一系列的产品,这解释了为什么我没有包括任何统计数据。 感谢您的帮助, 安托万Benkemoun