Re: Замена content-type image/webp в location

2019-11-07 Пенетрантность 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|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

2019-11-07 Пенетрантность damir bikmuhametov
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

2019-11-07 Пенетрантность commeta
А как здесь 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

2019-11-07 Пенетрантность Илья Шипицин
оу. я проглядел этот момент.
я предлагал 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

2019-11-07 Пенетрантность 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

Re: Замена content-type image/webp в location

2019-11-07 Пенетрантность vitcool
Жаль что в 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

2019-11-07 Пенетрантность commeta
Там сайт на 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

2019-11-07 Пенетрантность NickLavlinsky
Здравствуйте!

На первый взгляд у вас переусложнённый конфиг для отдачи 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

2019-11-06 Пенетрантность commeta
Пробовал, вылетает с ошибкой:
"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

2019-11-06 Пенетрантность Илья Шипицин
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

2019-11-06 Пенетрантность 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