Welcome Guest, Not a member yet? Register   Sign In
CI + nginx = 404 /error 500
#1

[eluser]Unknown[/eluser]
I'm trying to migrate a CI site from apache to nginx + fastcgi.

The best i get, in terms of PHP, is a 404, though. Static files work fine, and the welcome page of a blank copy of CI seemed to work OK too.

Even the root directory gives a 404 which is the first thing i'm trying to fix. NB: this only happens if i set `$config['uri_protocol']= "DOCUMENT_URI";`, anything else and i get server error 500.

this is my nginx.conf;
Code:
worker_processes  2;

events {
    worker_connections  32;
}

http {
    keepalive_timeout       300 300;
    charset                 utf-8;
    default_type            application/octet-stream;
    ignore_invalid_headers  on;
    include                 /etc/nginx/mime.types;
    keepalive_requests      20;
    max_ranges              0;
    recursive_error_pages   on;
    sendfile                on;
    server_tokens           off;
    source_charset          utf-8;

    ##Compression
    gzip              on;
    gzip_http_version 1.1;
    gzip_vary         on;
    gzip_comp_level   9;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js application/octet-stream;
    gzip_buffers 16 8k;
    
    server {
        listen  80;
        server_name .example.com;
        access_log /var/log/nginx/example.com.access.log;
        root /SITE/dev/www;
        index index.php index.html index.htm;

        # enforce www (exclude certain subdomains)
    #   if ($host !~* ^(www|subdomain)) {
    #       rewrite ^/(.*)$ $scheme://www.$host/$1 permanent;
    #   }
        # enforce NO www
        if ($host ~* ^www\.(.*)) {
            set $host_without_www $1;
            rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
        }

        # canonicalize codeigniter url end points
        # if your default controller is something other than "main" you should change the following
        if ($request_uri ~* ^(/main(/index)?|/index(.php)?)/?$) {
            rewrite ^(.*)$ / permanent;
        }

        # removes trailing "index" from all controllers
        if ($request_uri ~* index/?$) {
            rewrite ^/(.*)/index/?$ /$1 permanent;
        }

        # removes trailing slashes (prevents SEO duplicate content issues)
        if (!-d $request_filename) {
            rewrite ^/(.+)/$ /$1 permanent;
        }

        # removes access to "system" folder, also allows a "System.php" controller
        if ($request_uri ~* ^/system) {
            rewrite ^/(.*)$ /index.php?/$1 last;
            break;
        }

        # unless the request is for a valid file (image, js, css, etc.), send to bootstrap
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?/$1 last;
            break;
        }

        # catch all
        error_page 404 /index.php;

        # use fastcgi for all php files
        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /SITE/dev/www$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }

        # deny access to apache .htaccess files
        location ~ /\.ht {
            deny all;
        }
    }
}

/etc/nginx/fastcgi_params;
Code:
fastcgi_param QUERY_STRING  $query_string;
fastcgi_param REQUEST_METHOD  $request_method;
fastcgi_param CONTENT_TYPE  $content_type;
fastcgi_param CONTENT_LENGTH  $content_length;

fastcgi_param SCRIPT_FILENAME  $request_filename;
fastcgi_param SCRIPT_NAME  $fastcgi_script_name;
fastcgi_param REQUEST_URI  $request_uri;
fastcgi_param DOCUMENT_URI  $document_uri;
fastcgi_param DOCUMENT_ROOT  $document_root;
fastcgi_param SERVER_PROTOCOL  $server_protocol;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE  nginx/$nginx_version;

fastcgi_param REMOTE_ADDR  $remote_addr;
fastcgi_param REMOTE_PORT  $remote_port;
fastcgi_param SERVER_ADDR  $server_addr;
fastcgi_param SERVER_PORT  $server_port;
fastcgi_param SERVER_NAME  $server_name;

fastcgi_param HTTPS   $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS  200;

There is nothing in the nginx error.log

Where should i start??


Messages In This Thread
CI + nginx = 404 /error 500 - by El Forum - 11-23-2012, 02:37 PM
CI + nginx = 404 /error 500 - by El Forum - 11-23-2012, 06:22 PM



Theme © iAndrew 2016 - Forum software by © MyBB