nginx 가상 호스트 구성

nginx 가상 호스트 구성

Debian GNU/Linux 7(wheezy) 컴퓨터에서 nginx 가상 호스트를 구성하는 데 문제가 있습니다.

내가 얻는 것은 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"

도와 주셔서 감사합니다.

답변1

try_files두 블록 모두에 문제가 있습니다 location.

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

관련 정보