小编Sha*_*den的帖子

正则表达式负前瞻不适用于不同 Apache 版本之间的 mod_rewrite

我有一个在 Apache 2.2 下工作的 mod_rewrite 行,但不在 Apache 1.3 下:

RewriteRule     ^(?!index.php)(?!skin/)(?!js/)(.+)      /index.php?file=$1              [NC,L]
Run Code Online (Sandbox Code Playgroud)

如果我丢失了括号之间的负前瞻组件,我将丢失 500 状态代码。GoDaddy 不会为这个客户端的包升级 httpd(叹气),所以有没有人有一个可以在 1.3 中工作的解决方案(而且不会乱:P)?或者甚至更好,谁能解释这里可能发生的事情?我保持好奇只是因为我找不到关于 1.3 中使用的 Perl 正则表达式引擎的任何信息,不支持负前瞻......

mod-rewrite regex apache-1.3

6
推荐指数
1
解决办法
7754
查看次数

通过 iPhone 应用程序提交带有图像数据的 POST 请求时禁止 403

我正在创建一个 iOS 应用程序,它允许用户通过 POST 请求将图像/文本数据发送到我的网络服务器。当请求中不包含图像数据时,我成功地将 POST 发送到服务器。每当我使用图像数据进行 POST 时,服务器都会回吐一个403 forbidden. 我尝试将以下内容添加到脚本目录中的 .htaccess 文件中,但没有成功:

Options +Indexes FollowSymLinks +ExecCGI
Order allow,deny
Allow from all
Run Code Online (Sandbox Code Playgroud)

Web 浏览器和 Android 设备可以成功地将图像数据 POST 到脚本,唯一不能的设备是 iPhone。

将数据发布到其他托管服务提供商按预期工作 - 这只是这个主机 (ipowerweb.com)。

我注意到当我尝试将数据发布到服务器上的任何脚本时,它会返回一个403 forbidden. 另一个注意事项:我可以成功发布到由 ipowerweb 托管的另一台服务器,但我的似乎无法处理。

我的房东已尝试解决该问题,但无法解决,并且他们已将其标记为“已解决”,因此他们不再提供帮助。我希望让这个主机保持移动会很痛苦 - 作为最后的手段我会更换主机,所以请帮助我!

为什么只有当我通过 iPhone 应用程序提交数据时才会收到此 403 禁止错误?

如何解决此问题以便我可以成功发布数据?

任何关于我能做什么的建议将不胜感激。

编辑:作为请求,这里是响应头:

{
    Connection = close;
    "Content-Length" = 217;
    "Content-Type" = "text/html; charset=iso-8859-1";
    Date = "Wed, 12 Jan 2011 19:11:19 GMT";
    Server = "Apache/2";
}
Run Code Online (Sandbox Code Playgroud)

编辑:这里的请求是请求标头(oops):

