1
0
Fork 0
ansible-collection-kit/roles/nginx/templates/etc/nginx/sites-available/site-vhost.j2
Daniele Tricoli b7706355bf
All checks were successful
ci/woodpecker/push/lint Pipeline was successful
Add geoip2 support for nginx
2023-02-06 22:05:23 +01:00

100 lines
3.2 KiB
Django/Jinja

# {{ ansible_managed }}
server {
server_name {{ item.servername }}{% if item.serveralias is defined %}{% for alias in item.serveralias %} {{ alias }}{% endfor %}{% endif %};
listen 80;
listen [::]:80;
location / {
return 301 https://$server_name$request_uri;
}
{% if item.acme_challenges is defined %}
location ^~ /.well-known/acme-challenge {
alias {{ item.acme_challenges }};
}
{% endif %}
}
{% if item.need_websocket is defined %}
map $http_upgrade $connection_upgrade {
default keep-alive;
'websocket' upgrade;
'' close;
}
{% endif %}
server {
server_name {{ item.servername }}{% if item.serveralias is defined %}{% for alias in item.serveralias %} {{ alias }}{% endfor %}{% endif %};
listen 443 ssl;
listen [::]:443 ssl;
add_header Content-Security-Policy {% if item.header_csp is defined %}{{ item.header_csp | trim }}{% else -%}"default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'"{% endif %} always;
add_header Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), notifications=(), payment=(), usb=()" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
{% if item.ssl_certificate is defined %}ssl_certificate {{ item.ssl_certificate }};{% endif %}
{% if item.ssl_certificate_key is defined %}ssl_certificate_key {{ item.ssl_certificate_key }};{% endif %}
{% if item.ssl_trusted_certificate is defined %}ssl_trusted_certificate {{ item.ssl_trusted_certificate }};{% endif %}
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
{% if item.is_reverse_proxy_site is defined %}
client_body_timeout 5m;
client_header_timeout 5m;
{% endif %}
{% if item.acme_challenges is defined %}
location ^~ /.well-known/acme-challenge {
alias {{ item.acme_challenges }};
}
{% endif %}
{% if item.is_reverse_proxy_site is defined %}
location / {
proxy_pass {{ item.proxy_pass }};
proxy_http_version 1.1;
{% if item.need_websocket is defined %}
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
{% endif %}
proxy_set_header Host $server_name;
proxy_redirect http:// https://;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
}
{% else %}
root {{ nginx_root }}/{{ item.servername }}/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
{% endif %}
error_page 404 /404.html;
access_log {{ nginx_root }}/{{ item.servername }}/logs/access.log{% if nginx_enable_geoip2 %} custom{% endif %};
error_log {{ nginx_root }}/{{ item.servername }}/logs/error.log;
}