mirror of
https://github.com/nginx-proxy/docker-letsencrypt-nginx-proxy-companion
synced 2024-11-22 20:42:04 +01:00
Create location configurations automatically
This commit is contained in:
parent
0779129dd5
commit
459b1ed3c9
@ -57,6 +57,7 @@ if [[ "$*" == "/bin/bash /app/start.sh" ]]; then
|
||||
check_docker_socket
|
||||
get_nginx_proxy_cid
|
||||
check_writable_directory '/etc/nginx/certs'
|
||||
check_writable_directory '/etc/nginx/vhost.d'
|
||||
check_writable_directory '/usr/share/nginx/html'
|
||||
fi
|
||||
|
||||
|
23
app/functions.lib
Normal file
23
app/functions.lib
Normal file
@ -0,0 +1,23 @@
|
||||
declare -r VHOST_DIR=/etc/nginx/vhost.d
|
||||
declare -r START_HEADER='## Start of configuration add by letsencrypt container'
|
||||
declare -r END_HEADER='## End of configuration add by letsencrypt container'
|
||||
|
||||
add_location_configuration() {
|
||||
local domain="$1"
|
||||
[[ -z "$domain" || ! -f "${VHOST_DIR}/${domain}" ]] && domain=default
|
||||
[[ -f "${VHOST_DIR}/${domain}" && \
|
||||
-n $(sed -n "/$START_HEADER/,/$END_HEADER/p" "${VHOST_DIR}/${domain}") ]] && return 0
|
||||
echo "$START_HEADER" > "${VHOST_DIR}/${domain}".new
|
||||
cat /app/nginx_location.conf >> "${VHOST_DIR}/${domain}".new
|
||||
echo "$END_HEADER" >> "${VHOST_DIR}/${domain}".new
|
||||
[[ -f "${VHOST_DIR}/${domain}" ]] && cat "${VHOST_DIR}/${domain}" >> "${VHOST_DIR}/${domain}".new
|
||||
mv -f "${VHOST_DIR}/${domain}".new "${VHOST_DIR}/${domain}"
|
||||
return 1
|
||||
}
|
||||
|
||||
remove_all_location_configurations() {
|
||||
for file in "${VHOST_DIR}"/*; do
|
||||
[[ -n $(sed -n "/$START_HEADER/,/$END_HEADER/p" "$file") ]] && \
|
||||
sed -i "/$START_HEADER/,/$END_HEADER/d" "$file"
|
||||
done
|
||||
}
|
@ -5,6 +5,13 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
seconds_to_wait=3600
|
||||
acme_ca_uri="${ACME_CA_URI:-https://acme-v01.api.letsencrypt.org/directory}"
|
||||
|
||||
source /app/functions.lib
|
||||
|
||||
reload_nginx() {
|
||||
/usr/bin/docker exec -t $NGINX_PROXY_CID \
|
||||
sh -c '/usr/local/bin/docker-gen -only-exposed /app/nginx.tmpl /etc/nginx/conf.d/default.conf;nginx -s reload'
|
||||
}
|
||||
|
||||
update_certs() {
|
||||
[[ ! -f "$DIR"/letsencrypt_service_data ]] && return
|
||||
|
||||
@ -32,6 +39,8 @@ update_certs() {
|
||||
for domain in "${!hosts_array}"; do
|
||||
# Add all the domains to certificate
|
||||
params_d_str+=" -d $domain"
|
||||
# Add location configuration for the domain
|
||||
add_location_configuration "$domain" || reload_nginx
|
||||
done
|
||||
echo "Creating/renewal $base_domain certificates... (${hosts_array_expanded[*]})"
|
||||
/usr/bin/simp_le \
|
||||
@ -52,10 +61,7 @@ update_certs() {
|
||||
reload_nginx='true'
|
||||
fi
|
||||
done
|
||||
if [[ "$reload_nginx" == 'true' ]]; then
|
||||
/usr/bin/docker exec -t $NGINX_PROXY_CID \
|
||||
sh -c '/usr/local/bin/docker-gen -only-exposed /app/nginx.tmpl /etc/nginx/conf.d/default.conf;nginx -s reload'
|
||||
fi
|
||||
[[ "$reload_nginx" == 'true' ]] && reload_nginx
|
||||
}
|
||||
|
||||
pid=
|
||||
|
4
app/nginx_location.conf
Normal file
4
app/nginx_location.conf
Normal file
@ -0,0 +1,4 @@
|
||||
location /.well-known/ {
|
||||
root /usr/share/nginx/html;
|
||||
try_files $uri =404;
|
||||
}
|
@ -5,6 +5,9 @@ term_handler() {
|
||||
[[ -n "$docker_gen_pid" ]] && kill $docker_gen_pid
|
||||
[[ -n "$letsencrypt_service_pid" ]] && kill $letsencrypt_service_pid
|
||||
|
||||
source /app/functions.lib
|
||||
remove_all_location_configurations
|
||||
|
||||
exit 143; # 128 + 15 -- SIGTERM
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user