Articles of 反向代理

我如何平稳地将Web服务器的DNS从一个IP地址迁移到另一个IP地址?

我目前有一个域名注册了Linux / Apache服务器,我将用另一个新的IP地址replace。 迁移数据将相对较快,在此过程中可能会中断5分钟。 DNSlogging显然有6-12小时的TTL,我无法加速。 这种改变可能会带来什么后果? 据推测,仍在查看旧地址的用户将继续击中旧服务器,而DNS域名服务器的用户已过期或为空则会看到新域名。 是否有可能从旧服务器(使用Apache或iptables)到新IP进行某种redirect? 旧服务器可以继续运行,只要有必要。

反向代理到不适合重定位到子目录的URL的解决scheme

短篇故事 尔加! 我希望做过pipe理界面的开发者会暴露一个“webroot = / myAppAppearsHere”选项,或者使所有的链接都是相对的。 很长的故事 我有一个pipe理门户网站的客户,基本上是一个Apache的mod_authlogin,然后一系列链接到后端pipe理页面就像这样; https://portal.mysite.com/login https://portal.mysite.com/ 然后像这样的一堆链接 https://portal.mysite.com/monitoring -> https://nagios.localdomain/nagios https://portal.mysite.com/munin -> https://munin.localdomain/nagios https://portal.mysite.com/bacukups -> https://backups.localdomain/backups 然而有几个应用程序真的不满意被反向代理到一个子目录,例如chef-server-webui和logstash web界面。 ProxyPassReverse将重新映射头,但所有内部的绝对URL需要被改变,如果在应用configuration中没有这个选项,那么这个必须被强制到HTML响应中。 明显的策略是创build子域或通配符子域来映射到这样的应用程序, https://chef.mysite.com/ -> https://chefserver.localdomain:4040/ https://logstash.mysite.com/ -> https://logstash.localdomain/ https://*.mysite.com/ -> https://($1).localdomain/ 但不幸的是,我不能控制域名的pipe理,获得这些添加是可能的,但是一个痛苦。 (但我更喜欢一个解决scheme,不需要第三方参与每个新的链接)(我知道一个通​​配符会解决这个问题,但我有兴趣看到基于HTTP和Apache的替代scheme。 ..为了学习等;-) 所以我已经转向使用类似于mod_proxy_html的Apache2 :: ModProxyPerlHtml ,并允许在文档中dynamic重新映射string。 这实际上确实与LocationMatch和ProxyHTMLRewrite的一些组合工作,我甚至可以让JavaScript发挥很好。 然而,每个人做一个巨大的痛苦,特别是对于任何非web 1.0应用程序。 例如,下面几乎可以修复logstash在/ logstash下正常工作; <LocationMatch "^/logstash/"> RequestHeader unset Accept-Encoding PerlSetVar ProxyHTMLVerbose "On" PerlInputFilterHandler Apache2::ModProxyPerlHtml […]

反向代理背后的WordPress

我们的组织正在重build它的网站。 有人在新的服务器上build立了新的站点。 可以在/ etc / hosts中input条目后访问它。 当以这种方式访问​​时,完美的作品。 但是由于大多数参与者都不太擅长电脑,所以我决定设置一个反向代理。 我没有访问该网站,也没有服务器女巫主办。 我有一个WordPress的编辑器帐户安装在那里。 我已经在我的私人服务器的/ etc / hosts中设置了一个条目,并使用以下configuration设置了反向代理服务器,我的服务器在Debian stable下运行apache-2.2: <VirtualHost *:80> ServerName xxx.xxx.xxx.xxx ProxyRequests off ProxyPass /some/prefix/ http://site.example.com/ ProxyPassReverse /some/prefix/ http://site.example.com/ ProxyHTMLURLMap http://site.example.com/ http://xxx.xxx.xxx.xxx/some/prefix/ <Location /some/prefix/> SetOutputFilter INFLATE;proxy-html;DEFLATE ProxyHTMLURLMap http://site.example.com/ /some/prefix/ </Location> ProxyPassReverseCookieDomain site.example.com xxx.xxx.xxx.xxx ProxyPassReverseCookiePath / /some/prefix/ ProxyHTMLExtended On </VirtualHost> 几乎一切正常。 我无法创build新post(文本编辑器无法正常加载)。 Iceweasel的(Firefox)开发者模式说: (…) [00:13:33.365] GET http://xxx.xxx.xxx.xxx/some/prefix/wp-includes/js/tinymce/langs/pl.js?wp-mce-4107-20141130 [HTTP/1.1 […]

Nginx应该位于HAProxy的前端还是相反?

我在网站基础架构devise方面没有经验。 我知道这可能是具体情况。 该网站应该: 1)需要某些页面(例如login页面)的HTTPS支持,而其他页面只是HTTP页面。 2)需要多个Web服务器,以便需要一些负载平衡。 3)需要HTTPcaching和压缩来提升性能。 4)一些请求(例如图像上传)应该被路由到专用的后端服务器。 所以,基于URL的平衡是必需的。 我知道Nginx和HAProxy都是很好的开源反向代理和/或负载平衡器。 由于HAProxy不支持SSL,而Nginx负载平衡不如HAProxy。 我将采取两个。 那么,我应该把Nginx(作为反向代理)放在HAProxy(作为负载平衡器)的前面,还是相反? 谢谢

