Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何通过chef将域名传递给Nginx conf_Amazon Web Services_Nginx_Chef Infra - Fatal编程技术网

Amazon web services 如何通过chef将域名传递给Nginx conf

Amazon web services 如何通过chef将域名传递给Nginx conf,amazon-web-services,nginx,chef-infra,Amazon Web Services,Nginx,Chef Infra,我已经通过chef安装了Nginx,但我必须将“AWS实例公共IP传递给chef Recipe” 我正在创建AWS实例,并通过Chef在该实例上安装了我的应用程序 我必须使用默认安装方法和nginx.conf配置文件运行nginx 那么,我们如何在我的Nginx配置中使用新创建的实例Public IP或EC-2 URL来代替server_name,以便我可以浏览URL?或者如何将域名传递到Nginx.conf?您可以使用EC2元数据: curl http://169.254.169.254/la

我已经通过chef安装了Nginx,但我必须将“AWS实例公共IP传递给chef Recipe”

我正在创建AWS实例,并通过Chef在该实例上安装了我的应用程序

我必须使用默认安装方法和nginx.conf配置文件运行nginx


那么,我们如何在我的Nginx配置中使用新创建的实例Public IP或EC-2 URL来代替server_name,以便我可以浏览URL?或者如何将域名传递到Nginx.conf?

您可以使用EC2元数据:

curl http://169.254.169.254/latest/meta-data/public-ipv4
curl http://169.254.169.254/latest/meta-data/public-hostname
要获取所有可用密钥的列表,请尝试以下操作:

curl http://169.254.169.254/latest/meta-data/

ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
product-codes
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
但是服务器名称可以为空,请参见:

如果服务器块中未定义服务器名称,则nginx使用 空名称作为服务器名称。0.8.48之前的Nginx版本使用机器的主机名作为服务器 本例中的名称。如果服务器名称定义为“$hostname”(0.9.4), 使用机器的主机名


您可以利用ohai插件ec2,它提供了正确的属性,对于这种情况,主要是
节点['ec2']['public\u ipv4']

缺点是taht ohai无法猜测自己您在AWS实例上,并且没有运行插件,为此您必须创建一个提示文件,当然这有一个解决方案

在chef run中也有创建提示的示例,但它们在我看来相当复杂,下面是我要做的(未经测试,如果出现问题,请评论):


您必须在跑步列表的早期添加此食谱,并且此ErcPipe的食谱必须在其
元数据中包含
依赖“ohai”
。rb
才能加载ohai食谱。

谢谢Anatoly。。。。但我使用的是厨师工具,所以在厨师工具中。如何将Aws控制台中的实例IP或EC2 URL传递到Nginx.conf?
# Resource to reload the ec2 plugin if the hint is created
ohai 'ec2' do
  plugin 'ec2' 
  action :nothing
end

ohai_hint 'ec2' do
  notifies :reload, 'ohai[ec2]', :immediately # to force ohai to run the ec2 plugin now
end