Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Помогите исправить не простой конфиг NGINX

Ответить
Настройки темы
Помогите исправить не простой конфиг NGINX

Аватара для Mancoffee

Старожил


Сообщения: 426
Благодарности: 10


Конфигурация

Профиль | Отправить PM | Цитировать


Конфиг

Код: Выделить весь код
## HTTP redirect
server {
    listen                      80;
    server_name                 domain.com;

    ## logging
    access_log                  /var/log/nginx/access_http.log cloudflare buffer=512k flush=1m;
    error_log                   /var/log/nginx/error_http.log warn;

    location / {
        return      301         https://$host$request_uri;
    }
}

server {
    listen          443         ssl http2;
    server_name                 domain.com;
    root                        /var/www/html/domain.com;
    index                       index.html;
    client_max_body_size        1024M;
    client_body_temp_path       /var/tmp/nginx-client-body 1;
    # include                     nginxconfig.io/letsencrypt.conf;
    more_set_headers            "Server: Apache/2.4.10 (Arch)";
    set                         $nginxerrors /usr/share/nginx/html;
    include                     /etc/nginx/errordocs_default.inc;

    autoindex                   off;

    ## SSL
    ssl_certificate             /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key         /etc/letsencrypt/live/domain.com/privkey.pem;
    ssl_trusted_certificate     /etc/letsencrypt/live/domain.com/chain.pem;

    ssl_protocols               TLSv1.2 TLSv1.3;

    ## openssl dhparam -out /etc/nginx/dhparam.pem 2048
    ssl_dhparam                 /etc/nginx/dhparam.pem;

    ## security headers
    add_header                  X-Frame-Options "DENY" always;
    add_header                  X-Robots-Tag "noindex, nofollow" always;
    add_header                  X-XSS-Protection "1; mode=block" always;
    add_header                  X-Content-Type-Options "nosniff" always;
    add_header                  Cross-Origin-Embedder-Policy "require-corp" always;
    add_header                  Cross-Origin-Opener-Policy "same-origin" always;
    add_header                  Cross-Origin-Resource-Policy cross-origin always;
    # add_header                  Cross-Origin-Resource-Policy "same-origin" always;
    add_header                  Referrer-Policy "strict-origin-when-cross-origin" always;
    add_header                  Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=(), usb=(), fullscreen=(self)" always;
    add_header                  Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    add_header                  Content-Security-Policy "default-src 'self'; img-src 'self' data:; script-src 'self'; style-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self';" always;


    # . files
    # location ~ /\.(?!well-known) {
    #     deny all;
    # }

    # logging
    access_log                  /var/log/nginx/access_https.log cloudflare buffer=512k flush=1m;
    error_log                   /var/log/nginx/error_https.log warn;

    ## Reverse proxy с try_files
    location / {
        try_files               $uri $uri/ =404;

        add_header              X-Frame-Options "DENY" always;
        add_header              X-Robots-Tag "noindex, nofollow" always;
        add_header              X-XSS-Protection "1; mode=block" always;
        add_header              X-Content-Type-Options "nosniff" always;
        add_header              Cross-Origin-Embedder-Policy "require-corp" always;
        add_header              Cross-Origin-Opener-Policy "same-origin" always;
        add_header              Cross-Origin-Resource-Policy cross-origin always;
        # add_header              Cross-Origin-Resource-Policy "same-origin" always;
        add_header              Referrer-Policy "strict-origin-when-cross-origin" always;
        add_header              Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=(), usb=(), fullscreen=(self)" always;
        add_header              Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
        add_header              Content-Security-Policy "default-src 'self'; img-src 'self' data:; script-src 'self'; style-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self';" always;

        fastcgi_param           REQUEST_URI $request_uri;
        proxy_set_header        Host $host;
        add_header              Cache-Control "max-age=0, no-cache, no-store, must-revalidate";
        add_header              Pragma "no-cache";
        add_header              Expires "0";

        proxy_http_version      1.1;
        proxy_cache_bypass      $http_upgrade;

        ## Proxy SSL
        proxy_ssl_server_name   on;

        ## Proxy headers
        proxy_set_header        Upgrade           $http_upgrade;
        proxy_set_header        Connection        $connection_upgrade;
        proxy_set_header        X-Real-IP         $remote_addr;
        proxy_set_header        Forwarded         $proxy_add_forwarded;
        proxy_set_header        X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_set_header        X-Forwarded-Host  $host;
        proxy_set_header        X-Forwarded-Port  $server_port;

        ## Proxy timeouts
        proxy_connect_timeout   30s;
        proxy_send_timeout      30s;
        proxy_read_timeout      30s;
        ## include                 nginxconfig.io/proxy.conf;
    }

    ## Обработка 404 для миниатюр (если файла нет, отдаём заглушку)
    location ~ ^/thumb_ {
        root                    /var/www/html/domain.com/img/i/;
        try_files   $uri        /res/imgs/errors/404_thumb.png;
    }
    ## Обработка 404 для изображений (если файла нет, отдаём заглушку)
    location ~ ^/[^/]+\.(jpg|jpeg|jpe|jif|jfif|png|bmp|gif|tiff|tif|webp|heic|heif|avif|svg|ico)$ {
        root                    /var/www/html/domain.com/img/i;
        try_files   $uri        /res/imgs/errors/404_fallback.png;
    }
    ## Путь к заглушкам 404
    location = /res/imgs/errors/404_fallback.png {
        root                    /var/www/html/domain.com;
    }
    location = /res/imgs/errors/404_thumb.png {
        root                    /var/www/html/domain.com;
    }

    location = /res/imgs/favicon.ico {
        root                    /var/www/html/domain.com;
        log_not_found           off;
        access_log              off;
        return                  204;
    }

    location ~ ^/(?!index\.html)[^/]+$ {
        root                    /var/www/html/domain.com/file/f;
    }
    ## Файлы, не относящиеся к изображениям (редирект из /file/f/)
    location ~ ^/file/f(/[^/]+)$ {
        return        301       $1;
    }
    ## Основные файлы изображений (редирект, если путь не содержит img/i/)
    location ~ ^/img/i(/[^/]+\.(jpg|jpeg|jpe|jif|jfif|png|bmp|gif|tiff|tif|webp|heic|heif|avif|svg|ico))$ {
        return        301       https://$host$1;
    }

    ## Обработка PHP
    location ~ \.php$ {
        include                 snippets/fastcgi-php.conf;
        fastcgi_pass            unix:/run/php/php-fpm.sock;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param           PHP_ADMIN_VALUE "error_log=/var/log/php/errors-domain.com.log";
        ## fastcgi_param           HTTP_AUTHORIZATION $http_authorization;
        include                 fastcgi_params;
    }
    location ^~ /res/imgs/ {
        root /var/www/html/domain.com;
        log_not_found off;
    }
    location ^~ /res/css/ {
        root /var/www/html/domain.com;
        log_not_found off;
    }

    location ~* \.(jpg|jpeg|jpe|jif|jfif|png|bmp|gif|tiff|tif|webp|heic|heif|avif|svg|ico)$ {
        root /var/www/html/domain.com/img/i;
        try_files     $uri      =404;

        add_header              Access-Control-Allow-Origin "*" always;
        add_header              Access-Control-Allow-Methods "GET, OPTIONS" always;
        add_header              Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range" always;
        add_header              Access-Control-Expose-Headers "Content-Length,Content-Range" always;

        ## Разрешить загрузку изображений с других сайтов
        add_header              Cross-Origin-Resource-Policy "cross-origin" always;
    }
    location = /res/imgs/php_out_error.png {
        log_not_found           off;
    }
    location = /res/imgs/errors/favicon_error.png {
        log_not_found           off;
    }
    location = /robots.txt {
        log_not_found           off;
    }

    # include                     nginxconfig.io/general.conf;
}


