try this but too much restriction, probaly gonna use this safety in the future though

This commit is contained in:
2026-03-19 23:19:07 +00:00
parent 1ea92b8e6d
commit d6b428258e
4 changed files with 23 additions and 8 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ data:
$http_upgrade $connection_upgrade {\n\t\tdefault upgrade;\n '' close;\n\t}\n\n\tgeoip2 $http_upgrade $connection_upgrade {\n\t\tdefault upgrade;\n '' close;\n\t}\n\n\tgeoip2
/data/dbip-country-lite-2026-01.mmdb{\n\t\t$geoip2_data_country_iso_code country /data/dbip-country-lite-2026-01.mmdb{\n\t\t$geoip2_data_country_iso_code country
iso_code;\n\t $geoip2_data_city_name city names en;\n\t $geoip2_data_country_name iso_code;\n\t $geoip2_data_city_name city names en;\n\t $geoip2_data_country_name
country names en;\n\t}\n \n\tmap $geoip2_data_country_iso_code::$ssl_client_verify country names en;\n\t}\n \n\tmap $geoip2_data_country_iso_code:$ssl_client_verify
$allowed_country {\n\t\tdefault no;\n\t\tFR\tyes; # Allow France\n\t\tGB\tyes; $allowed_country {\n\t\tdefault no;\n\t\tFR\tyes; # Allow France\n\t\tGB\tyes;
# Allow UK\n \"~:SUCCESS$\" yes; # Allow anyone with a valid # Allow UK\n \"~:SUCCESS$\" yes; # Allow anyone with a valid
certificate (regardless of country)\n #NL yes; # Allow netherland\n\t\t#IN\tyes; certificate (regardless of country)\n #NL yes; # Allow netherland\n\t\t#IN\tyes;
+1 -1
View File
@@ -64,7 +64,7 @@ http {
$geoip2_data_country_name country names en; $geoip2_data_country_name country names en;
} }
map $geoip2_data_country_iso_code::$ssl_client_verify $allowed_country { map $geoip2_data_country_iso_code:$ssl_client_verify $allowed_country {
default no; default no;
FR yes; # Allow France FR yes; # Allow France
GB yes; # Allow UK GB yes; # Allow UK
+21 -6
View File
@@ -9,14 +9,19 @@ upstream ${name_site}_backend {
server { server {
server_name ${name_site}.tryton.geeraert.eu www.${name_site}.tryton.geeraert.eu; server_name ${name_site}.tryton.geeraert.eu www.${name_site}.tryton.geeraert.eu;
if ($allowed_country = no) { # if ($allowed_country = no) {
return 444; # Forbidden # return 444; # Forbidden
# Or use 'return 444;' to close the connection without a response # # Or use 'return 444;' to close the connection without a response
# The 444 Status: If you want to save bandwidth and "ghost" attackers, use return 444;. It drops the connection immediately without even sending a "Forbidden" header. # # The 444 Status: If you want to save bandwidth and "ghost" attackers, use return 444;. It drops the connection immediately without even sending a "Forbidden" header.
} # }
location / { location / {
if ($allowed_country = yes) {
proxy_pass %{ if proxy_pass_https}https%{else}http%{ endif }://${name_site}_backend; proxy_pass %{ if proxy_pass_https}https%{else}http%{ endif }://${name_site}_backend;
break;
}
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host; proxy_set_header Host $host;
${extra-value-location} ${extra-value-location}
@@ -33,6 +38,16 @@ server {
proxy_pass %{ if proxy_pass_https}https%{else}http%{ endif }://${name_site}_backend; proxy_pass %{ if proxy_pass_https}https%{else}http%{ endif }://${name_site}_backend;
} }
%{ endif } %{ endif }
if ($ssl_client_verify != "SUCCESS") {
# Not UK AND no valid cert? Blocked.
return 403;
}
# 3. If NOT from UK but HAS cert, let them in.
proxy_pass %{ if proxy_pass_https}https%{else}http%{ endif }://${name_site}_backend;
} }
location /.well-known/acme-challenge/ { location /.well-known/acme-challenge/ {
root /var/www/certbot; root /var/www/certbot;
@@ -69,7 +84,7 @@ server {
ssl_certificate_key /etc/nginx/ssl/live/tryton.geeraert.eu/privkey.pem; ssl_certificate_key /etc/nginx/ssl/live/tryton.geeraert.eu/privkey.pem;
# Client Certificate Config # Client Certificate Config
ssl_client_certificate /etc/nginx/certs/MyPrivateCA.crt; ssl_trusted_certificate /etc/nginx/certs/MyPrivateCA.crt;
ssl_verify_client optional; # 'optional' so we can check the result manually ssl_verify_client optional; # 'optional' so we can check the result manually