我在服务器上使用Nginx,并希望使用Let的加密证书在HTTPS上提供我的应用程序。在部署应用程序代码之前,我在新服务器上执行以下操作:
将以下nginx
配置文件写入sites-available
,以获取certbot。然后符号链接到sites-enabled
并重新启动nginx
server {
listen 80;
server_name foo.bar.com;
allow all;
location ^~ /.well-known/acme-challenge/ {
proxy_pass http://0.0.0.0:22000;
}
}
然后运行certbot
certbot certonly -m foo@bar.com --standalone --http-01-port 22000 --preferred-challenges http --cert-name bar.com -d foo.bar.com --agree-tos --non-interactive
手动运行时,以上所有工作都很正常。
我使用Chef来自动完成上述过程。 Certbot在我第一次部署时得到404。它适用于后续部署。
记下以下细节:
我使用自定义LWRP在Chef expcept nginx安装中运行上述步骤。 Nginx安装由chef_nginx
负责。我已经粘贴了运行上述步骤的LWRP片段。
vhost_file = "#{node['certbot']['sites_configuration_path']}/#{node['certbot']['sites_configuration_file']}"
template vhost_file do
cookbook 'certbot'
source 'nginx-letsencrypt.vhost.conf.erb'
owner 'root'
group 'root'
variables(
server_names: new_resource.sans,
certbot_port: node['certbot']['standalone_port'],
mode: node['certbot']['standalone_mode']
)
mode 00644
only_if "test -d #{node['certbot']['sites_configuration_path']}"
end
nginx_site node['certbot']['sites_configuration_file']
在certbot
端口standalone
上使用22000
即使在首次部署时,如何使工作正常?