【问题标题】:fuelphp app and nginx produce 500 error - rewrite or internal redirection cycle while internally redirectingFuelphp 应用程序和 nginx 产生 500 错误 - 内部重定向时重写或内部重定向循环
【发布时间】:2013-12-24 11:13:37
【问题描述】:

我正在用fuelphp 编写一个应用程序。在我当地的流浪者盒子上,一切都很完美。我已经从我的主服务器为开发框创建了一个子域,转发到数字海洋水滴的 IP,安装了 nginx、php5-fpm 以及使燃料工作所需的所有其他位,并且主页正常工作但是当我尝试导航到站点的任何其他区域我在 error.log 中收到此错误

2013/12/06 22:54:46 [error] 10177#0: *2 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: xxx.xxx.xxx.xxx, server: xxx.xxxxxxx.com, request: "GET /region HTTP/1.1", host: "xxx.xxxxxxx.com"

虚拟主机的 .conf 是:

server {


    root /usr/share/nginx/html/fuel_app/public;
    server_name xxx.xxxxxxx.com;

    location / {
            index index.php index.html index.htm;
            try_files $uri $uri/ /index.html;
    }

    error_page 404 /404.html;

#        error_page 500 502 503 504 /50x.html;
#        location = /50x.html {
#              root /usr/share/nginx/html/fuel_app/public;
#        }

    location @handler {
            rewrite / /index.php;
    }

    location ~ .php/ {
            rewrite ^(.*.php)/ $1 last;
    }

    location ~ .php$ {
            if (!-e $request_filename) { rewrite / /index.php last; }
            expires        off;
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }
}

我在这里错过了什么?

【问题讨论】:

    标签: nginx rewrite fuelphp


    【解决方案1】:

    我不是专家,但这是我们在生产中使用 nginx 和 php-fpm 的配置:

    server {
    
    listen            80;
    server_name       www.yourserver.com
    root              /var/www/YOURSITE/public;  # whatever is yours
    index             index.php index.html index.htm;
    
    location / {
        try_files   $uri $uri/ @handler;
        expires     30d;
    }
    
    location @handler {
        rewrite ^ /index.php?/$request_uri;
    }
    
    location ~ ^/index.php$ {
        fastcgi_pass        127.0.0.1:9000;
        fastcgi_index       index.php;
        fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param       PHP_VALUE open_basedir="/var/www/YOURSITE/:/usr/share:/tmp/";
        include             fastcgi_params;
    }
    
    location ~ \.php$ {
        deny all;
    }
    
    location ~* ^/(modules|application|system) {
        return 403;
    }
    
    error_page 404          /index.php;
    
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
    
    access_log /var/log/nginx/YOURSITE.it-access.log;
    error_log /var/log/nginx/YOURSITE.it-error.log;
    
    }
    

    我们有一些不同的设置,也许它就是其中之一。我要检查的另一件事是config.php。在许多项目中,我们必须手动设置 base_url,也许你也必须这样做,或者你已经解决了它,你必须为你的生产配置更改它

    【讨论】:

      猜你喜欢
      • 2015-06-21
      • 2013-08-21
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 2011-05-16
      相关资源
      最近更新 更多