2017-02-03 1 views
0

전체 스택 Nginx 역방향 프록시 서버 (제목에서 알 수 있듯이)를 설정하려고하는데 PHP 기반의 코드 해석을 사용할 때 약간의 어려움을 겪고 있습니다. FPM.전체 스택 Nginx 역방향 프록시 및 PHP 인덱스

 server { 
      listen xxx.xxx.xxx.xxx:80; 
      server_name localhost; 

      # logs... 

      # Here begins the reverse-proxying 

      # Test 2nd backend server 
      location /test { 
        proxy_pass http://127.0.0.1:82/; 
      } 

      # default main site (has to be at the end since location checks file hierarchy) 
      location/{ 
        proxy_pass http://127.0.0.1:81/; 
      } 

그리고 다음은

는 (직접 파일을 제공하는 데 사용되지 않고 백 엔드 서버쪽으로 클라이언트를 리디렉션 할 수 있음) 프록시 프로세스의 소위 프론트 엔드 부분입니다 그렇다면 여기에 반전 된 두 개의 서버 블록이 있습니다. 첫 번째 접근 domain.com에서 기본적으로 제공해야하는 주요 사이트입니다 :

server { 
      listen 127.0.0.1:81; 
      server_name main; 

      # logs... 

      root /var/www/main; 

      gzip on; 
      gzip_types "*"; 
      expires 10m; 

      location/{ 
        try_files $uri = 404; 
        fastcgi_split_path_info ^(.+\.php)(/.+)$; 
        fastcgi_pass unix:/run/php-fpm.socket; 
        include /etc/nginx/fastcgi.conf; 
      } 
    } 

을 그리고 여기 domain.com/test하려고 할 때 액세스해야되는 두 번째 "테스트"하나입니다 : 어느 날 실제로 하나 개의 포트를 사용할 수 있도록 할 리버스 프록시를 사용하여 이렇게

 server { 
      listen 127.0.0.1:82; 
      server_name test; 

      root /var/www/test; 

      gzip on; 
      gzip_types "*"; 
      expires 10m; 

        try_files $uri = 404; 
        fastcgi_split_path_info ^(.+\.php)(/.+)$; 
        fastcgi_pass unix:/run/php-fpm.socket; 
        include /etc/nginx/fastcgi.conf; 
      } 
    } 

, 그리고 가장 중요한, 그것은 가상 서버가 실제로 여기에 실행중인 얼마나 숨 깁니다.

그래서 문제가 무엇입니까? 글쎄, 더 많은 방법에 대해 PHP와 인덱스 nginx 역방향 프록시가 역방향 프록시 자체에 대한보다 관리되고 있습니다.

index.html 파일을 81 : 82 서버에서 사용할 때 제대로 작동하고 인덱스 지시문이 완벽하게 작동하며 도메인에 액세스 할 때 서버에서 /var/www/main/index.html을 반환합니다. com 및 /var/www/test/index.html을 방문하십시오.

그러나 index.php 파일을 사용할 때 문제가 발생합니다. 이 경우, 위의 URL 만 사용하면 두 경우 모두 404 오류가 발생합니다. 명시 적으로 URL에 index.php를 지정해야합니다 (예 : domain.com/test/index.php를 사용하면 효과가 있습니다.

그런 특정 사례를 다루는 스레드 나 문서를 찾지 못했습니다. 그래서 PHP에서 인덱스 동작에 대한 정보가 더 많은지 묻기 위해 여기에와 있습니다.

답장을 보내 주셔서 감사 드리며,이 문제로 오랜 시간 애써 왔기 때문에 지금까지 가지고 계신 모든 것을 기꺼이 가져 가겠습니다.

답변

0

당신은 기본적으로 index.php에 파일을로드하려면이 옵션을 설정해야합니다

location/{ 
    index index.php index.html index.htm; 
    // ...other configurations 
} 
+0

나는 분명히 잘못 넣어 잊었지만 나는 그것을했다 : 81 서버 블록, 그것은 작동하지 않을 것입니다. 위치/{} 블록에 넣으려고했는데 작동하지 않습니다 ... 저는 이것에 대해 조금 혼란 스럽습니다. 편집 : 실제로 "frontend"서버의 위치/{}를 포함하여 작동시키지 않고 많은 장소에 넣으려고했습니다. –