Назад | Перейти на главную страницу

Конфигурация настраиваемого Nginx Elastic Beanstalk

Я настраиваю новую среду 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.

  1. В целях тестирования вы можете просто создавать файлы в папке / etc / nginx / sites-enabled.

  2. Для нескольких доменов вы можете использовать

    имя_сервера * .domain1.com custom.domain2.com;

  3. Наконец, нам нужно обработать все файлы 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; 
    } }