我如何告诉 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。