Я хотел сделать то же самое. После того, как много копания, я нашел 2 способа сделать это:
Вариант 1. Используйте ebextension, чтобы заменить файл конфигурации Nginx с пользовательской конфигурации
Я использовал этот вариант, поскольку он является самым простым.
После пример, приведенный в Amazon Using the AWS Elastic Beanstalk Node.js Platform - Configuring the Proxy Server - Example .ebextensions/proxy.config, мы можем видеть, что они создают ebextension, который создает файл с именем /etc/nginx/conf.d/proxy.conf. Этот файл содержит тот же контент, что и исходный файл конфигурации nginx. Затем они удаляют исходный файл конфигурации nginx, используя container_commands.
Вам необходимо заменить пример Amazon на содержимое вашего текущего файла конфигурации nginx. Обратите внимание, что файлы конфигурации nginx, которые должны быть удалены в команде сдерживания, также должны быть обновлены. Те, которые я использовал являются:
- файл конфигурации Nginx 1: /opt/elasticbeanstalk/support/conf/webapp_healthd.conf
- конфигурации Nginx файл 2: /etc/nginx/conf.d/ webapp_healthd.конф
Поэтому окончательный ebextension, что работал для меня выглядит следующим образом:
/.ebextensions/nginx_custom.config
# Remove the default nginx configuration generated by elastic beanstalk and
# add a custom configuration to include the custom location in the server block.
# Note that the entire nginx configuration was taken from the generated /etc/nginx/conf.d/webapp_healthd.conf file
# and then, we just added the extra location we needed.
files:
/etc/nginx/conf.d/proxy_custom.conf:
mode: "000644"
owner: root
group: root
content: |
upstream my_app {
server unix:///var/run/puma/my_app.sock;
}
log_format healthd '$msec"$uri"'
'$status"$request_time"$upstream_response_time"'
'$http_x_forwarded_for';
server {
listen 80;
server_name _ localhost; # need to listen to localhost for worker tier
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
location/{
proxy_pass http://my_app; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /assets {
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
location /public {
alias /var/app/current/public;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
location /robots.txt {
return 200 "User-agent: *\nDisallow: /";
}
}
container_commands:
# Remove the default nginx configuration generated by elastic beanstalk
removeconfig:
command: "rm -f /opt/elasticbeanstalk/support/conf/webapp_healthd.conf /etc/nginx/conf.d/webapp_healthd.conf"
После развертывания этого изменения, вы должны перезагрузить сервер nginx. Вы можете подключиться к серверу, используя Е.Б. SSH-среда-имя вашей, а затем запустить Nginx службы SUDO перезагружать
Вариант 2. Используйте ebextension изменить генератор файлов конфигурации Nginx, так что она включает в себя пользовательские местоположения в конечной конфигурации Nginx файла
Второй вариант основан на этом посту: jabbermarky's answer in Amazon forums
Он объясняет этот метод очень хорошо в своем ответе, поэтому я рекомендую вам прочитать, если вы хотите реализовать. Если вы собираетесь реализовать этот ответ, вам необходимо обновить местоположение генератора конфигурации файла nginx.
Обратите внимание, что я не тестировал эту опцию.
Таким образом, он добавляет сценарий оболочки, который должен быть выполнен до создания файла конфигурации nginx. В этом сценарии оболочки он модифицирует генератор файлов конфигурации nginx, чтобы включить в него блок блоков сервера, который он хочет, в сгенерированном файле конфигурации nginx. Наконец, он добавляет файл, содержащий нужные ему местоположения в блоке сервера окончательного файла конфигурации nginx.
На самом деле я пробовал это, и он полностью провалился. Из журналов: '' ' ------------------------------------- /var /log/nginx/error.log ------------------------------------- 2014/05/09 11:46:09 [emerg] 13740 # 0: директива "location" здесь не разрешена в /etc/nginx/conf.d/robots.conf:1 2014/05/09 11:46:11 [emerg ] 13746 # 0: директива «location» не разрешена здесь, в /etc/nginx/conf.d/robots.conf:1 '' ' – rgareth
О, bugger. Да, хорошо, что, возможно, невозможно достичь во всем мире. Вам действительно нужно найти и заменить содержимое в самом файле конфигурации nginx. Это немного сложнее, но еще достижимо. – jufemaiz