服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

如何configurationApache的mod_proxy_html作为一个Ajax代理?

我试图build立一个网站,让您查看和操纵任何其他网站的任何网页的数据。 要做到这一点,我必须绕过“ Allow Origin ”的问题:我加载其他域的内容在iframe ,我必须从我的域下载的JavaScript操纵其内容。 我的第一个尝试是自己编写一个简单的代理,通过一个以Java编码的服务器代理来请求其他域的页面,它不仅服务于内容,而且还重build内容中的链接(src和href),以便这些链接所引用的内容得到通过我的手工代理下载。 结果是不错,但在css和脚本中的URL的问题。 那么,我意识到mod_proxy_html应该完成所有这些工作。 问题是,我不知道如何使其按预期工作。 让我们假设我的服务器运行在my-domain.com,并代理和转换来自另一个域的内容我会提出这样的请求: my-domain.com/proxy?url=http://another-domain.com/some/content 我希望mod_proxy_html提供内容,并通过以下方式在http://another-domain.com/some/content中重写以下URL: 不是来自another-domain.com绝对url:不重写 相对于根url: /other/content – > /proxy?url=http://another-domain.com/other/content 相关url: other/content – > /proxy?url=http://another-domain.com/some/content/other/content 相对于父url: ../other/content – > /proxy?url=http://another-domain.com/some/other/content 该url应该在运行时指定,而不是configuration时间。 这可以通过mod_proxy_html来实现吗? 任何人都可以提供一个简单的工作configuration开始? 编辑1-第一种方法 下面的网站configuration可以正常使用绝对url的网站,比如http://www.huffingtonpost.es/ 。 你可以试试这个configuration在本地主机上: http://localhost/asset/http://www.huffingtonpost.es/ <VirtualHost *:80> ServerName localhost LogLevel debug ProxyRequests off RewriteEngine On RewriteRule ^/asset/(.*) $1 [P] ProxyHTMLURLMap $1 /asset/ <Location […]

当内存占用过多时自动挂起/hibernate进程

我正在使用16GB内存的8核PC上运行一个小型的Debian计算集群。 我正在运行大约1k个任务的批次(每个批次总共有一个月的预计完成时间)。 一个任务是单线程的(所以我可以在每台PC上并行运行多个),不会消耗太多的IO(在启动时加载几兆字节的数据,在退出时转储数兆字节的数据;不与外部通信否则),其运行时间是未知的(从几分钟到几周),其内存消耗是未知的(从几兆字节到8GB;使用可能增长缓慢或快速)。 我想尽可能在​​单台PC上同时完成多项任务,但是我想避免过多的交换。 所以我有一个想法:我可以监视这些任务的内存使用情况,并暂停( kill -SIGSTOP )或hibernate(使用类似CryoPID的工具)任务,这些任务会消耗太多的内存以便稍后重新启动。 内存使用量是指“活动虚拟页面”的数量,或者实际上已经被触摸的已分配但不是共享的内存页面的数量(这些任务可以在不使用它们的情况下分配内存)。 我开始寻找一些工具来做到这一点。 我知道我可以在限制内存的cgroup中限制或运行任务,但是如果我正确理解这些任务,这些解决scheme将会终止进程,而不是暂停进程。 我想避免杀死他们,因为我需要从头开始,这意味着浪费时间。 而且,他们实际上不能测量活动虚拟页面的数量。 我可以使用真正的虚拟机,但是在这种情况下它们似乎具有相当大的开销 – 具有单独的内核,内存分配等会减less可用内存; 我必须运行其中的8个。 而且,据我所知,他们也会增加计算开销。 我想象一个实现这种行为的工具会把一些函数连接到一个页面错误通知,它会决定每个页面错误是否是暂停过程的时间。 但我不知道任何可以这样工作的工具。 还有其他的select吗?

BIND从站不会与主站同步,直到重新启动

