[nginx] Add feature to manage multiple certificates, for example for crans.org and for adm.crans.org
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>certbot_on_virtu
parent
96d5f945e3
commit
72238d79ed
|
@ -9,7 +9,7 @@ loc_nginx:
|
||||||
servers:
|
servers:
|
||||||
- server_name:
|
- server_name:
|
||||||
- lists.crans.org
|
- lists.crans.org
|
||||||
ssl: true
|
ssl: crans.org
|
||||||
root: "/usr/lib/cgi-bin/mailman/"
|
root: "/usr/lib/cgi-bin/mailman/"
|
||||||
index:
|
index:
|
||||||
- index.htm
|
- index.htm
|
||||||
|
|
|
@ -4,11 +4,14 @@ glob_nginx:
|
||||||
who: "L'équipe technique du Cr@ns"
|
who: "L'équipe technique du Cr@ns"
|
||||||
service_name: service
|
service_name: service
|
||||||
ssl:
|
ssl:
|
||||||
cert: /etc/letsencrypt/live/crans.org/fullchain.pem
|
# Add adm.crans.org if necessary
|
||||||
cert_key: /etc/letsencrypt/live/crans.org/privkey.pem
|
- name: crans.org
|
||||||
trusted_cert: /etc/letsencrypt/live/crans.org/chain.pem
|
cert: /etc/letsencrypt/live/crans.org/fullchain.pem
|
||||||
|
cert_key: /etc/letsencrypt/live/crans.org/privkey.pem
|
||||||
|
trusted_cert: /etc/letsencrypt/live/crans.org/chain.pem
|
||||||
servers:
|
servers:
|
||||||
- ssl: false
|
- ssl: false # Replace by crans.org or adm.crans.org
|
||||||
|
default: true
|
||||||
server_name:
|
server_name:
|
||||||
- "default"
|
- "default"
|
||||||
- "_"
|
- "_"
|
||||||
|
@ -21,4 +24,5 @@ glob_nginx:
|
||||||
auth_passwd: []
|
auth_passwd: []
|
||||||
default_server:
|
default_server:
|
||||||
default_ssl_server:
|
default_ssl_server:
|
||||||
|
default_ssl_domain: crans.org
|
||||||
deploy_robots_file: false
|
deploy_robots_file: false
|
||||||
|
|
|
@ -37,26 +37,26 @@ to_backup:
|
||||||
loc_nginx:
|
loc_nginx:
|
||||||
service_name: ftp
|
service_name: ftp
|
||||||
servers:
|
servers:
|
||||||
server_name:
|
- server_name:
|
||||||
- "ftp"
|
- "ftp"
|
||||||
- "ftp.*"
|
- "ftp.*"
|
||||||
- "mirror"
|
- "mirror"
|
||||||
- "mirror.*"
|
- "mirror.*"
|
||||||
- "archive.ubuntu.com"
|
- "archive.ubuntu.com"
|
||||||
- "fr.archive.ubuntu.com"
|
- "fr.archive.ubuntu.com"
|
||||||
- "security.ubuntu.com"
|
- "security.ubuntu.com"
|
||||||
- "ftps"
|
- "ftps"
|
||||||
- "ftps.*"
|
- "ftps.*"
|
||||||
root: "/pubftp"
|
root: "/pubftp"
|
||||||
locations:
|
locations:
|
||||||
- filter: "/"
|
- filter: "/"
|
||||||
- params:
|
params:
|
||||||
- "autoindex on"
|
- "autoindex on"
|
||||||
- "autoindex_exact_size off"
|
- "autoindex_exact_size off"
|
||||||
- "add_before_body /.html/HEADER.html"
|
- "add_before_body /.html/HEADER.html"
|
||||||
- "add_after_body /.html/FOOTER.html"
|
- "add_after_body /.html/FOOTER.html"
|
||||||
- filter: "/pub/events/"
|
- filter: "/pub/events/"
|
||||||
params:
|
params:
|
||||||
- "mp4"
|
- "mp4"
|
||||||
- "mp4_buffer_size 1m"
|
- "mp4_buffer_size 1m"
|
||||||
- "mp4_max_buffer_size 5m"
|
- "mp4_max_buffer_size 5m"
|
||||||
|
|
|
@ -4,7 +4,12 @@ interfaces:
|
||||||
srv: ens19
|
srv: ens19
|
||||||
|
|
||||||
loc_certbot:
|
loc_certbot:
|
||||||
domains: "irc.crans.org"
|
- dns_rfc2136_server: '172.16.10.147'
|
||||||
|
dns_rfc2136_name: certbot_challenge.
|
||||||
|
dns_rfc2136_secret: "{{ vault_certbot_dns_secret }}"
|
||||||
|
mail: root@crans.org
|
||||||
|
certname: crans.org
|
||||||
|
domains: "irc.crans.org"
|
||||||
|
|
||||||
loc_nginx:
|
loc_nginx:
|
||||||
service_name: "thelounge"
|
service_name: "thelounge"
|
||||||
|
@ -12,7 +17,8 @@ loc_nginx:
|
||||||
- server_name:
|
- server_name:
|
||||||
- "irc.crans.org"
|
- "irc.crans.org"
|
||||||
- "irc"
|
- "irc"
|
||||||
ssl: true
|
default: true
|
||||||
|
ssl: crans.org
|
||||||
locations:
|
locations:
|
||||||
- filter: "^~ /web/"
|
- filter: "^~ /web/"
|
||||||
params:
|
params:
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
---
|
---
|
||||||
- hosts: irc
|
- hosts: irc
|
||||||
vars:
|
vars:
|
||||||
certbot: '{{ glob_certbot | default({}) | combine(loc_certbot | default({})) }}'
|
certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}'
|
||||||
nginx: '{{ glob_nginx | default({}) | combine(loc_nginx | default({})) }}'
|
nginx: '{{ glob_nginx | default({}) | combine(loc_nginx | default({})) }}'
|
||||||
thelounge: '{{ glob_thelounge | default({}) | combine(loc_thelounge | default({})) }}'
|
thelounge: '{{ glob_thelounge | default({}) | combine(loc_thelounge | default({})) }}'
|
||||||
roles:
|
roles:
|
||||||
|
|
|
@ -8,6 +8,10 @@
|
||||||
default_url: "https://lists.crans.org/"
|
default_url: "https://lists.crans.org/"
|
||||||
default_host: "lists.crans.org"
|
default_host: "lists.crans.org"
|
||||||
default_language: "fr"
|
default_language: "fr"
|
||||||
|
custom_logo: "crans_icon_dark.svg"
|
||||||
|
custom_logo_name: "crans.svg"
|
||||||
|
custom_logo_url: "https://www.crans.org/"
|
||||||
|
custom_logo_alt: "CRANS"
|
||||||
spamassassin: "SpamAssassin_crans"
|
spamassassin: "SpamAssassin_crans"
|
||||||
smtphost: "smtp.adm.crans.org"
|
smtphost: "smtp.adm.crans.org"
|
||||||
mynetworks: ['138.231.0.0/16', '185.230.76.0/22', '2a0c:700:0::/40']
|
mynetworks: ['138.231.0.0/16', '185.230.76.0/22', '2a0c:700:0::/40']
|
||||||
|
|
|
@ -7,16 +7,22 @@
|
||||||
retries: 3
|
retries: 3
|
||||||
until: apt_result is succeeded
|
until: apt_result is succeeded
|
||||||
|
|
||||||
- name: Copy snippets
|
- name: Copy proxypass snippets
|
||||||
template:
|
template:
|
||||||
src: "nginx/snippets/{{ item }}.j2"
|
src: "nginx/snippets/options-proxypass.conf.j2"
|
||||||
dest: "/etc/nginx/snippets/{{ item }}"
|
dest: "/etc/nginx/snippets/options-proxypass.conf"
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
loop:
|
|
||||||
- options-ssl.conf
|
- name: Copy SSL snippets
|
||||||
- options-proxypass.conf
|
template:
|
||||||
|
src: "nginx/snippets/options-ssl.conf.j2"
|
||||||
|
dest: "/etc/nginx/snippets/options-ssl.{{ item.name }}.conf"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
loop: "{{ nginx.ssl }}"
|
||||||
|
|
||||||
- name: Copy dhparam
|
- name: Copy dhparam
|
||||||
template:
|
template:
|
||||||
|
@ -98,12 +104,6 @@
|
||||||
group: www-data
|
group: www-data
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
|
||||||
- name: Indicate role in motd
|
|
||||||
template:
|
|
||||||
src: update-motd.d/05-service.j2
|
|
||||||
dest: /etc/update-motd.d/05-nginx
|
|
||||||
mode: 0755
|
|
||||||
|
|
||||||
- name: Install passwords
|
- name: Install passwords
|
||||||
when: nginx.auth_passwd|length > 0
|
when: nginx.auth_passwd|length > 0
|
||||||
template:
|
template:
|
||||||
|
@ -119,3 +119,9 @@
|
||||||
owner: www-data
|
owner: www-data
|
||||||
group: www-data
|
group: www-data
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
|
||||||
|
- name: Indicate role in motd
|
||||||
|
template:
|
||||||
|
src: update-motd.d/05-service.j2
|
||||||
|
dest: /etc/update-motd.d/05-nginx
|
||||||
|
mode: 0755
|
||||||
|
|
|
@ -19,7 +19,7 @@ upstream {{ upstream.name }} {
|
||||||
server {
|
server {
|
||||||
listen 443 default_server ssl;
|
listen 443 default_server ssl;
|
||||||
listen [::]:443 default_server ssl;
|
listen [::]:443 default_server ssl;
|
||||||
include "/etc/nginx/snippets/options-ssl.conf";
|
include "/etc/nginx/snippets/options-ssl.{{ nginx.default_ssl_domain }}.conf";
|
||||||
|
|
||||||
server_name _;
|
server_name _;
|
||||||
charset utf-8;
|
charset utf-8;
|
||||||
|
@ -55,8 +55,8 @@ server {
|
||||||
{% if server.ssl is defined and server.ssl -%}
|
{% if server.ssl is defined and server.ssl -%}
|
||||||
# Redirect HTTP to HTTPS
|
# Redirect HTTP to HTTPS
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80{% if server.default is defined and server.default %} default_server{% endif %};
|
||||||
listen [::]:80;
|
listen [::]:80{% if server.default is defined and server.default %} default_server{% endif %};
|
||||||
|
|
||||||
server_name {{ server.server_name|join(" ") }};
|
server_name {{ server.server_name|join(" ") }};
|
||||||
charset utf-8;
|
charset utf-8;
|
||||||
|
@ -72,9 +72,9 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
{% if server.ssl is defined and server.ssl -%}
|
{% if server.ssl is defined and server.ssl -%}
|
||||||
listen 443 ssl;
|
listen 443{% if server.default is defined and server.default %} default_server{% endif %} ssl;
|
||||||
listen [::]:443 ssl;
|
listen [::]:443{% if server.default is defined and server.default %} default_server{% endif %} ssl;
|
||||||
include "/etc/nginx/snippets/options-ssl.conf";
|
include "/etc/nginx/snippets/options-ssl.{{ server.ssl }}.conf";
|
||||||
{% else -%}
|
{% else -%}
|
||||||
listen 80 default;
|
listen 80 default;
|
||||||
listen [::]:80 default;
|
listen [::]:80 default;
|
||||||
|
@ -86,29 +86,21 @@ server {
|
||||||
# Hide Nginx version
|
# Hide Nginx version
|
||||||
server_tokens off;
|
server_tokens off;
|
||||||
|
|
||||||
{% if server.root is defined -%}
|
{% if server.root is defined %}root {{ server.root }};{% endif %}
|
||||||
root {{ server.root }};
|
{% if server.index is defined %}index {{ server.index|join(" ") }};{% endif %}
|
||||||
{% endif -%}
|
|
||||||
{% if server.index is defined -%}
|
|
||||||
index {{ server.index|join(" ") }};
|
|
||||||
{% endif -%}
|
|
||||||
|
|
||||||
{% if server.access_log is defined -%}
|
{% if server.access_log is defined %}access_log {{ server.access_log }};{% endif %}
|
||||||
access_log {{ server.access_log }};
|
{% if server.error_log is defined %}error_log {{ server.error_log }};{% endif %}
|
||||||
{% endif -%}
|
|
||||||
{% if server.error_log is defined -%}
|
|
||||||
error_log {{ server.error_log }};
|
|
||||||
{% endif -%}
|
|
||||||
|
|
||||||
{% if server.locations is defined -%}
|
{% if server.locations is defined %}
|
||||||
|
{% for location in server.locations %}
|
||||||
{% for location in server.locations -%}
|
|
||||||
location {{ location.filter }} {
|
location {{ location.filter }} {
|
||||||
{% for param in location.params -%}
|
{% for param in location.params %}
|
||||||
{{ param }};
|
{{ param }};
|
||||||
{% endfor -%}
|
{% endfor %}
|
||||||
}
|
}
|
||||||
{% endfor -%}
|
|
||||||
{% endif -%}
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
}
|
}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{ ansible_header | comment }}
|
{{ ansible_header | comment }}
|
||||||
|
|
||||||
ssl_certificate {{ nginx.ssl.cert }};
|
ssl_certificate {{ item.cert }};
|
||||||
ssl_certificate_key {{ nginx.ssl.cert_key }};
|
ssl_certificate_key {{ item.cert_key }};
|
||||||
ssl_session_timeout 1d;
|
ssl_session_timeout 1d;
|
||||||
ssl_session_cache shared:MozSSL:10m;
|
ssl_session_cache shared:MozSSL:10m;
|
||||||
ssl_session_tickets off;
|
ssl_session_tickets off;
|
||||||
|
@ -13,5 +13,5 @@ ssl_prefer_server_ciphers off;
|
||||||
# Enable OCSP Stapling, point to certificate chain
|
# Enable OCSP Stapling, point to certificate chain
|
||||||
ssl_stapling on;
|
ssl_stapling on;
|
||||||
ssl_stapling_verify on;
|
ssl_stapling_verify on;
|
||||||
ssl_trusted_certificate {{ nginx.ssl.trusted_cert }};
|
ssl_trusted_certificate {{ item.trusted_cert }};
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
#!/usr/bin/tail +14
|
|
||||||
{{ ansible_header | comment }}
|
|
||||||
[0m> [38;5;82mNGINX[0m a été déployé sur cette machine. Voir [38;5;6m/etc/nginx/[0m.
|
|
Loading…
Reference in New Issue