我们最近将我们的一台 Web 服务器切换到 apache 2.4 并通过 php-fpm 和 mod_proxy_fcgi 运行 PHP。大多数一切都运行良好,但有一个我还不明白的问题。我们的一个网站正在运行 WordPress,它在其 .htaccess 文件中提供了一个很好的重写规则列表。并且似乎这些与 vhost 设置中的 ProxyPass 指令不能很好地配合使用。
我们的 vhost 包含以下配置:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都有效。
现在,htaccess 文件执行以下操作:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Run Code Online (Sandbox Code Playgroud)
由于该站点是子目录中的多博客,我读到 URL /blogname/wp-admin/load-styles.php?xxxx 应该重写为 wp-admin/load-styles.php?xxx (第二个重写规则)。但是查看mod_proxy的日志,其实传递的请求是/blogname/wp-admin/load-styles.php。
我读到这里是因为存在一个优先级问题——ProxyPass 规则在所有 RewriteRules 都被解决之前触发。
我受阻 - 可能是什么原因?
我们有一个非常奇怪的情况,我不太明白。我们的 postfix 服务器通常可以很好地传送电子邮件,但是对于许多域,存在一个问题。这些域很奇特,因为它们在 DNS 中只有一个记录而没有 MX 记录。
我得到的错误是:
host or domain name not found. Name service error for name=<DOMAIN> type=MX: Unknown error 0>
奇怪的是,这是真的——因为 MX 查找确实失败了。虽然有那个 A 记录,但后缀似乎很高兴地忽略了。
我们目前正在运行来自 pkgsrc 的 postfix 2.9.6。