2017-02-03 10 views
0

Я пытаюсь настроить полный обратный прокси-сервер Nginx с полным стеком (как гласит название, очевидно), и я немного борюсь, когда дело доходит до интерпретации кода с помощью PHP- FPM.Full-stack 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, он работает нормально, директива index отлично работает, и сервер возвращает /var/www/main/index.html при доступе к домену. com и /var/www/test/index.html при доступе к домену.com/test.

Однако проблема возникает, когда я использую файлы index.php. В этом случае только использование URL-адресов там оставляет меня с ошибкой 404 в обоих случаях. Мне нужно явно указать index.php в URL, например. domain.com/test/index.php, чтобы он работал, чего я не хочу.

Я не нашел ни одной темы или документации, касающейся такого конкретного случая, и именно поэтому я прихожу сюда, чтобы спросить, есть ли у кого-нибудь больше информации о поведении индексов с PHP?

Спасибо, заранее за ваши ответы, и я с удовольствием возьму все, что у вас есть на данный момент, так как я долгое время боролся с этой проблемой.

ответ

0

Вы должны установить эту опцию, чтобы загрузить файлы index.php по умолчанию:

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

я, видимо, по ошибке забыл поставить его, но у меня было это в: блок сервера 81, и он не будет работать. Я попытался поместить его в место/{} блок, и он тоже не работает ... Я немного озадачен этим. EDIT: Я действительно пытался разместить его во многих местах, не получив его на работу, в том числе в местоположении/{} сервера «frontend». –