Я настраиваю новую среду Amazon Linux 2 / PHP / NGINX, и я немного не знаком с Nginx, так как моей последней средой на Elastic Beanstalk была Amazon Linux / PHP / Apache. (Amazon изменил прокси-сервер на Nginx с Apache, а базовая платформа была обновлена с Amazon linux до AL2)
Раньше у меня был файл .htaccess для обработки нескольких доменов, где у домена была соответствующая папка, из которой он будет обслуживаться. Но я знаю, что файл .htaccess не будет работать с Nginx.
До сих пор я пробовал добавить файл конфигурации в папку .ebextensions примерно так:
files:
"/etc/nginx/sites-available/example.com.conf":
mode: "000644"
owner: root
group: root
source: https://someothersite.com/example.com.conf
Ссылка на источник (example.com.conf) содержит следующее:
server {
listen 80;
root /var/www/html/example.com;
index index.html index.php;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
}
Я подумал, что мне нужно создать символическую ссылку, поэтому у меня есть еще один файл конфигурации в папке .ebextensions, который содержит это:
commands:
10_link:
command: sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
После этой команды ln я получаю сообщение об ошибке во время сборки. Если я не выполняю эту команду, я не получаю сообщения об ошибке, но она не работает (example.com/test.php не обслуживается)
Моя последняя попытка заключалась в том, чтобы ничего не делать в папке .ebextensions, и я создал .platform / nginx / conf.d / custom.conf с содержимым
server {
listen 80;
root /var/www/html/example.com;
index index.html index.php;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
}
Кажется, это ближе, поскольку example.com/test.php переходит к файлу, но сервер вместо этого предлагает браузеру загрузить файл php.
В целях тестирования вы можете просто создавать файлы в папке / etc / nginx / sites-enabled.
Для нескольких доменов вы можете использовать
имя_сервера * .domain1.com custom.domain2.com;
Наконец, нам нужно обработать все файлы PHP через FastCGI (в Ubuntu вы можете установить его apt-get install php7.0-fpm
) интерфейс к PHP-FPM.
server {
listen 80;
server_name mydomain.com;
access_log /var/log/nginx/access.log combined;
location / {
root /var/www/html;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
} }