我在Debian GNU / Linux 7(wheezy)机器上configurationnginx虚拟主机时遇到问题。
我得到的是一个500内部服务器错误。
这是我的vhost_autogen.conf文件的一个例子:
server { listen *:80; server_name api-dev.domain.com; access_log /var/log/nginx/api-dev.domain.com.access.log; error_log /var/log/nginx/api-dev.domain.com.error.log; location / { root /code/api.domain.com/public; try_files $uri $uri/ /index.php?$args; index index.html index.htm index.php; } location ~ \.php$ { root /code/api.domain.com/public; try_files $uri $uri/ /index.php?$args; index index.html index.htm index.php; fastcgi_index index.php; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param APP_ENV dev; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; } }
权限问题几乎肯定不是,因为我给了完全的权限(777),只是可以肯定的。
任何提示?
这里是错误日志:
2013/12/22 17:08:11 [error] 4341#0: *16 rewrite or internal redirection cycle while internally redirecting to "/index.php", client: 192.168.56.1, server: api-dev.domain.com, request: "GET / HTTP/1.1", host: "api-dev.domain.com"
谢谢您的帮助。
你的location块内都有错误的try_files 。
try_files $uri $uri/ /index.php?$args;
当它命中$uri/这会导致nginx查找index指令中指定的每个文件。 它碰到了index.php ,到了你的第二个location ,这就是它似乎陷入循环的地方。
我会重写这些:
location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; }
第二个location根本不需要index指令。