Условия:
Нужно чтобы все файлы отсюда /var/www/html/domain.com/file/f/
Все изображения отсюда /var/www/html/domain.com/img/i/ и отсюда /var/www/html/domain.com/img/i/fd/ редиректились в корень домена.
В этих каталогах всегда только изображения.
Так же из этих каталогов они должны быть доступны по прямым ссылкам от корня. Например domain.com/Diya.png, которое находится в /var/www/html/domain.com/img/i/fd/
Ещё в /var/www/html/domain.com/img/i/ есть файлы миниатюр, которые всегда начинаются с thumb_[рандомные 16 знаков.[расширение]. На них есть редиректы для заглушек, если файлы не существуют.

Сейчас файлы /var/www/html/domain.com/file/f/ и изображения с миниатюрами отсюда /var/www/html/domain.com/img/i/ редиректятся правильно и заглушки от миниатюр тоже, а отсюда /var/www/html/domain.com/img/i/fd по запросу пример: domain.com/img/i/fd/Gemini.png выдают страницу ошибки 404, отсюда domain.com/Gemini.png заглушку 404 (404_fallback.png).
Помогите найти ошибку.

Отправлено: 20:55, 25-02-2025

 

Deadooshka


Сообщения: 2522
Благодарности: 693

Профиль | Отправить PM | Цитировать


Цитата Mancoffee:
location ~ ^/img/i(/[^/]+\. »
регулярка не учитывает /fd. Видимо должно быть типа этого ^/img/i(?:/fd)?(/[^/]+\.

Отправлено: 10:55, 05-03-2025 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Помогите исправить не простой конфиг NGINX

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Не могу исправить запись в реестре. Помогите пожалуйста. G1Q Microsoft Windows 10 2 29-07-2019 00:57
2010 - [решено] Не могу удалить или исправить MS Office 2010! Помогите! Птушвиче Microsoft Office (Word, Excel, Outlook и т.д.) 12 19-08-2015 20:08
BSOD - не знаю как его исправить. Помогите пожалуйста! Ins1t Хочу все знать 2 10-12-2010 12:51
Gentoo - люди помогите с nginx в Gentoo viktor1969 Общий по Linux 9 10-08-2009 15:44




 
Переход