如何在使用Real-IP时logging$ remote_addr的原始值

我的环境具有通过多个系统的用户请求: [客户端] – > [ELB] —> [nginx] – > [网页] (ELB = AWS Elastic Load Balancer) 感谢这个答案 ,我有nginx确定并通过X-Forwarded-For和X-Real_IP头将正确的客户端IP地址传递给上游服务器(web)。 相关的nginxconfiguration: real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; proxy_set_header X-Real-IP $remote_addr; 我的问题是,nginx中的真实IP模块用其X-Forwarded-For计算结果replace现有的$remote_addrvariables。 这给了我最初的客户端IP,但是我正在丢失实际发送请求到代理(即ELB)的系统的IP地址。 总的来说,拥有客户端IP对我来说更为重要,但是我希望能够logging完整的请求链,以便我能够理解(并debugging)stream量是如何stream动的。 目前,我只能有nginxlogin客户端IP,自己的IP,以及上游服务器IP。 我希望能够loginELB IP。 我看到X-Istence在2013年问了同样的问题 ,运气不多。 从那以后有什么改变或改进?

ProxyPass整个域到Tomcat,包括root

我已将VirtualHost example.comconfiguration为将所有请求都委托给Tomcat服务器 ProxyPass / http://localhost:8088/app ProxyPassReverse / http://localhost:8088/app 这适用于像example.com/page这样的URL,但是对于example.com和example.com/,我得到这个redirect响应,这显然导致什么都没有。 HTTP/1.1 302 Moved Temporarily Date: Wed, 06 Jul 2011 21:13:37 GMT Server: Apache-Coyote/1.1 <– the redirect comes from tomcat Location: http://example.com/app/ <– nonsense … 我能做些什么来解决它? 最好在Apacheconfiguration中。 我正在使用Apache 2和Tomcat 7

是否有可能取代通过代理传递的每个页面上的内容,类似于如何使用mod_rewrite URL?

是否有可能取代通过代理传递的每个页面上的内容,类似于如何使用mod_rewrite URL? 替代文件不清楚。 我有一些页面我是反向代理,有绝对path。 这打破了网站。 他们需要更换和像mod_rewrite这样的工具不拾起它们,因为它们不是URL请求。 <VirtualHost *:80> ServerName servername1 ServerAlias servername2 ErrorLog "/var/log/proxy/jpuat_prox_error_log" CustomLog "/var/log/proxy/jpuat_prox_access_log" common RewriteEngine on LogLevel alert rewrite:trace2 RewriteCond %{HTTP_HOST} /uat.site.co.jp$ [NC] RewriteRule ^(.*)$ http://jp.uat.site2uk.co.uk/$1 [P] AddOutputFilterByType SUBSTITUTE text/html Substitute "s|uat.site.co.jp|jp.uat.site2uk.co.uk|i" ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://uat.site.co.jp/ ProxyPassReverse / http://uat.site.co.jp/ </VirtualHost> 上述两种方法都不能替代HTMLstring <link href="//uat.site.co.jp/css/css.css […]

如何防止nginx从反向代理特定的子目录

在Apache上,您可以使用ProxyPass除了一个或多个子目录(使用“!”)。 ProxyPass /subdir ! ProxyPass / http://localhost:9999/ 什么是Nginx的等价物? 我的第一个猜测显然不起作用: location /subdir { root /var/www/site/subdir; } location / { proxy_pass http://localhost:9999/ ; }

Nginx反向caching301redirect(永久)

是否有可能让Nginxcaching所有301redirectproxy_pass请求? 例如: 请求#1:客户端A请求/某些/path – >发送到proxy_pass – >导致301redirect到/some/other/path – > nginxcaching这个响应,因为它是301redirect。 请求#2:客户端B请求/ some / path – > nginx返回caching301redirect到/some/other/path 。

一些nginx反向代理configuration每天停止工作一次

我有一个nginx反向代理服务器,它将来自外部亚马逊ELB的请求代理到内部ELB。 我有6个后端实例处理请求。 站点启用configuration看起来像这样,但有不同的端口号和proxy_pass。 其他一切都是一样的: server { listen 3000; location / { proxy_pass http://internal-prod732r8-PrivateE-1GJ070M0745TT-348518554.eu-west-1.elb.amazonaws.com:3000; include /etc/nginx/proxy.conf; } } 每24小时一次configuration停止工作。 所有其他代理工作正常。 如果我重新启动nginx,所有configuration再次工作。 error.log中没有任何内容,访问日志,系统日志或dmesg中没有什么奇怪的。 这个东西是已知的吗? 我的代理configuration有问题吗? 有没有其他的日志我可以看?