Возможно ли использовать AWS CloudFront для файлов PHP?

#php #amazon-web-services #amazon-cloudfront

#php #amazon-web-services #amazon-cloudfront

Вопрос:

Я пытаюсь загрузить PHP-файлы, такие как index.php , с помощью AWS CloudFront.

В документации говорится —

Создайте веб-дистрибутив, если хотите:

Ускорить распространение статического и динамического контента, например, .html, .css, .php и графических файлов. Распространяйте медиафайлы с использованием HTTP или HTTPS. Добавляйте, обновляйте или удаляйте объекты и отправляйте данные из веб-форм. Используйте прямую трансляцию для трансляции события в режиме реального времени.

Однако, когда я загружаю файлы PHP в относительную корзину CloudFront, это заканчивается загрузкой файла и его открытием. Как я смогу размещать файлы PHP?

Ответ №1:

Однако, когда я загружаю файлы PHP в относительную корзину CloudFront

Не существует такого понятия, как корзина CloudFront, поэтому вы, вероятно, имеете в виду корзину S3, настроенную за CloudFront в качестве источника.

CloudFront работает с динамическим контентом, который может быть сгенерирован с помощью PHP, но сайт PHP должен размещаться на сервере, который его поддерживает, а не на S3.

Вы можете разместить статический веб-сайт на Amazon Simple Storage Service (Amazon S3). На статическом веб-сайте отдельные веб-страницы содержат статический контент. Они также могут содержать сценарии на стороне клиента. В отличие от этого, динамический веб-сайт использует обработку на стороне сервера, включая серверные скрипты, такие как PHP, JSP или ASP.NET . Amazon S3 не поддерживает сценарии на стороне сервера. (выделено мной)

https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html

Варианты размещения сайтов со статическим или динамическим контентом см. в разделе Решения для веб-сайтов AWS, принимая во внимание, что PHP требует решения, поддерживающего сценарии на стороне сервера и динамический контент, поэтому не все представленные там решения (включая S3) будут соответствовать вашим потребностям… но все они совместимы с CloudFront — задачей которого является только доставка отображаемого контента, а не исходный рендеринг.

Ответ №2:

CloudFront предназначен для предоставления контента конечным пользователям, а не для выполнения вашего кода. Ваши PHP-файлы будут находиться на экземпляре EC2, работающем под управлением PHP и веб-сервера (Apache, Nginx), который затем вы могли бы поместить за CloudFront, чтобы получить преимущества. Затем это сгенерирует HTML-код для обслуживания CloudFront. Сам CloudFront не обрабатывает обработку и имеет дело только со статическим HTML. При использовании CloudFront с S3 контент будет предоставляться непосредственно конечному пользователю.

Я не совсем уверен, где вы нашли этот фрагмент, но мне кажется, что во введении отсутствует список .php.

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html

Amazon CloudFront — это веб-сервис, который ускоряет распространение вашего статического и динамического веб-контента, такого как .html, .css, .js и файлы изображений, среди ваших пользователей.

Комментарии:

1. Это неверно, но, к вашей чести, это предложение в документации не так ясно, как могло бы быть. CloudFront поддерживает динамический контент с 2012 года. Проблема в том, что OP не упомянул, что они также, по-видимому, используют S3, который не поддерживает динамический контент или какие-либо серверные сценарии.

2. @Michael-sqlbot Я думаю, это зависит от того, как вы на это смотрите. Для меня результатом PHP-скрипта является то, что обрабатывает CloudFront, который на данный момент является просто HTML. CloudFront будет обрабатывать ответы так же, как если бы это был статический HTML-файл, поскольку он просто отображает результат. Надеюсь, я сделал свой ответ более понятным.

3. Да, CloudFront просто обслуживает результат, требуя внутреннего сервера (origin), который действительно может выполнять PHP-код… но вопрос подразумевает попытку использовать S3 в качестве источника, который не будет работать с PHP (по причинам, не связанным с CloudFront). Текст, приведенный в вопросе, взят из консоли CloudFront, когда вы проходите через мастер для создания дистрибутива .

4. @Michael-sqlbot Я столько раз игнорировал этот фрагмент текста на этой странице. Вероятно, это должно быть понятнее, но я предполагаю, что в нем не указано, как вы предоставляете CloudFront содержимое, потому что в конечном счете ему все равно. Пользователю просто нужно настроить собственный способ рендеринга PHP и не использовать S3.