Apache 重写为 Nginx

Apache 重写为 Nginx

我正在尝试在我的 Nginx 服务器上安装 thebuggenie。不幸的是,它位于一个子目录中(我对此无能为力),并且对其所有 URL 都使用 apache 重写。当我将所有内容从子目录中移出后,我取得了一些成功,但不幸的是,主(根)目录中有一些它需要的东西。无论如何,我有它提供的 .htaccess 文件,我需要知道如何将重写转换为 nginx 重写。我的配置文件在这里:

http://paste-bin.com/view/eb48c716

我认为主要问题是 RewriteBase......

抱歉,我目前无法添加超过 1 个 URL,因此无法将它们合并在一起。

答案1

我知道这个问题已经很老了,但是找到了一个针对 thebuggenie 3.1.4 与 nginx 1.0.6 一起运行的解决方案:

server {
    server_name site.com;
    root /var/www/site/public_html/thebuggenie;
    large_client_header_buffers 4 8k;
    index index.php index.html;

    location ~ \..*/.*\.php$ { return 403; }

    location ~ \.php {
      #add fastcgi_param values to suit environment
      fastcgi_pass 127.0.0.1:9000;
  }

    location ~ /(?<suburi>.*){
      set $suburi $1;
      try_files $uri $uri/ /index.php?url=$suburi&$args;
  }

}

一些注释

  1. 根设置 - 虽然您可以在 /var/www/site/public_html/ 中提取并安装,但程序希望站点根目录位于“thebuggenie”目录中。

  2. 默认位置块位置 ~ /(?...需要遵循 php fastcgi 块。

如果有人有进一步的增强/更优化的方法,我很乐意看到它们。

答案2

为了完成 jimg 的回答,如果您的文档根目录指向 thebuggenie 安装目录(因此您可以简单地指向http://<your-server>/),则适用于 nginx 的正则表达式是:

location ~ /(.*) {
    try_files $uri $uri/ /index.php?url=$1&$args;
}

set $suburi $1;如果愿意,您仍然可以使用,但即使在 jimg 的示例中,您也可以$1直接使用。

答案3

听起来这个软件的设计严重依赖 Apache。对于这个网站,我会在 Apache 前面使用 nginx。将 Apache 放在 8080 localhost 或类似的东西上。您仍然可以获得 nginx 对静态文件的好处,而不必重写所有规则。否则我会向 thebuggenie 抱怨,让他们为您翻译他们的 Apache 重写。这太糟糕了。

相关内容