Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save devig/396f7db1534a89a6244ca7596cd75c4d to your computer and use it in GitHub Desktop.
Save devig/396f7db1534a89a6244ca7596cd75c4d to your computer and use it in GitHub Desktop.
Config
# Конфигурация для HTTP-сервера
server {
# Указываем доменное имя
server_name new-automation.ru;
# Путь к корневой директории сайта
root /var/www/opencart/public_html;
# Указываем, какие файлы должны обрабатываться при запросе корня сайта
index index.php index.html
# Настройки логирования
access_log /var/www/opencart/log/nginx/new-automation.ru-access.log;
error_log /var/www/opencart/log/nginx/new-automation.ru-error.log;
# Максимальный размер тела запроса (для загрузки файлов)
client_max_body_size 128M;
# Запрещаем доступ к файлам, начинающимся с ".ht"
location ~* \/\.ht {
deny all;
}
# Запрещаем доступ к некоторым типам файлов
location ~* (\.tpl|.twig|\.ini|\.log|(?<!robots)\.txt) {
deny all;
}
# Запрещаем доступ к директории ".git"
location ~* \/\.git {
deny all;
}
# Запрещаем доступ к PHP-файлам в директории "/image"
location ~* \/image.+(\.php) {
deny all;
}
#Конфигурируем обработку запросов к файлам, которые должны быть загружены без кеширования
location ~* ^.+.(manifest|appcache|html?|xml|json|txt)$ {
expires -1;
}
#Конфигурируем обработку запросов к файлам, которые должны быть загружены с кешированием на 1 день
location ~* ^.+.(ico|pdf|flv)$ {
expires 1d;
}
#Конфигурируем обработку запросов к файлам, которые должны быть загружены с кешированием на 1 неделю
location ~* ^.+.(jpg|jpeg|png|gif|swf|webp|woff|woff2)$ {
expires 7d;
}
#Конфигурируем обработку запросов к файлам, которые должны быть загружены с кешированием на 1 месяц
location ~* ^.+.(svg|ttf|eot|otf)$ {
expires 30d;
}
#Конфигурируем обработку запросов к файлам, которые должны быть загружены с кешированием на 1 год
location ~* ^.+.(mp4|webm|ogg|mp3|wav|flac|aac)$ {
expires 1y;
}
#Конфигурируем обработку запросов к файлам, которые должны быть загружены с помощью gzip
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
# Обрабатываем запросы к файлу "sitemap.xml"
location = /sitemap.xml {
rewrite ^(.*)$ /index.php?route=extension/feed/google_sitemap last;
}
# Обрабатываем запросы к файлу "googlebase.xml"
location = /googlebase.xml {
rewrite ^(.*)$ /index.php?route=extension/feed/google_base last;
}
# Обрабатываем запросы к директории "/system"
location /system/ {
rewrite ^/system/storage/(.*) /index.php?route=error/not_found last;
}
# Настраиваем обработку файла "favicon.ico"
location = /favicon.ico {
log_not_found off;
access_log off;
}
# Настраиваем обработку файла "robots.txt"
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Обрабатываем запросы к директории "/catalog"
location /catalog/ {
allow all;
}
# Обрабатываем запросы к директории "/admin_8473"
location /admin_8473/ {
index index.php;
allow all;
}
# Конфигурируем обработку PHP скриптов
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "upload_max_filesize=128M \n post_max_size=128M \n memory_limit=1024M \n display_errors=0";
}
# Обрабатываем все остальные запросы
location / {
try_files $request_uri @opencart;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
# Обрабатываем запросы, которые соответствуют @opencart
location @opencart {
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
# Перенаправляем запросы к директории, оканчивающейся на "/"
if (!-d $request_filename) {
rewrite ^/(.+)/$ /$1 permanent;
}
# Конфигурируем обработку sitemap.xml
location = /sitemap.xml {
rewrite ^(.*)$ /index.php?route=extension/feed/google_sitemap last;
}
# Конфигурируем обработку googlebase.xml
location = /googlebase.xml {
rewrite ^(.*)$ /index.php?route=extension/feed/google_base last;
}
# Конфигурируем обработку запросов к директории "/system/"
location /system/ {
rewrite ^/system/storage/(.*) /index.php?route=error/not_found last;
}
# Конфигурируем обработку favicon.ico
location = /favicon.ico {
log_not_found off;
access_log off;
}
# Конфигурируем обработку robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Конфигурируем обработку файлов-картинок, js, css и т.д.
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
# Конфигурируем обработку запросов к директории "/image/", которые содержат ".php"
location ~* \/image.+(\.php) {
deny all;
}
# Конфигурируем обработку файлов, которые содержат ".tpl", ".twig", ".ini", ".log" или ".txt" (кроме robots.txt)
location ~* (\.tpl|.twig|\.ini|\.log|(?<!robots)\.txt) {
deny all;
}
# Конфигурируем обработку запросов к скрытым файлам и директориям, начинающимся с точки
location ~ /\. {
deny all;
}
#Конфигурируем обработку ошибок
error_page 404 /index.php?route=error/not_found;
error_page 500 502 503 504 /index.php?route=error/server_error;
#Конфигурируем настройки кэширования
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=opencart_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
#Конфигурируем настройки заголовков безопасности
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
#Конфигурируем настройки защиты от DDoS атак
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_conn conn_limit_per_ip 20;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
limit_req zone=req_limit_per_ip burst=20;
#Конфигурируем настройки защиты от SQL инъекций и XSS атак
more_set_headers "X-XSS-Protection: 1; mode=block";
more_set_headers "X-Content-Type-Options: nosniff";
more_set_headers "X-Frame-Options: SAMEORIGIN";
more_set_headers "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com; img-src 'self' data:; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; font-src 'self' data: https://fonts.gstatic.com https://use.fontawesome.com; connect-src 'self' https://www.google-analytics.com; object-src 'none'; media-src 'self'";
more_clear_headers "Server";
more_clear_headers "X-Powered-By";
#Конфигурируем скрытие версии nginx
server_tokens off;
#Конфигурируем https
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/new-automation.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/new-automation.ru/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}server {
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name new-automation.ru;
return 404; # managed by Certbot
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment