Как служить всем существующим статическим файлам непосредственно с NGINX, но проксировать остальных к серверу бэкэнда.

Несколько подсказок:

  • require значения не должны быть в скобках.
  • вам следует НЕ использовать функции mysql_, эта библиотека теперь CEASED и недоступна в PHP 7. Обновитесь до 2012 и используйте mysqli_ или PDO. ( Почему? )
  • Вы должны использовать PHP 7. Как минимум . ( Почему? )
  • НЕ НЕ использовать md5 для хеширования паролей. Используйте встроенные в PHP функции password_hash(). ( Как? )
  • ОСТАНОВИТЬ выводить ошибки на экран (он же return mysql_error();). Вы должны отправлять сообщения об ошибках в журнал ошибок (error_log(print_r(mysql_error(),true));), чтобы публика не могла увидеть подробности ошибки.
  • Прочитайте журнал ошибок PHP . Что это говорит?
  • Использовать Подготовленные высказывания при взаимодействии с вашей базой данных. ([Как? ( https://phpdelusion.net/mysqli ))

  • Header("Location: ... "); функции всегда должны сразу сопровождаться exit; / [1110 ]

  • НИКОГДА доверять вводу пользователя. Даже если пользователь скажет вам, что это безвредно. ( Почему? )
  • Прочитайте журнал ошибок PHP . Что это говорит?
  • Ваши классы, вероятно, должны иметь функции класса __constuct(). ( почему? )
  • Вы можете использовать логические значения вместо строк; используйте return true; вместо return "true";
  • Вы ВСЕГДА должны НЕ использовать функции mysql_. Почему вы все еще используете их? Прекратите читать это и обновите свою кодовую базу! Используйте mysqli_ или PDO. ( Почему? )
  • Узнайте о различиях между операторами сравнения PHP . И примените то, что вы узнали, к своему коду.
  • Используйте руководство по PHP , чтобы найти и использовать множество функций, доступных в PHP.
  • Пожалуйста, свяжитесь со мной, если вы хотите приобрести копию PHP 6 (4,5 / 5 звездочек на TripAdvisor ).

Вам нужно много читать и многому научиться. Я бы сказал, удачи, но вам не нужна удача, вам нужно прочитать и посвятить себя тому, чтобы научиться правильно использовать PHP . ​​

Веселись.

76
задан m0meni 4 July 2016 в 07:50
поделиться

1 ответ

Попробуйте следующее:

location / {
    root /path/to/root;
    expires 30d;
    access_log off;
}

location ~* ^.*\.php$ {
    if (!-f $request_filename) {
        return 404;
    }
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:8080;
}

Надеюсь, это сработает. Регулярные выражения имеют более высокий приоритет, чем простые строки, поэтому все запросы, заканчивающиеся на .php , должны пересылаться в Apache, если существует только соответствующий файл .php . Остальные будут обрабатываться как статические файлы. Фактический алгоритм оценки местоположения здесь .

18
ответ дан 24 November 2019 в 11:13
поделиться
Другие вопросы по тегам:

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