{ …
Run Code Online (Sandbox Code Playgroud)

forbidden http-status-code-403 apache-2.2 apple-ios

6
推荐指数
1
解决办法
4175
查看次数

分析HTTP日志,寻找iOS

我目前正在使用 AWStats 分析服务器的 apache 日志,该服务器将链接等从 iOS 应用程序重定向到应用程序商店(因此我们可以跟踪点击率)。但是,在 AWStats 中,所有这些流量都归入操作系统类别中的“Mac OS X”。这显然对我们没有多大帮助。我们真正想要的不仅是检测 iPhone、iPod Touch 和 iPad,还有 iOS 版本号、硬件代际差异等。

我不认为可以通过 http 日志轻松检索代际差异(例如 iPhone 3G 与 iPhone 4),但我知道 iOS 版本在用户代理字符串中是正确的。

不过,我试图让 AWStats 识别 iOS 的尝试都没有奏效。我将应该在 Mac OS X 上执行此操作的行移到了 Mac OS X 之上,但无济于事。有没有人设法做到这一点,在 AWStats 或其他方式?如果需要的话,我会很好地转移到不同的系统。

作为记录,浏览器检测工作正常,它可以轻松区分mozilla,safari,iPhone safari和iPad safari。

iphone analysis logging awstats apple-ios

6
推荐指数
1
解决办法
2334
查看次数

组策略问题

我们的一位客户在安装相对较新的 sbs 时遇到了问题。

该域由一个带有 4 个 Windows 7 客户端和 3 个 XP 客户端的 SBS 2011 服务器组成。大多数情况下一切正常,但大约每 3 天,Windows 7 客户端在尝试接收计算机组策略时就会开始超时。

这会导致在早上进入登录屏幕之前延迟一小时。这伴随着事件 ID 6006,win 登录错误,说明处理策略需要 3599 秒。一旦他们启动,他们就可以毫无问题地登录,但是 gpupdate 在计算机策略上再次失败,并且 gpresult 返回访问被拒绝,即使以域管理员身份运行...此时如果我们重新启动服务器,网络可以正常运行 3 天.

我想也许它可能是 ipv6 或 smb2,但是在客户端上禁用 ipv6 没有帮助,并且客户端无论如何都可以在 smb2 上自由浏览 sysvol 文件夹。有没有人有我可以采取的任何想法或路线来进一步诊断问题?

windows windows-7 group-policy windows-sbs-2011

6
推荐指数
1
解决办法
303
查看次数

使用 puppet、ansible 或 fabric 滚动更新

我之前有一些带有负载均衡器的码头服务器。现在我想在不停机的情况下更新我的应用程序。当一个码头停机并且不再可达时,负载均衡器会自动将其从列表中删除,所以这不是问题。

主要问题是避免停机时间:因此,我必须确保一次只有一个码头重新启动 - 或者确保至少有 N 个码头在线!

目前我正在使用一个简单的 bash 脚本,我需要手动等待一个码头重新上线,然后再重新启动下一个码头等等。

现在 bash 对于这类东西并不是很理想,我希望有更适合使整个任务自动化的工具。例如http://jetty-number-n.com/ping,如果第 n 个码头在线,我可以使用一个简单的 ping URL响应 OK (200)。

我如何解决这个任务以及使用哪种工具?

感谢@ceejayoz,我找到了 ansible 的滚动更新。但它仍然不是最理想的,因为我需要设置一个固定的超时时间。

ssh puppet fabric ansible

6
推荐指数
1
解决办法
4884
查看次数

rsync 是故障转移实现的理想选择吗(非常大的数据集)?

我有大量数据(+100 GB)可以存储到文件中。大多数文件都在 5k-50k 范围内 (80%),然后是 50k - 500k (15%) 和 >500k (5%)。文件的最大预期大小为 50 MB。如有必要,可以将大文件拆分为较小的部分。文件也可以按目录结构组织。

如果必须修改某些数据,我的应用程序会复制并修改它,如果成功,则将其标记为最新版本。然后,旧版本被删除。它是碰撞安全的(可以这么说)。

我需要实施一个故障转移系统来保持这些数据可用。一种解决方案是使用主从数据库系统,但这些系统很脆弱,并且强制依赖于数据库技术。

我不是系统管理员,但我阅读了 rsync 指令。它看起来很有趣。我想知道设置一些故障转移节点并使用我的主节点的 rsync 是否是一个负责任的选择。有没有人成功尝试过这个?

i) 如果是,我应该拆分我的大文件吗?rsync 在检测要复制/删除的文件方面是否智能/高效?我应该实现特定的目录结构来使这个系统高效吗?

ii) 如果 master 崩溃并且一个 slave 接管了一个小时(例如),让 master 再次更新是否像反过来运行 rsync 一样简单(slave to master)?

iii) 额外问题:是否有可能使用 rsync 实现多主系统?还是只有主从可能?

我正在寻找建议、技巧、经验等...谢谢!!!

failover rsync large-data

5
推荐指数
1
解决办法
2028
查看次数

5
推荐指数
2
解决办法
4946
查看次数

收集 FusionIO 库存

我需要编写一个脚本来从 Linux 服务器收集 FusionIO 驱动器的清单数据。

