Re: Замена content-type image/webp в location
Все, разобрался, получилось так location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @apacheback; } location ~* ^.+\.(gif|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|woff|woff2|ico|ttf|eot|otf|flv)$ { try_files $uri $uri/ @fallback; expires 365d; } location ~* ^.+\.(jpg|jpeg|png)$ { set $ax 0; if ( $http_accept ~* "webp" ) { set $ax 1; } if ( -e $root_path/webp$uri ){ set $ax "${ax}1"; } if ($http_cookie ~* "modx_admin" ) { set $ax 0; } if ( $ax = "11" ) { rewrite ^ /webp$uri last; return 403; } expires 365d; try_files $uri $uri/ @fallback; } location ^~ /webp/ { types { } default_type "image/webp"; add_header Vary Accept; expires 365d; try_files $uri $uri/ @fallback; } location / { try_files /does_not_exists @fallback; } } Posted at Nginx Forum: https://forum.nginx.org/read.php?21,286117,286144#msg-286144 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Замена content-type image/webp в location
On Thu, Nov 07, 2019 at 08:21:31PM -0500, commeta wrote: > А как здесь location /webp прикрутить? подскажите. в любое место внутри вашего location / { ... } только нужно использовать location ^~ /webp/ { ... }, потому что регулярки выигрывают и вы получите цикл. а еще мне кажется, что вместо толпы if надо использовать map и try_files -- boco ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Замена content-type image/webp в location
А как здесь location /webp прикрутить? подскажите. Вот полный конфиг хоста server { server_name mysite www.mysite; charset UTF-8; index index.php index.html; disable_symlinks if_not_owner from=$root_path; include /etc/nginx/vhosts-includes/*.conf; include /etc/nginx/vhosts-resources/mysite/*.conf; access_log /var/www/httpd-logs/mysite.access.log; error_log /var/www/httpd-logs/mysite.error.log notice; set $root_path /var/www/www-root/data/www/mysite; root $root_path; location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @fallback; } location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|woff|woff2|ico|ttf)$ { try_files $uri $uri/ @fallback; } location / { try_files /does_not_exists @fallback; } } location @fallback { proxy_pass http://127.0.0.1:8080; proxy_redirect http://127.0.0.1:8080 /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; access_log off; } return 301 https://$host:443$request_uri; gzip on; gzip_comp_level 9; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; listen 55.55.55.55:80; } server { server_name mysite www.mysite; ssl_certificate "/var/www/httpd-cert/www-root/mysite_le3.crtca"; ssl_certificate_key "/var/www/httpd-cert/www-root/mysite_le3.key"; ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_dhparam /etc/ssl/certs/dhparam4096.pem; charset UTF-8; index index.php index.html; disable_symlinks if_not_owner from=$root_path; include /etc/nginx/vhosts-includes/*.conf; include /etc/nginx/vhosts-resources/mysite/*.conf; access_log /var/www/httpd-logs/mysite.access.log; error_log /var/www/httpd-logs/mysite.error.log notice; set $root_path /var/www/www-root/data/www/mysite; root $root_path; location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @apacheback; } location ~* ^.+\.(gif|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|woff|woff2|ico|ttf|eot|otf|flv)$ { try_files $uri $uri/ @fallback; expires 365d; } location ~* ^.+\.(jpg|jpeg|png)$ { set $ax 0; if ( $http_accept ~* "webp" ) { set $ax 1; } if ( -e $root_path/webp$uri ){ set $ax "${ax}1"; } if ($http_cookie ~* "modx_admin" ) { set $ax 0; } if ( $ax = "11" ) { rewrite ^ /webp$uri break; add_header Vary Accept; add_header Content-Type image/webp; } #types { } default_type "image/webp"; expires 365d; try_files $uri $uri/ @fallback; } location / { try_files /does_not_exists @fallback; } } location @fallback { proxy_pass http://127.0.0.1:6081; proxy_redirect http://127.0.0.1:6081 /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; access_log off; } location @apacheback { proxy_pass http://127.0.0.1:8080; proxy_redirect http://127.0.0.1:8080 /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; access_log off; } gzip on; gzip_comp_level 9; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/
Re: Замена content-type image/webp в location
оу. я проглядел этот момент. я предлагал default_type не имея в виду if чт, 7 нояб. 2019 г. в 18:28, damir bikmuhametov : > On Thu, Nov 07, 2019 at 07:53:28AM -0500, commeta wrote: > > Там сайт на modx, я сделал прозрачную поддержку webp, без участия контент > > менеджера. Скрипт на сервере обходит файлы, делает webp копии, и > складывает > > в подкаталог /webp/ полностью сохраняя структуру каталогов. Все > настроено и > > работает, достаточно удобно получилось. Но вот как mime type поменять > > принудительно в if > > а точно нужен if? > > location /webp { > root ...; > types {}; > default_type image/webp; > } > > -- > boco > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Замена content-type image/webp в location
On Thu, Nov 07, 2019 at 07:53:28AM -0500, commeta wrote: > Там сайт на modx, я сделал прозрачную поддержку webp, без участия контент > менеджера. Скрипт на сервере обходит файлы, делает webp копии, и складывает > в подкаталог /webp/ полностью сохраняя структуру каталогов. Все настроено и > работает, достаточно удобно получилось. Но вот как mime type поменять > принудительно в if а точно нужен if? location /webp { root ...; types {}; default_type image/webp; } -- boco ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Замена content-type image/webp в location
Жаль что в nginx нет директивы set_header , то есть замена заголовка если он есть и добавление если его нет Posted at Nginx Forum: https://forum.nginx.org/read.php?21,286117,286124#msg-286124 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Замена content-type image/webp в location
Там сайт на modx, я сделал прозрачную поддержку webp, без участия контент менеджера. Скрипт на сервере обходит файлы, делает webp копии, и складывает в подкаталог /webp/ полностью сохраняя структуру каталогов. Все настроено и работает, достаточно удобно получилось. Но вот как mime type поменять принудительно в if Posted at Nginx Forum: https://forum.nginx.org/read.php?21,286117,286123#msg-286123 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Замена content-type image/webp в location
Здравствуйте! На первый взгляд у вас переусложнённый конфиг для отдачи webp. Предлагаю посмотреть готовую схему, где этих проблем нет: https://www.youtube.com/watch?v=CI3Y8NYdZXM Там на уровне сервера определяется поддержка webp и потом уже используется в локейшене. В Nginx.conf: map $http_accept $webp_suffix { "~*webp" ".webp"; } map $msie $cache_control { default "max-age=31536000, public, no-transform, immutable"; "1" "max-age=31536000, private, no-transform, immutable"; } map $msie $vary_header { default "Accept"; "1" ""; } В конфе сервера: # Static files location location ~* \.(jpg|jpeg|gif|png)$ { add_header Vary $vary_header; add_header Cache-Control $cache_control; try_files $uri$webp_suffix $uri =404; } Posted at Nginx Forum: https://forum.nginx.org/read.php?21,286117,286121#msg-286121 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Замена content-type image/webp в location
Пробовал, вылетает с ошибкой: "default_type" directive is not allowed here Видимо надо как-то в другой контекст поместить Posted at Nginx Forum: https://forum.nginx.org/read.php?21,286117,286119#msg-286119 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Замена content-type image/webp в location
default_type text/plain; вместо add_header Content-Type text/plain; чт, 7 нояб. 2019 г. в 02:44, commeta : > location / { > location ~ [^/]\.ph(p\d*|tml)$ { > try_files /does_not_exists @apacheback; > } > location ~* > > ^.+\.(gif|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|woff|woff2|ico|ttf)$ > { > try_files $uri $uri/ @fallback; > expires 365d; > } > location ~* ^.+\.(jpg|jpeg|png)$ { > set $ax 0; > if ( $http_accept ~* "webp" ) { > set $ax 1; > } > if ( -e $root_path/webp$uri ){ > set $ax "${ax}1"; > } > if ( $ax = "11" ) { > rewrite ^ /webp$uri break; > add_header Vary Accept; > add_header Content-Type image/webp; > } > expires 365d; > try_files $uri $uri/ @fallback; > } > location / { > try_files /does_not_exists @fallback; > } > } > nginx/1.16.1 > > На сайте есть отдельный подкаталог с копиями всех изображений в формате > webp. Nginx на лету если есть поддержка браузером отдает webp вместо > jpeg\png. Но появляется 2 заголовка: > content-type: image/png > content-type: image/webp > Подскажите как в этом случае убрать первый заголовок image/png > > Posted at Nginx Forum: > https://forum.nginx.org/read.php?21,286117,286117#msg-286117 > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Замена content-type image/webp в location
location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @apacheback; } location ~* ^.+\.(gif|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|woff|woff2|ico|ttf)$ { try_files $uri $uri/ @fallback; expires 365d; } location ~* ^.+\.(jpg|jpeg|png)$ { set $ax 0; if ( $http_accept ~* "webp" ) { set $ax 1; } if ( -e $root_path/webp$uri ){ set $ax "${ax}1"; } if ( $ax = "11" ) { rewrite ^ /webp$uri break; add_header Vary Accept; add_header Content-Type image/webp; } expires 365d; try_files $uri $uri/ @fallback; } location / { try_files /does_not_exists @fallback; } } nginx/1.16.1 На сайте есть отдельный подкаталог с копиями всех изображений в формате webp. Nginx на лету если есть поддержка браузером отдает webp вместо jpeg\png. Но появляется 2 заголовка: content-type: image/png content-type: image/webp Подскажите как в этом случае убрать первый заголовок image/png Posted at Nginx Forum: https://forum.nginx.org/read.php?21,286117,286117#msg-286117 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru