我想通过非 SSL 站点代理来自 SSL 站点的请求。我的 Apache httpd.conf 如下所示:
<VirtualHost 1.2.3.4:80>
ServerName foo.com
ProxyPass / https://bar.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
因此,当我访问http://foo.com 时,我希望 apache 向https://bar.com发出请求并将其获取的页面发送给我。
相反,我收到了 500 错误,在错误日志中,我看到:
[error] proxy: HTTPS: failed to enable ssl support for 4.3.2.1:443 (bar.com)
Run Code Online (Sandbox Code Playgroud)
大概我在这里遗漏了一个指令。可能是哪个?
别介意安全隐患。我完全理解其中的风险。
我遇到过这样的情况,客户端需要将一组不到 100 万个单独的 IP 地址(无子网)列入黑名单,并且网络性能是一个问题。虽然我猜想 IPTables 规则对性能的影响比路由小,但这只是猜想。
有没有人有任何确凿的证据或其他理由支持 IPTables 或空路由作为将长 IP 地址列表列入黑名单的解决方案?在这种情况下,一切都是自动化的,因此易用性并不是真正的问题。
经过一些测试和开发,这些选项似乎都不可行。似乎路由查找和 iptables 都通过规则集进行线性搜索,并且处理这么多规则花费的时间太长。在现代硬件上,将 100 万个项目放入 iptables 黑名单会使服务器减慢到每秒大约 2 打数据包。所以IPTables和空路由都出来了。
ipset,正如 Jimmy Hedman 所推荐的那样,会很棒,只是它不允许您在一组中跟踪超过 65536 个地址,因此除非有人有任何想法,否则我什至无法尝试使用它。
显然,阻止这么多 IP 的唯一解决方案是在应用程序层中进行索引查找。不是这样吗?
更多信息:
此实例中的用例是阻止 IP 地址的“已知违规者”列表访问 Web 服务器上的静态内容。FWIW,通过 Apache 进行阻塞Deny from同样缓慢(如果不是更慢),因为它也进行线性扫描。
仅供参考:最终的工作解决方案是将 apache 的 mod_rewrite 与 berkeley DB 映射结合使用来对黑名单进行查找。伯克利数据库的索引性质允许列表以 O(log N) 性能扩展。
给定如下内核堆栈跟踪,您如何确定发生问题的特定代码行?
kernel: [<ffffffff80009a14>] __link_path_walk+0x173/0xfb9
kernel: [<ffffffff8002cbec>] mntput_no_expire+0x19/0x89
kernel: [<ffffffff8000eb94>] link_path_walk+0xa6/0xb2
kernel: [<ffffffff80063c4f>] __mutex_lock_slowpath+0x60/0x9b
kernel: [<ffffffff800238de>] __path_lookup_intent_open+0x56/0x97
kernel: [<ffffffff80063c99>] .text.lock.mutex+0xf/0x14
kernel: [<ffffffff8001b222>] open_namei+0xea/0x712
kernel: [<ffffffff8006723e>] do_page_fault+0x4fe/0x874
kernel: [<ffffffff80027660>] do_filp_open+0x1c/0x38
kernel: [<ffffffff8001a061>] do_sys_open+0x44/0xbe
kernel: [<ffffffff8005d28d>] tracesys+0xd5/0xe0
Run Code Online (Sandbox Code Playgroud)
虽然我可以轻松找到函数调用——但将__link_path_walk加上偏移量转换为实际行号是困难的部分。
假设这是针对标准发行版提供的内核,我知道其确切版本和内部版本号,那么获取必要元数据并进行相应查找的过程是什么?
我注意到e安装在 ext4 文件系统上的 Linux 机器上的几个文件/目录的属性。
[kelly@p2820887.pubip.serverbeach.com ~]$ lsattr -d /bin
-------------e- /bin
Run Code Online (Sandbox Code Playgroud)
根据chattr(1):
'e' 属性表示该文件正在使用范围来映射磁盘上的块。不能使用 chattr(1) 删除它。
这有什么不同,更重要的是,这个细节在什么方面很重要——特别是为什么这个细节足够重要以作为文件属性报告?在什么情况下我应该根据这个文件“正在使用范围来映射磁盘上的块”的知识来改变我的行为?想必这是我需要知道的,不然也不会说的这么明显吧?
许多著名的 Windows 备份实用程序使用内置于较新版本 Windows 的卷影复制服务来创建磁盘的时间点快照,以便安全地备份打开的文件。
但是这种机制在 SQL Server 上的表现如何?我知道存在 SQL Server VSS Writer 以帮助备份系统与 SQL Server 互操作,但并非所有备份系统都了解 SQL Server 并利用它提供的与备份相关的 API。
所以我的问题是,那些对 SQL Server 一无所知的程序呢?
他们大概会获得 MDF 和 LDF 文件在某个时刻存在的时间点快照。并且大概 SQL Server 数据格式足够健壮,可以保证这样的快照是一致和可用的。
这是事情的运作方式,还是我错过了什么?使用这种备份机制是否存在“问题”,或者我会安全吗?
我正在研究在 VM 使用中使用文件与分区来存储虚拟磁盘映像之间的差异。的常识是,基于分区的图像是不是因为一个基于文件的图像更快的开销降低。这是有道理的,但我从未见过任何实际数字。
我自己的测试证实了不同的结果。当我标杆直接到分区的虚拟磁盘,然后格式化ext4的是同一个分区,创建存储上的ext4文件系统上的虚拟磁盘映像,然后基准说,我看不出有任何加速在所有的直接到分区的虚拟盘。相反,在某些系统上,基于文件的映像甚至更快(可能是由于主机操作系统缓存或类似的原因)。该测试在许多系统上重复多次,结果相当一致。
因此,也许抛开性能理由,使用分区而不是虚拟磁盘映像是否仍然被认为更好?直接分区访问比图像文件更好还有其他原因吗?
或者也许有什么理由反过来?也许是原始分区映像无法获得的一种虚拟磁盘文件格式的优势?
virtualization linux performance virtual-machines kvm-virtualization
如果域及其名称服务器不共享 TLD,胶水记录通常不可用,如果它们不共享相同的二级域,则技术上不需要,这可能导致解析域的额外步骤。解析器必须首先查找名称服务器的地址,然后才能找到您的域的地址。但从理论上讲,您可以在其中添加更多步骤,而不仅仅是这两个步骤。
这里的问题是,这条链允许有多长?
如果xyz.com使用 nameserver ns1.xyz.info,
然后xyz.info使用 nameserver ns1.xyz.co,
然后xyz.co使用 nameserver ns1.xyz.cc,
然后xyz.cc使用 nameserver ns1.xyz.co.uk,...等等
...在解析器解析您最初想要的名称之前,您可能会得到一个很长的链供解析器解开。
大概有一个实际限制——BIND 应该只愿意遍历这么多链接,否则可能会出现拒绝服务。但是有官方限制吗?官方不需要解析器继续进行的某些步骤?
我想在 Linux 下每次插入驱动器时自动运行我自己的命令(例如,包括 USB 驱动器)。显然,最简单的解决方案是定期轮询和检查 /proc/partitions 或 /dev/disk 的更改,但我希望有比这更优雅的东西。
编辑
我知道这是可能的,因为 GNOME 就是这样做的;每当插入新驱动器时,GNOME 都会运行它自己的“自动播放”机制来执行某些操作。(“您要查看此 SD 卡上的图片吗? ”)
我可以想出两个用途:第一个是在我管理的 Amazon EC2 集群中,自动检测和初始化新连接的 EBS 存储卷。
另一种用法是在基于 Linux 的家庭文件服务器设备上;当我将 SD 卡插入设备时,它应该安装卡,将卡中的图片移动到内部硬盘驱动器上,卸载卡,然后发出哔声让我知道它已完成。
我们有一项政策,即出于 CYA 目的与我们的客户记录所有 SSH 会话活动。使用 Windows 下的 PuTTY,这是微不足道的,因为我们可以使用 PuTTY 的内置日志记录工具将每个会话记录到一个文件中。但是当在 Linux 工作站上工作时,就没有那么简单了。
请注意,服务器端日志虽然由于其他原因很重要,但并不是我们在这里所做的工作的一部分。这些会话日志仅供我们自己参考。
到目前为止,我们已经研究了以下选项:
日志记录需要完全自动化,理想情况下我们希望能够将不同的会话分离到单独的文件中。
有关的:
我想显示单个进程及其当前子进程的列表。因此,给定以下进程树:
想象一下以下流程清单:
PID TTY STAT TIME COMMAND
2 ? S 0:00 [kthreadd]
3 ? S 0:06 \_ [ksoftirqd/0]
...snip...
1292 ? Ss 0:06 /usr/sbin/gpm -m /dev/input/mice -t exps2
1426 ? Ss 0:00 /usr/lib/postfix/master
9785 ? S 0:00 \_ qmgr -l -t fifo -u
12301 ? S 0:00 \_ pickup -l -t fifo -u -c
1545 ? Ss 0:05 /usr/sbin/apache2 -k start
1570 ? S 0:00 \_ /usr/sbin/apache2 -k start
...snip...
Run Code Online (Sandbox Code Playgroud)
我只想显示进程 1426 及其子进程。像这样:
PID TTY STAT TIME COMMAND
1426 ? …Run Code Online (Sandbox Code Playgroud) linux ×6
apache-2.2 ×1
attributes ×1
autorun ×1
backup ×1
blacklist ×1
debugging ×1
ext4 ×1
filesystems ×1
iptables ×1
kernel ×1
logging ×1
performance ×1
proxy ×1
proxypass ×1
rfc ×1
route ×1
sql-server ×1
ssh ×1
ssl ×1
vss ×1
windows ×1