Проблема с отображением изображения Nginx после оптимизации

Я сделал несколько оптимизаций, используя gtmetrix для улучшения производительности веб-сайта. Например, включение сжатия gzip и т. Д.

Когда я пытаюсь протестировать сайт с помощью онлайн-сервисов, таких как browserling.com, изображения не отображаются.

https://programlama.tk/

Когда я пытаюсь подключиться с сервера. Как и 192.168.1.xx, работает нормально.

Связанная часть /etc/nginx/nginx.conf выглядит так:

##
# Gzip Settings
##

gzip on;

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;

И в /etc/nginx/sites-enabled/programlama.tk я добавил эту часть.

location ~*  \.(jpg|jpeg|png|gif|ico)$ {
    expires 365d;
}

location ~*  \.(css|js)$ {
    expires 30d;
}

location ~*  \.(pdf)$ {
    expires 30d;
}

Обновить:

Я подозреваю, что проблема в блоке сервера в местоположении истекает часть.

server {
    server_name programlama.tk;

    location /static {
        limit_except GET HEAD POST {
             deny all;
        }
        include yasaklananlar.conf;
        # alias
    }

    location / {
        limit_except GET HEAD POST {
             deny all;
        }
        include yasaklananlar.conf;
        include proxy_params;
        # proxy_pass
    }

    location ~*  \.(jpg|jpeg|png|gif|ico)$ {
        expires 365d;
    }

    location ~*  \.(css|js)$ {
        expires 30d;
    }

    location ~*  \.(pdf)$ {
        expires 30d;
    }

    # server settings

}

Если я удаляю расположение истекает часть в блоке сервера и перезапускаю сервер Nginx, он отображает изображения в порядке.

1 ответ

Решение

Nginx выбирает одно местоположение для обработки запроса.

Так что, когда новое регулярное выражение location добавлен для установки expires значение на расширение, оно ломает как ваши location /static {...} а также location / {...} конфигурации.

Как альтернатива использованию location установить expiresВы можете использовать map вместо. Смотрите этот документ для деталей.

Например:

map $request_uri $expires {
    default                           off;
    ~*\.(jpg|jpeg|png|gif|ico)(\?|$)  365d;
    ~*\.(css|js|pdf)(\?|$)            30d;
}    

server {
    ...
    expires $expires;

    location /static { ... }
    location / { ... }
    ...
}
Другие вопросы по тегам