first commit
This commit is contained in:
67
deploy/nginx/app.conf
Normal file
67
deploy/nginx/app.conf
Normal file
@@ -0,0 +1,67 @@
|
||||
# ============================================================================
|
||||
# Пример конфигурации Nginx для защищённого Laravel-приложения (УЗ-1 / К1)
|
||||
# Меры ФСТЭК: ЗИС.9 (TLS), ЗИС (заголовки), ЗИС.2 (защита периметра).
|
||||
# Подставьте домен, пути к сертификатам и при необходимости — ГОСТ TLS.
|
||||
# ============================================================================
|
||||
|
||||
# Ограничение частоты запросов к форме входа (защита от перебора, ИАФ.6).
|
||||
limit_req_zone $binary_remote_addr zone=login:10m rate=10r/m;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name example.local;
|
||||
# Принудительный редирект на HTTPS (ЗИС.9).
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
http2 on;
|
||||
server_name example.local;
|
||||
|
||||
root /var/www/app/public;
|
||||
index index.php;
|
||||
|
||||
# ---- TLS (ЗИС.9). Только TLS 1.2/1.3 ----------------------------------
|
||||
ssl_certificate /etc/ssl/app/fullchain.pem;
|
||||
ssl_certificate_key /etc/ssl/app/privkey.pem;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_session_timeout 10m;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_tickets off;
|
||||
|
||||
# Для государственных ИС: ГОСТ TLS через КриптоПро (ЗИС.16) — модуль
|
||||
# nginx с поддержкой ГОСТ-шифронаборов либо stunnel/КриптоПро.
|
||||
|
||||
# ---- Заголовки безопасности (дублируют middleware приложения) ---------
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
|
||||
add_header X-Frame-Options "DENY" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
||||
server_tokens off;
|
||||
|
||||
# ---- Ограничение размера загрузок (ЗИС, защита от исчерпания ресурсов) -
|
||||
client_max_body_size 10m;
|
||||
|
||||
location = /login {
|
||||
limit_req zone=login burst=5 nodelay;
|
||||
try_files $uri /index.php?$query_string;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
include fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
|
||||
fastcgi_hide_header X-Powered-By;
|
||||
}
|
||||
|
||||
# Запрет доступа к служебным и скрытым файлам.
|
||||
location ~ /\.(?!well-known).* { deny all; }
|
||||
location ~ /(storage|bootstrap|config|database|tests)/ { deny all; }
|
||||
}
|
||||
Reference in New Issue
Block a user