我有两台运行BIND9的DNS服务器,一台主机和一台从机。 当区域文件在主服务器上更新时,我想让从服务器立即开始服务更改的logging,但是BIND给了我一些guff。 主区域和从区域之间的DNS区域传输已经正常工作。 我可以login到从服务器并运行dig @dnsmaster myzone. AXFR dig @dnsmaster myzone. AXFR并打印出该区域的全部内容。 为了做到这一点,DNS主服务器configuration了notify yes和also-notify { dnsslave } 。 同样,从站configuration了allow-transfer { dnsmaster } 。 当dnsmaster更新时,我运行rndc reload ,它告诉我通知正在发送。 这在slave上通过检查/var/named/slavedata/ 。 他们包含最新的数据,匹配主人所知道的。 现在来了怪异的一部分。 从属服务器将继续提供旧的,陈旧的DNSlogging,完全忽略在主服务器收到通知后磁盘上有新数据的事实。 我正在用dig命令检查结果: dig @slaveserver record.zone.tld 。 我以为BIND可能会保留其权威区域的内存caching,所以我设置max-cache-size和max-cache-ttl为0,但是没有效果。 我尝试了其他方法来刷新这个所谓的caching,通过在从服务器上运行诸如rndc flush和rndc reload类的命令,但它仍然返回旧的陈旧logging。 最后,我注意到该区域的MINTTL被设置为86400(24小时),所以我暂时将MINTTL改为15秒,然后重新启动从属服务器。 没有效果 – 从属服务重新启动后,只会提供更新的DNS结果。 这里发生了什么? 当接收到区域更新的通知时,BIND9的预期行为是什么? 它是否始终尊重TTL和MINTTL ? 我会假设它总是使用最新的可用数据。 在我的机智的结尾,我正在考虑设置一个crontab来重新启动BIND奴隶小时,只是为了避免提供陈旧的数据。 有更好的吗?

使用nginx负载均衡服务器重复POST请求(状态499)

双重上传 自从我们从一个简单的Apache实例转到一个负载均衡的环境之后,有时POST请求会重复出现问题。 我们运行nginx作为反向代理。 静态内容由nginx自身提供,dynamic内容由两个Apache后端提供。 我检查了它不是一个接口/用户错误。 一个小例子:一个简单的图片上传将导致图片上传两次。 请求/ POST不会通过双击或用户失败发送两次。 我还没有find任何证据表明浏览器发送请求两次,所以我怀疑是在服务器端。 (请注意,这只是怀疑。)这些请求中的大多数是内部的,这意味着它们来自员工,所以我可以validation它们是如何发生的。 我唯一能find的错误是nginx会在这些情况下logging一个499错误。 但是,我不确定这是问题的原因还是(侧面)影响。 (我知道499不是默认的http状态,这是一个nginx状态,意思是“客户端已经closures了连接”) 要求 重复的POST请求几乎是所有可能需要一段时间的请求。 我在这里展示的一个例子是一个简单的图片上传,但脚本在后台做了一些东西(图片必须被转换成不同的格式/大小,并且应该分发到两个服务器等)。 日志 一个例子是上传图片。 nginx会logging一个'499'和一个200请求,但是Apache正在接收(和处理!)两个请求。 阿帕奇 [17:17:37 +0200] "POST ***URL** HTTP/1. 0" 200 9045 [17:17:47 +0200] "POST ***URL** HTTP/1. 0" 200 20687 nginx的 [17:17:47 +0200] "POST ***URL** HTTP/1.1" 499 0 [17:17:52 +0200] "POST ***URL** HTTP/1.1" 200 5641 猜疑 在我看来,更大/更慢的上传遭受这个更多,所以我怀疑超时。 我试图读到499错误:结论似乎是“客户端closures”。 在后台可能会出现这种情况,但我不确定这是否意味着应该发出第二个请求,并且确实没有像“用户closures的浏览器”这样的事情发生。 […]