在我的服务器上,我在 nginx 前面安装了 Varnish,以便更快地提供静态文件。在使用我的网站时,我发现了以下错误:我的 wordpress 博客上的每条评论都来自本地主机 (127.0.0.1),现在没有人允许发表评论 (wordpress 阻止了来自一个 ip 的太多评论)。我怎样才能使用原始 ip 将评论发布到 nginx (wordpress),或者我怎样才能禁用评论锁定?
答案1
评论者说得对,nginx 在提供静态文件方面和 varnish 一样快。通常没有必要将两者串联起来,除非在某些情况下(使用高级全页缓存、ESI 等)。
直接回答你的问题,你需要在 Wordpress 本身内做一些调整,让它发现真正的 IP。这有点像黑客行为,但由于 Wordpress 中有很多 IP,所以应该没问题(我之前在生产中已经多次成功完成此操作)。
在您的wp-config.php
文件中,某处(靠近顶部是好的)放置;
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
这是假设您的 Varnish 服务器正在发送X-Forwarded-For
标头。如果尚未发送标头,可以找到如何执行此操作的说明这里。
这会让 Wordpress 误以为代理发送的 IP 就是真实用户的 IP。在大多数情况下,这是安全的,有些人会担心标头太容易被欺骗,但是如果您有一个明确定义该标头的反向代理(即:用正确的值覆盖任何可能传入的内容),那就没问题了。
希望这可以帮助。