aboutsummaryrefslogtreecommitdiff
path: root/templates/nginx
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-11-11 01:12:29 +0800
committerYuqian Yang <crupest@crupest.life>2024-12-22 17:45:13 +0800
commitb834953fa61d816b9a955640ad12d244316ce904 (patch)
tree4197980a04943b42941d3fce7cb16d1f7ea400bd /templates/nginx
parent7e85627eb0d0126baf1e698ffdeae0f3c5fc693d (diff)
downloadcrupest-b834953fa61d816b9a955640ad12d244316ce904.tar.gz
crupest-b834953fa61d816b9a955640ad12d244316ce904.tar.bz2
crupest-b834953fa61d816b9a955640ad12d244316ce904.zip
HALF WORK: 2024.12.22
code.
Diffstat (limited to 'templates/nginx')
-rw-r--r--templates/nginx/2fa.conf.template19
-rw-r--r--templates/nginx/code.conf.template22
-rw-r--r--templates/nginx/common/acme-challenge3
-rw-r--r--templates/nginx/common/https-redirect3
-rw-r--r--templates/nginx/common/proxy-common7
-rw-r--r--templates/nginx/forbid_unknown_domain.conf8
-rw-r--r--templates/nginx/git.conf.template22
-rw-r--r--templates/nginx/mail.conf.template27
-rw-r--r--templates/nginx/root.conf.template28
-rw-r--r--templates/nginx/ssl.conf.template17
-rw-r--r--templates/nginx/timeline.conf.template7
-rw-r--r--templates/nginx/websocket.conf4
12 files changed, 167 insertions, 0 deletions
diff --git a/templates/nginx/2fa.conf.template b/templates/nginx/2fa.conf.template
new file mode 100644
index 0000000..aad66c1
--- /dev/null
+++ b/templates/nginx/2fa.conf.template
@@ -0,0 +1,19 @@
+server {
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name 2fa.${CRUPEST_DOMAIN};
+
+ location / {
+ include common/proxy-common;
+ proxy_pass http://2fauth:8000/;
+ }
+}
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name 2fa.${CRUPEST_DOMAIN};
+
+ include common/https-redirect;
+ include common/acme-challenge;
+}
diff --git a/templates/nginx/code.conf.template b/templates/nginx/code.conf.template
new file mode 100644
index 0000000..a67500d
--- /dev/null
+++ b/templates/nginx/code.conf.template
@@ -0,0 +1,22 @@
+server {
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name code.${CRUPEST_DOMAIN};
+
+ location / {
+ include common/proxy-common;
+ proxy_pass http://debian-dev:8080/;
+ }
+
+ client_max_body_size 5G;
+}
+
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name code.${CRUPEST_DOMAIN};
+
+ include common/https-redirect;
+ include common/acme-challenge;
+}
diff --git a/templates/nginx/common/acme-challenge b/templates/nginx/common/acme-challenge
new file mode 100644
index 0000000..26054b8
--- /dev/null
+++ b/templates/nginx/common/acme-challenge
@@ -0,0 +1,3 @@
+location /.well-known/acme-challenge {
+ root /srv/acme;
+}
diff --git a/templates/nginx/common/https-redirect b/templates/nginx/common/https-redirect
new file mode 100644
index 0000000..56d095d
--- /dev/null
+++ b/templates/nginx/common/https-redirect
@@ -0,0 +1,3 @@
+location / {
+ return 301 https://$host$request_uri;
+}
diff --git a/templates/nginx/common/proxy-common b/templates/nginx/common/proxy-common
new file mode 100644
index 0000000..4193548
--- /dev/null
+++ b/templates/nginx/common/proxy-common
@@ -0,0 +1,7 @@
+proxy_http_version 1.1;
+proxy_set_header Upgrade $http_upgrade;
+proxy_set_header Connection $connection_upgrade;
+proxy_set_header Host $host;
+proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+proxy_set_header X-Forwarded-Proto $scheme;
+proxy_set_header X-Real-IP $remote_addr;
diff --git a/templates/nginx/forbid_unknown_domain.conf b/templates/nginx/forbid_unknown_domain.conf
new file mode 100644
index 0000000..ae96393
--- /dev/null
+++ b/templates/nginx/forbid_unknown_domain.conf
@@ -0,0 +1,8 @@
+server {
+ listen 80 default_server;
+ listen [::]:80 default_server;
+ listen 443 ssl http2 default_server;
+ listen [::]:443 ssl http2 default_server;
+
+ return 444;
+}
diff --git a/templates/nginx/git.conf.template b/templates/nginx/git.conf.template
new file mode 100644
index 0000000..ea2a627
--- /dev/null
+++ b/templates/nginx/git.conf.template
@@ -0,0 +1,22 @@
+server {
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name git.${CRUPEST_DOMAIN};
+
+ location / {
+ include common/proxy-common;
+ proxy_pass http://forgejo:3000/;
+ }
+
+ client_max_body_size 5G;
+}
+
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name git.${CRUPEST_DOMAIN};
+
+ include common/https-redirect;
+ include common/acme-challenge;
+}
diff --git a/templates/nginx/mail.conf.template b/templates/nginx/mail.conf.template
new file mode 100644
index 0000000..ba2e44e
--- /dev/null
+++ b/templates/nginx/mail.conf.template
@@ -0,0 +1,27 @@
+server {
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name mail.${CRUPEST_DOMAIN};
+
+ location / {
+ include common/proxy-common;
+ proxy_pass http://roundcubemail:80/;
+ }
+
+ location /rspamd/ {
+ include common/proxy-common;
+ proxy_pass http://mailserver:11334/;
+ }
+
+ client_max_body_size 5G;
+}
+
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name mail.${CRUPEST_DOMAIN};
+
+ include common/https-redirect;
+ include common/acme-challenge;
+}
diff --git a/templates/nginx/root.conf.template b/templates/nginx/root.conf.template
new file mode 100644
index 0000000..3f20cf1
--- /dev/null
+++ b/templates/nginx/root.conf.template
@@ -0,0 +1,28 @@
+server {
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name ${CRUPEST_DOMAIN};
+
+ location / {
+ root /srv/www;
+ }
+
+ location /_$CRUPEST_V2RAY_PATH {
+ if ($http_upgrade != "websocket") {
+ return 404;
+ }
+
+ proxy_redirect off;
+ include common/proxy-common;
+ proxy_pass http://v2ray:10000;
+ }
+}
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name ${CRUPEST_DOMAIN};
+
+ include common/https-redirect;
+ include common/acme-challenge;
+}
diff --git a/templates/nginx/ssl.conf.template b/templates/nginx/ssl.conf.template
new file mode 100644
index 0000000..54205f1
--- /dev/null
+++ b/templates/nginx/ssl.conf.template
@@ -0,0 +1,17 @@
+# This file contains important security parameters. If you modify this file
+# manually, Certbot will be unable to automatically provide future security
+# updates. Instead, Certbot will print and log an error message with a path to
+# the up-to-date file that you will need to refer to when manually updating
+# this file. Contents are based on https://ssl-config.mozilla.org
+
+ssl_certificate /etc/letsencrypt/live/${CRUPEST_DOMAIN}/fullchain.pem;
+ssl_certificate_key /etc/letsencrypt/live/${CRUPEST_DOMAIN}/privkey.pem;
+
+ssl_session_cache shared:le_nginx_SSL:10m;
+ssl_session_timeout 1440m;
+ssl_session_tickets off;
+
+ssl_protocols TLSv1.2 TLSv1.3;
+ssl_prefer_server_ciphers off;
+
+ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
diff --git a/templates/nginx/timeline.conf.template b/templates/nginx/timeline.conf.template
new file mode 100644
index 0000000..db908e8
--- /dev/null
+++ b/templates/nginx/timeline.conf.template
@@ -0,0 +1,7 @@
+server {
+ listen 80;
+ listen [::]:80;
+ server_name timeline.${CRUPEST_DOMAIN};
+
+ include common/acme-challenge;
+}
diff --git a/templates/nginx/websocket.conf b/templates/nginx/websocket.conf
new file mode 100644
index 0000000..32af4c3
--- /dev/null
+++ b/templates/nginx/websocket.conf
@@ -0,0 +1,4 @@
+map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+}