nginx - cURL извлекает файлы PHP, но доступ через веб-браузер дает исходный код

У меня проблемы с nginx. Я устанавливаю nginx на Raspberry Pi B + (Raspbian Jessie) и PHP с FastCGI. Когда я пытаюсь использовать cURL для получения страниц,

ПОЛУЧИТЬ /test_2.php HTTP / 1.1 Пользовательский агент: curl / 7.38.0 Хост: localhost Принять: /

  • Сервер nginx не внесен в черный список <Сервер: nginx <Дата: пт, 12 мая 2017 г., 04:21:20 GMT
  • Соединение №0 с локальным хостом осталось нетронутым
  • nginx access.log

    ::1 - - [12/May/2017:12:21:20 +0800] "GET /test_2.php HTTP/1.1" 20019 "-" "curl/7.38.0"
    192.168.0.132 - - [12/May/2017:12:26:28 +0800] "GET /test_2.php HTTP/1.1" 200 28 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"
    

    nginx error.log

    2017/05/12 11:50:41 [error] 21715#0: *64 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.0.132, server: ~., request: "GET /favicon.ico HTTP/1.1", host: "192.168.0.113"
    2017/05/12 11:53:02 [error] 21715#0: *66 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.0.132, server: ~., request: "GET /favicon.ico HTTP/1.1", host: "192.168.0.113"
    2017/05/12 11:54:18 [notice] 21737#0: signal process started
    2017/05/12 11:54:22 [notice] 21747#0: signal process started
    

    РЕДАКТИРОВАТЬ: После комментария Тима ниже я запустил curl, форсируя IPv4, и он действительно вернул исходный код.

    0
    задан 12 May 2017 в 07:47
    1 ответ

    Думаю, я знаю, почему это так. Мой второй серверный блок, который разрешает все имена с помощью RegEx ~. настроен на прослушивание порта 80, который является IPv4, и не имеет обработчика CGI. Тем не мение,по умолчанию серверный блок настроен на прослушивание порта 80 для IPv6. Поскольку nginx выполняет откат к серверу по умолчанию только после тестирования других серверов, блоку прокси-сервера нечего обрабатывать PHP, поэтому он возвращает его как исходный код. В IPv6 nginx не может использовать блок прокси-сервера для обработки запроса, поэтому он передает его на сервер по умолчанию, на котором запущен сервер FastCGI, таким образом, он может вернуть phpinfo () .

    Решение

    ] Я должен поместить блок пропуска прокси location / git / в блок сервера по умолчанию.

    0
    ответ дан 5 December 2019 в 08:10

    Теги

    Похожие вопросы