-1

I am running Mac OSX 10.10 Yosemite with homebrew. I was using a localhost environment using MAMP and I wanted something that was less of a resource hog and without all the bloated extras. I have installed nginx, mysql and php56 with php-fpm and mcrypt via homebrew. I am using Laravel as my php framework. When I was using MAMP I would access Laravel projects like so:

localhost/myproject/public/
localhost/myproject/public/some_route

Everything appears to be working ok when viewing the public folder landing page (the first uri above). Any other sub-locations (the second uri above) in my routes.php file return a 500 Internal Server error. After doing some searches, looking at tutorials and testing different nginx configurations this is what I currently have in my nginx.conf file:

worker_processes  4;
#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include        mime.types;
    default_type   application/octet-stream;

    server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        root /Users/adam2k/www;
        index index.html index.htm index.php;   
        rewrite_log on;

        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?_url=/$1;
        }   

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

        location ~ .php$ {
            try_files $uri = 404;
            include /usr/local/etc/nginx/fastcgi.conf;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_intercept_errors on;
            # break;
        }
    }
}

My /etc/hosts file looks like this:

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

Under the error log I am receiving this message:

2015/02/10 12:51:32 [error] 22306#0: *19 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: ::1, server: , request: "GET /favicon.ico HTTP/1.1", host: "localhost"

This makes me believe the issue lies within the

location / {...}

area in the config file, but I am not sure how to remedy this.

I'm not looking to do anything fancy with virtual hosts and adding special .dev or .local uris into my host file, but if that's the only answer then I'm fine with putting in the extra configuration work.

1 Answers1

1

This is much too complicated, and parts of it appear to conflict with each other.

    try_files $uri $uri/ @rewrite;

    location @rewrite {
        rewrite ^/(.*)$ /index.php?_url=/$1;
    }   

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

Simplify this to a single directive.

    try_files $uri $uri/ /index.php?_url=$request_uri;
Michael Hampton
  • 237,123
  • 42
  • 477
  • 940
  • Thanks @Michael! I simplified the location statement, but the only way I was able to get this configuration to work was to also change the root location to the Laravel public folder. Do you know if I will have to set a location block for ever project that I create or is there some kind of wildcard option for this in the nginx config? – Adam Vandover Feb 10 '15 at 20:38