Nginx 设置搞乱了我的 Drupal 表单提交,我该如何修复?

Nginx 设置搞乱了我的 Drupal 表单提交,我该如何修复?

我如何告诉 Nginx“忽略”我的网站上的特定 URL 或页面?

我运营一个 Drupal 网站,匿名访问者通过 NGINX 获得服务,而登录用户则通过 Apache 获得服务。我们这样做是为了降低负载并更好地扩展。

它运行得很好,只是,自从我们设置了 nginx 之后,很多 Drupal 表单不再起作用。

例如,在安装 Nginx 之前,如果你新建了一篇文章,然后点击“编辑”,对这篇文章进行了编辑。你可以点击“保存”,这样你对这篇文章的修改就会被保存。

设置 nginx 后,当您进行编辑并单击“保存”时,页面会简单刷新,但现在 URL 中插入了“nginx-index.php”。并且您对表单的更改实际上并未保存到数据库中。

因此,如果您要编辑文章,您将进入 domain.com/node/##/edit 或类似的页面。当您尝试将更改保存到表单时,您将进入 domain.com/nginx-index.php?q=node/##/edit。并且您的更改将不会保存。

有一种方法可以解决这个问题,但仅适用于管理员用户。如果您转到发生此问题的表单,然后在我们的 settings.php 文件中注释掉三行,表单将正确保存。

这三行是:

// 'cache_form' => 数组(
// 'engine' => 'db', // ),

如果它们被注释了,请取消注释,然后保存表单。如果它们被取消注释,请将其注释掉并保存表单。

显然,这很糟糕。

为我们设置服务器的朋友(然后离开了这个国家)告诉我,有一些 Nginx 设置可以告诉它“忽略”可以在这里工作的某些 URL 或页面。

我该如何做?在哪里做?

答案1

如果您可以发布 nginx 配置的清理版本来查看您正在做什么,这可能会有所帮助?

我不确定您是如何设置的,但典型的 Drupal 设置是将 Nginx 置于 Apache 前面,以执行反向/静态代理。这意味着 Nginx 提供所有静态内容(如 JS 文件、图像等),并将所有 PHP 请求传递给在不同端口上运行的 Apache。

相关内容