Nginx
通過 Homebrew 使用 nginx、mysql 和 php 的 OS X 10.10 本地主機環境
我正在使用自製軟體執行 Mac OSX 10.10 Yosemite。我使用的是使用 MAMP 的 localhost 環境,我想要一些不佔用資源且沒有所有臃腫的附加功能的東西。我已經通過自製軟體安裝了帶有 php-fpm 和 mcrypt 的 nginx、mysql 和 php56。我使用 Laravel 作為我的 php 框架。當我使用 MAMP 時,我會像這樣訪問 Laravel 項目:
localhost/myproject/public/ localhost/myproject/public/some_route
查看公用文件夾登錄頁面(上面的第一個 uri)時,一切似乎都正常。我的 routes.php 文件中的任何其他子位置(上面的第二個 uri)都會返回 500 Internal Server 錯誤。在進行了一些搜尋、查看教程並測試了不同的 nginx 配置之後,這是我目前在我的 nginx.conf 文件中擁有的內容:
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; } } }
我的 /etc/hosts 文件如下所示:
127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost
在錯誤日誌下,我收到此消息:
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"
這讓我相信問題出在
location / {...}
配置文件中的區域,但我不知道如何解決這個問題。
我不想對虛擬主機做任何花哨的事情並將特殊的 .dev 或 .local uris 添加到我的主機文件中,但如果這是唯一的答案,那麼我可以進行額外的配置工作。
這太複雜了,而且其中的某些部分似乎相互衝突。
try_files $uri $uri/ @rewrite; location @rewrite { rewrite ^/(.*)$ /index.php?_url=/$1; } location / { try_files $uri $uri/ /index.html; }
將其簡化為單個指令。
try_files $uri $uri/ /index.php?_url=$request_uri;