在我将解释我的stream程之前的快速问题:mod_cache只有在max-age已过期的情况下才执行使用if-none-match的重新validation,以防其在逆向代理模式下configuration? 我的目标是减less一些重新validation请求到我们的原始服务器。 例如:第一个请求到达原始服务器,然后mod_cache根据头caching控制:max-age将响应保存到caching中。 只有当max-age过期时,mod_cache将使用if-none-match重新validation。 目前,无论是否定义了max-age,mod_cache都会重新validation每个请求。 我的configurationApache 2.4.3(Windows),在Linux上我看到了相同的行为,我将在下面显示。 ServerName proxy.lo ProxyRequestclosures ProxyPreserveHostclosures 标题集“接受,内容types,内容编码,接受语言” RequestHeader设置X-Forwarded-Proto“http” #修改用户代理的标题 标题集caching控制“私有,无caching,无存储,无变换” CacheQuickHandlerclosures CacheDefaultExpire 300 #原始服务器不提供上次修改 CacheIgnoreNoLastMod打开 CacheIgnoreCacheControl On #原始服务器定义caching控制:私有,不存储用户代理 #因此,我想忽略代理服务器上的这些头。 CacheStorePrivate On CacheStoreNoStore打开 CacheEnable磁盘/ CacheRoot“C:/Apache.Cache” CacheDirLevels 5 CacheDirLength 4 CacheMinExpire 15 CacheDetailHeader CacheHeader 保持closures ProxyPass / http://origin.lo/ ProxyPassReverse / http://origin.lo/ 此外,我已经打开debugging日志级别,看看mod_cache如何处理caching的内容:我提供这个来显示mod_proxy总是决定一个内容不新鲜。 为什么?我提供这个来显示mod_proxy总是决定一个内容不新鲜。 为什么? 最大年龄提供(见下文)。 [Sun Nov 04 11:58:42.899890 2012] [cache:debug] [pid […]
我们使用nginx作为反向代理从上游服务器获取文件。 这些文件不是dynamic的 – 至less不是基于每个请求的 – 并且(有时)在高延迟之后。 我想限制同一个URL的请求到1。 我想避免的一个例子是: 127.0.0.1 – – [03/Jan/2013:16:08:15 +0100] "GET /part-00132.ts HTTP/1.0" 200 1506068 "-" "Prefetch" "-" 127.0.0.1 – – [03/Jan/2013:16:08:28 +0100] "GET /part-00133.ts HTTP/1.0" 200 1189476 "-" "Prefetch" "-" 127.0.0.1 – – [03/Jan/2013:16:08:29 +0100] "GET /part-00133.ts HTTP/1.0" 200 1189476 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like […]
我的目标是编写Jasmine(一个JavaScript BDDtesting框架)testing,这个testing是由一个单独的团队构build的后端API。 我有一个运行在端口9000上的Jasmine服务器。该代码发出一个以/ web /开头的相对path的AJAX请求。 我希望这些请求被引导到后端。 到目前为止,我已经得到了一个逆向代理,像这样: upstream backend { server api-dev.example.com; } server { … location / { proxy_pass http://localhost:9000; … } location /web/ { proxy_pass https://backend/web/; … } } stream量到“/”工作正常,但AJAX请求(例如,到 http://localhost:50000/web/internal?action=network-statistics )502。 我相信这是正确的端点,但有一个SSL错误。 Nginx的错误日志似乎证实了我的怀疑: 2013/12/13 16:55:28 [error] 1885#0: *257 SSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream, client: 127.0.0.1, server: […]
我正在寻找Windows的工具,可以作为服务器前面的反向代理来引入各种networking问题,如抖动,延迟或丢包。 我的首选是在Windows上工作的软件解决scheme。 Httpd mod_proxy似乎不支持这样的configuration,并且在这个类别中使用Googlesearchfunction是徒劳的。
我想使用nginx作为caching逆向代理。 我也有一个特殊的要求,我认为可以用nginx来完成。 我使用Amazon S3作为原始服务器,并使用已签名的URL来保护内容。 因此,每个用户都会获得一段时间后过期的唯一url。 即使每个用户都有一个唯一的URL,为了让nginxcaching内容,我将caching键定义为仅包含请求文件名(参见下面的configuration)。 那到目前为止工作很好。 问题是,如果请求的URL将是无效的,因为查询string中的签名太旧或无效,服务器无论如何传递文件。 因为它被caching。 我确认了最初的请求必须包含有效的签名。 如果用户请求中的signture无效,nginx无法从服务器上获取(当然)。 现在我想要的是在每个请求上重新查找文件。 此重新查找应该与用户指定的URL一起进行。 如果请求成功,则应该传递caching的文件。 这正是使用Cache-control: must-revalidate应该完成的行为Cache-control: must-revalidate 所以我在我的原始服务器(amazon s3)上configuration了这个头文件。 然后我意识到,nginx并没有相应的行为。 所以文件直接从caching中传递而不需要与原始服务器进行validation。 因此,不好的签名不被识别,用户可以下载。 问题1:在这种情况下,有没有办法让nginx获得必须重新validation的头文件? 这是我的configuration文件 proxy_cache_path /home/sbgag/cache keys_zone=MYZONE:10m inactive=365d max_size=10g; server { listen 80; server_name test.mydomain.com; location / { proxy_pass http://s3-eu-west-1.amazonaws.com; proxy_set_header Host s3-eu-west-1.amazonaws.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_key "$request_filename"; more_set_headers "X-My-Proxy-Cache-Key $request_filename"; more_set_headers […]
我正在构build一个架构,将托pipe各种服务,可以单独监听不同数量的可能是混合协议的端口。 我想将这些服务映射到唯一的子域,并将外部端口的代理入站请求反向到相应的内部端口。 目前我正在使用安装了TCP模块的Nginx。 这给了我http和tcp的支持。 不过我刚刚发现Nginx不支持UDP。 这似乎也许与我可以支持UDP的自定义模块,但这是一个单独的问题。 我也有使用Nginx模块将多个TCP服务映射到子域的问题。 我希望有另一个代理解决scheme,可能更适合这个。 或者是工具的组合。 编辑:我发现唯一可能适合这个angular色是: http : //freecode.com/projects/proxymini http://aluigi.altervista.org/mytoolz.htm#proxymini 但我不能告诉它的unix友好或仅窗口,可能不是一个反向代理
我正在用Ubuntu 12.05.5 LTS和Apache 2.2.22运行一个小型Web服务器,最近遇到这个问题: 对于虚拟机上的IIS服务器,我有以下反向代理configuration: <VirtualHost *:443> SSLEngine on DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.1 allow from 192.168. allow from 10.8.0 </Directory> … ProxyRequests Off ProxyPreserveHost On ProxyVia On SSLProxyEngine on <Location /AutodeskDM> Order Deny,Allow Deny from all Allow from 192.168. ProxyPass https://10.8.0.131/AutodeskDM ProxyPassReverse https://10.8.0.131/AutodeskDM […]
我正在尝试在代理Oracle应用程序的反向代理上添加客户端证书身份validation。 在添加之前,如果我删除后续代码,oracle应用程序能够启动java,加载并正常工作。 当我在整个代理(因为它只是代理这个应用程序)或特定的位置添加检查时,java应用程序不会加载。 这些是附加的行: SSLVerifyClient需求 SSLVerifyDepth 1 SSLOptions + FakeBasicAuth validation工作正常,漂亮; 只是添加检查停止加载应用程序,不知道为什么。 任何帮助都是极好的 新信息: 我能够解决我的问题与握手失败(这是一个拼写错误,我没有注意到,所以检查失败)。 现在我遇到了: java.lang.ClassNotFoundException:oracle.forms.webutil.common.RegisterWebUtil 在sun.plugin2.applet.Applet2ClassLoader.findClass(未知来源) 在sun.plugin2.applet.Plugin2ClassLoader.loadClass0(未知来源) 在sun.plugin2.applet.Plugin2ClassLoader.loadClass(未知源) 在sun.plugin2.applet.Plugin2ClassLoader.loadClass(未知源) 在java.lang.ClassLoader.loadClass(Unknown Source) 在sun.plugin2.applet.Plugin2ClassLoader.loadCode(未知来源) 在sun.plugin2.applet.Plugin2Manager.initAppletAdapter(未知来源) 在sun.plugin2.applet.Plugin2Manager $ AppletExecutionRunnable.run(未知来源) 在java.lang.Thread.run(Unknown Source) 基本的:load:oracle.forms.webutil.common.RegisterWebUtil找不到。 java.lang.ClassNotFoundException:oracle.forms.webutil.common.RegisterWebUtil 在sun.plugin2.applet.Applet2ClassLoader.findClass(未知来源) 在sun.plugin2.applet.Plugin2ClassLoader.loadClass0(未知来源) 在sun.plugin2.applet.Plugin2ClassLoader.loadClass(未知源) 在sun.plugin2.applet.Plugin2ClassLoader.loadClass(未知源) 在java.lang.ClassLoader.loadClass(Unknown Source) 在sun.plugin2.applet.Plugin2ClassLoader.loadCode(未知来源) 在sun.plugin2.applet.Plugin2Manager.initAppletAdapter(未知来源) 在sun.plugin2.applet.Plugin2Manager $ AppletExecutionRunnable.run(未知来源) 在java.lang.Thread.run(Unknown Source) 如果我删除在post中提到的代码片段,特别是SSLVerifyClient没有或可选,一切都工作。 我也不能将config = webutil添加到我正在使用的链接的末尾,因为它已经指定了一个configuration。
我有 # For blog LoadModule proxy_html_module libexec/mod_proxy_html.so LoadModule ssl_module libexec/mod_ssl.so LoadModule xml2enc_module libexec/mod_xml2enc.so SSLProxyEngine on ProxyRequests off ProxyPass /blog https://xxxx.wordpress.com ProxyPassReverse /blog https://xxxx.wordpress.com ProxyHTMLEnable On ProxyHTMLURLMap https://xxxx.wordpress.com /blog <Location /blog> ProxyPassReverse / ProxyHTMLEnable On ProxyHTMLURLMap / /blog RequestHeader unset Accept-Encoding #LogLevel proxy:debug </Location> 遵循以下指南: https://devcenter.heroku.com/articles/custom-php-settings#using-a-custom-application-level-apache-configuration http://www.apachetutor.org/admin/reverseproxies https://httpd.apache.org/docs/trunk/mod/mod_proxy.html 当我访问URL http://www.xxxx.com/blog/时,它不会替代锚链接https://xxxx.wordpress.com/2015/09/16/hello-world/ with / blog。 它在本地工作,但不在生产中。 以下是通过代理并出现在浏览器中的HTML示例: <h1 […]
一个客户端有一个服务,需要一点点的JavaScript被添加到客户的页面。 作为展示潜在客户的营销工具,我创build了一个Web应用程序,演示客户的页面将如何与我的客户的JavaScript看起来。 这很酷,销售团队喜欢它! 该应用程序使用反向代理(mod_proxy),使客户的网站似乎是我们的域名,所以应用程序可以添加JavaScript没有跨站点脚本的限制。 现在仅限于授权用户。 这个设置运行良好 – 也许太好了! 现在,首席执行官想把这个工具从主页上提供给任何人。 但是,众所周知, 打开反向代理几乎普遍不好。 有没有什么办法可以让这个演示程序成为可能? 也就是说,它会使垃圾邮件发送者和黑客无用,但能够向潜在客户展示几个演示页面? 我有一些想法 每个IP地址每小时只允许X个文件被代理。 仅限于处理GET请求 不要设置cookie 将域名黑名单保留为代理(按点击付费广告服务器) 将警告注入页面内容(“这不是XYZ服务器”),然后由我的应用程序脚本删除。 任何其他的想法,或者这是一个傻瓜的差事?