mirror of
https://github.com/cheveguerra/Whaticket.git
synced 2026-04-19 12:09:14 +00:00
Initial commit
This commit is contained in:
33
frontend/.docker/add-env-vars.sh
Normal file
33
frontend/.docker/add-env-vars.sh
Normal file
@@ -0,0 +1,33 @@
|
||||
_writeFrontendEnvVars() {
|
||||
ENV_JSON="$(jq --compact-output --null-input 'env | with_entries(select(.key | startswith("REACT_APP_")))')"
|
||||
ENV_JSON_ESCAPED="$(printf "%s" "${ENV_JSON}" | sed -e 's/[\&/]/\\&/g')"
|
||||
sed -i "s/<noscript id=\"env-insertion-point\"><\/noscript>/<script>var ENV=${ENV_JSON_ESCAPED}<\/script>/g" ${PUBLIC_HTML}index.html
|
||||
}
|
||||
|
||||
_writeNginxEnvVars() {
|
||||
dockerize -template /etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
|
||||
}
|
||||
|
||||
_addSslConfig() {
|
||||
SSL_CERTIFICATE=/etc/nginx/ssl/${1}/fullchain.pem;
|
||||
SSL_CERTIFICATE_KEY=/etc/nginx/ssl/${1}/privkey.pem;
|
||||
FILE_CONF=/etc/nginx/sites.d/${1}.conf
|
||||
FILE_SSL_CONF=/etc/nginx/conf.d/00-ssl-redirect.conf;
|
||||
|
||||
if [ -f ${SSL_CERTIFICATE} ] && [ -f ${SSL_CERTIFICATE_KEY} ]; then
|
||||
echo "saving ssl config in ${FILE_CONF}"
|
||||
echo 'include include.d/ssl-redirect.conf;' >> ${FILE_SSL_CONF};
|
||||
echo 'include "include.d/ssl.conf";' >> ${FILE_CONF};
|
||||
echo "ssl_certificate ${SSL_CERTIFICATE};" >> ${FILE_CONF};
|
||||
echo "ssl_certificate_key ${SSL_CERTIFICATE_KEY};" >> ${FILE_CONF};
|
||||
else
|
||||
echo 'listen 80;' >> ${FILE_CONF};
|
||||
echo "ssl ${1} not found >> ${SSL_CERTIFICATE} -> ${SSL_CERTIFICATE_KEY}"
|
||||
fi;
|
||||
}
|
||||
|
||||
_writeFrontendEnvVars;
|
||||
_writeNginxEnvVars;
|
||||
|
||||
_addSslConfig 'backend'
|
||||
_addSslConfig 'frontend'
|
||||
27
frontend/.docker/nginx/conf.d/default.conf
Normal file
27
frontend/.docker/nginx/conf.d/default.conf
Normal file
@@ -0,0 +1,27 @@
|
||||
client_max_body_size 20M;
|
||||
|
||||
upstream backend {
|
||||
server {{ .Env.URL_BACKEND }};
|
||||
}
|
||||
|
||||
server {
|
||||
index index.html;
|
||||
root /var/www/public/;
|
||||
|
||||
{{ if .Env.FRONTEND_SERVER_NAME }}
|
||||
server_name {{ .Env.FRONTEND_SERVER_NAME }};
|
||||
{{else}}
|
||||
server_name _;
|
||||
{{end}}
|
||||
|
||||
include sites.d/frontend.conf;
|
||||
include include.d/letsencrypt.conf;
|
||||
}
|
||||
|
||||
{{if .Env.BACKEND_SERVER_NAME}}
|
||||
server {
|
||||
server_name {{ .Env.BACKEND_SERVER_NAME }};
|
||||
include sites.d/backend.conf;
|
||||
include include.d/letsencrypt.conf;
|
||||
}
|
||||
{{end}}
|
||||
3
frontend/.docker/nginx/include.d/allcache.conf
Normal file
3
frontend/.docker/nginx/include.d/allcache.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
expires 1y;
|
||||
add_header Cache-Control "public";
|
||||
access_log off;
|
||||
45
frontend/.docker/nginx/include.d/letsencrypt.conf
Normal file
45
frontend/.docker/nginx/include.d/letsencrypt.conf
Normal file
@@ -0,0 +1,45 @@
|
||||
#############################################################################
|
||||
# Configuration file for Let's Encrypt ACME Challenge location
|
||||
# This file is already included in listen_xxx.conf files.
|
||||
# Do NOT include it separately!
|
||||
#############################################################################
|
||||
#
|
||||
# This config enables to access /.well-known/acme-challenge/xxxxxxxxxxx
|
||||
# on all our sites (HTTP), including all subdomains.
|
||||
# This is required by ACME Challenge (webroot authentication).
|
||||
# You can check that this location is working by placing ping.txt here:
|
||||
# /var/www/letsencrypt/.well-known/acme-challenge/ping.txt
|
||||
# And pointing your browser to:
|
||||
# http://xxx.domain.tld/.well-known/acme-challenge/ping.txt
|
||||
#
|
||||
# Sources:
|
||||
# https://community.letsencrypt.org/t/howto-easy-cert-generation-and-renewal-with-nginx/3491
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
# Rule for legitimate ACME Challenge requests (like /.well-known/acme-challenge/xxxxxxxxx)
|
||||
# We use ^~ here, so that we don't check other regexes (for speed-up). We actually MUST cancel
|
||||
# other regex checks, because in our other config files have regex rule that denies access to files with dotted names.
|
||||
location ^~ /.well-known/acme-challenge/ {
|
||||
|
||||
# Set correct content type. According to this:
|
||||
# https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29
|
||||
# Current specification requires "text/plain" or no content header at all.
|
||||
# It seems that "text/plain" is a safe option.
|
||||
default_type "text/plain";
|
||||
|
||||
# This directory must be the same as in /etc/letsencrypt/cli.ini
|
||||
# as "webroot-path" parameter. Also don't forget to set "authenticator" parameter
|
||||
# there to "webroot".
|
||||
# Do NOT use alias, use root! Target directory is located here:
|
||||
# /var/www/common/letsencrypt/.well-known/acme-challenge/
|
||||
root /var/www/letsencrypt;
|
||||
autoindex on;
|
||||
}
|
||||
|
||||
# Hide /acme-challenge subdirectory and return 404 on all requests.
|
||||
# It is somewhat more secure than letting Nginx return 403.
|
||||
# Ending slash is important!
|
||||
location = /.well-known/acme-challenge/ {
|
||||
return 404;
|
||||
}
|
||||
5
frontend/.docker/nginx/include.d/nocache.conf
Normal file
5
frontend/.docker/nginx/include.d/nocache.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
add_header Last-Modified $date_gmt;
|
||||
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
|
||||
if_modified_since off;
|
||||
expires off;
|
||||
etag off;
|
||||
16
frontend/.docker/nginx/include.d/spa.conf
Normal file
16
frontend/.docker/nginx/include.d/spa.conf
Normal file
@@ -0,0 +1,16 @@
|
||||
# X-Frame-Options is to prevent from clickJacking attack
|
||||
add_header X-Frame-Options SAMEORIGIN;
|
||||
|
||||
# disable content-type sniffing on some browsers.
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
|
||||
# This header enables the Cross-site scripting (XSS) filter
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
|
||||
# This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
|
||||
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade";
|
||||
|
||||
# Enables response header of "Vary: Accept-Encoding"
|
||||
gzip_vary on;
|
||||
5
frontend/.docker/nginx/include.d/ssl-redirect.conf
Normal file
5
frontend/.docker/nginx/include.d/ssl-redirect.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
return 302 https://$host$request_uri;
|
||||
}
|
||||
2
frontend/.docker/nginx/include.d/ssl.conf
Normal file
2
frontend/.docker/nginx/include.d/ssl.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
11
frontend/.docker/nginx/sites.d/backend.conf
Normal file
11
frontend/.docker/nginx/sites.d/backend.conf
Normal file
@@ -0,0 +1,11 @@
|
||||
location / {
|
||||
proxy_pass http://backend;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
}
|
||||
11
frontend/.docker/nginx/sites.d/frontend.conf
Normal file
11
frontend/.docker/nginx/sites.d/frontend.conf
Normal file
@@ -0,0 +1,11 @@
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
include include.d/nocache.conf;
|
||||
}
|
||||
|
||||
location /static {
|
||||
alias /var/www/public/static/;
|
||||
include include.d/allcache.conf;
|
||||
}
|
||||
|
||||
include "include.d/spa.conf";
|
||||
Reference in New Issue
Block a user