我能找到的唯一方法是fio-status实用程序,但它旨在输出人类可读的文本,而不是机器可解析的文本。我可以刮它,但那很脏。

我查过了,/proc/fusion但没有足够的信息有任何用处。

我希望有更好的方法,无论是某种交互方式libiodrivesdk.so还是已经存在的实用程序来完成这项工作。


我最初使用的是 v1.2.7.2。在 Shane 的推荐下,我升级到 2.2.3.66。

fio-status 现在有一个-fk输出选项:

sles11-live:~ # fio-status -fk
; Retrieving Fusion-io product information...

[driver]
total_ioDimms=4
ioDrive_Duos=2
driver_version=unavailable
sdk_api_version=unavailable

[adapter 1]
product_name=IBM 640GB High IOPS MD Class PCIe Adapter
product_number=68Y7381
…
Run Code Online (Sandbox Code Playgroud)

呃,我希望 JSON 但乞丐不能挑剔。

linux fusionio

5
推荐指数
1
解决办法
523
查看次数

xfs:在前 1 TB 上查找文件

我被 xfs' No space left on device击中。根据常见问题解答:

http://xfs.org/index.php/XFS_FAQ#Q:_Why_do_I_receive_No_space_left_on_device_after_xfs_growfs.3F

解决此问题的唯一方法是移动数据以释放 1TB 以下的空间。找到最旧的数据(即在第一次增长之前就已经存在)并将其移出文件系统(移动,而不是复制)。然后,如果您将其重新复制,数据块最终将超过 1TB,这应该为低于 1TB 的 inode 留出足够的空间。

但是我如何识别要移动的数据呢?我不能按年龄计算,因为前 10 TB 是在同一天使用rsync.

我试过了:

xfs_db -r -c "blockget -i 1 -n -v" /dev/md3
Run Code Online (Sandbox Code Playgroud)

但我似乎只得到文件的基本名称,而不是文件的完整路径。而且由于我的很多文件都被称为相同的(但在不同的目录中),所以这不是很有用。它似乎也给了我更多信息,只是 inode 1。

我有一种感觉,我可以使用xfs_db它来告诉我前 1 TB 中哪些文件正在使用块,但我一直无法看到如何使用。

(通过使用挂载选项inode64,文件系统不会在设备上留下 No space left,但是如果您稍后忘记使用 mount 选项,inode64那么您将再次在设备上获得No space left on device。我想避免使用挂载选项,inode64因为文件系统可能会被其他人安装在其他系统上,他们忘记这一点,从而得到令人惊讶的No space left on device)。

xfs inode

5
推荐指数
1
解决办法
1226
查看次数

SonicWall 和 Windows CA

我正在尝试导入由我使用 AD CS 在 Windows 中设置的 CA 创建的证书。我做了以下工作:

1) 创建自己的 CA (MyCompany)
2) 启用 Web 服务(主要是为了便于配置)
3) 在 Sonicwall 本身上生成证书请求
4) 使用 Web 服务对证书进行签名
5) 将签名证书导入 Sonicwall 。 ..这导致证书在“已验证”字段中显示“否”。
6)导入CA的证书。

这就是我卡住的地方。我试图导入 CRL 列表,但收到以下错误:CRL Error - Verification failed using CA certificate. 日志中不会出现更多错误。如果没有 CRL 列表,证书将无法验证,也不会出现在“管理”页面下,因此我可以选择它以通过 HTTPS 使用。

有任何想法吗?

编辑:当我尝试使用我的 HTTP 发布列表时,来自 Sonicwall:

07/02/2013 14:33:54.256 Alert   VPN PKI Cannot Validate Issuer Path         HTTPS        
19  07/02/2013 14:33:54.256 Alert   VPN PKI CRL validation failure for Root Certificate         MyCompanyCA      
20  07/02/2013 14:33:54.256 Alert   VPN …
Run Code Online (Sandbox Code Playgroud)

sonicwall

5
推荐指数
1
解决办法
3万
查看次数