Last active
April 25, 2019 21:32
-
-
Save noogen/57bf47e4cd227f584b6ed8c4c9eb3eb6 to your computer and use it in GitHub Desktop.
Revisions
-
noogen revised this gist
Apr 25, 2019 . 1 changed file with 4 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -246,7 +246,7 @@ server { #image_filter_water_image /app/logo.png; #image_filter_water_pos center; image_filter_scale_max 3; image_filter_sharpen $sharpen; image_filter_jpeg_quality $quality; @@ -271,16 +271,15 @@ server { image_filter_water_image /app/logo.png; #image_filter_water_pos center; image_filter_scale_max 3; image_filter_sharpen $sharpen; image_filter_jpeg_quality $quality; image_filter_webp_quality $quality; image_filter_output $ofmt; image_filter rotate $rotate; image_filter resize $width $height; } location /cmd/crop { @@ -296,6 +295,7 @@ server { #image_filter_water_image /app/logo.png; #image_filter_water_pos center; image_filter_scale_max 3; image_filter_sharpen $sharpen; image_filter_jpeg_quality $quality; -
noogen created this gist
Apr 24, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,351 @@ proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=remoteimages:10m max_size=1g inactive=45m; server { listen 80; listen [::]:80 ipv6only=on; listen 443 ssl; listen [::]:443 ipv6only=on ssl; ssl_certificate /etc/nginx/ssl/placeholder-fullchain.crt; ssl_certificate_key /etc/nginx/ssl/placeholder-privkey.key; set $width -; set $height -; set $rotate 0; set $quality 96; # default to best quality in case image previously optimized set $sharpen 0; set $debugkey "empty"; set $myhost ""; set $ofmt ""; set $debugcode ""; # image_filter_crop_offset {left,center,right} {top,center,bottom}; set $crop_offx left; set $crop_offy top; server_name _; root /usr/share/nginx/html; index index.html index.htm; # error should simply return as error so user can use image onerror handler # error_page 403 = @403; # error_page 404 = @404; # error_page 415 = @415; # error_page 500 = @500; # error_page 502 503 504 = @empty; error_page 301 302 307 = @handle_redirect; # begin image_filter stuff resolver 8.8.8.8 8.8.4.4; image_filter_buffer 20M; image_filter_interlace on; # needed to allow uri protocol slashes from being merged merge_slashes off; # proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header User-Agent "$http_user_agent"; proxy_connect_timeout 30s; proxy_send_timeout 30s; proxy_read_timeout 30s; proxy_temp_path /var/cache/nginx/temp; # prevent client headers from going to origin proxy_pass_request_headers off; proxy_ignore_headers Vary Expires Set-Cookie Cache-Control; proxy_pass_header P3P; proxy_cache_min_uses 2; proxy_cache remoteimages; proxy_ssl_server_name on; proxy_intercept_errors on; proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504; proxy_cache_background_update on; # valid for "any" http status within 10 minutes proxy_cache_valid any 10m; proxy_cache_valid 301 302 307 0s; proxy_cache_key $request_uri; # only allow GET method proxy_method GET; location /healthcheck { default_type text/plain; return 200 "OK"; } location ~* ^/rx/([^\/]+)/(.*) { set $myargs "$1"; set $protocol "http"; set $image_uri "$2"; set $cmd "resize"; set $image_path ""; set $clean_uri ""; # if no protocol in URL, add them if ($image_uri !~ "(http:|https:)") { set $image_uri "http://$image_uri"; } # now process the real image url if ($image_uri ~ "^(http|https)+([:\/]+)([^/]*)(.*)") { set $protocol $1; set $myhost $3; set $image_path $4; set $image_uri "$protocol://$myhost$image_path"; } # change this to whitelist your host # if ($myhost !~ ".*(host1.com|host2.org|host3.edu|host4.net|host5.info)$") { # set $image_uri ""; # set $debugkey "$myhost=denied"; # return 403; # break; # } # width if ($myargs ~ "^(\d+)\D*") { set $width $1; } if ($myargs ~ "w([_]*)(\d+)") { set $width $2; } if ($arg_w) { set $width $arg_w; } # height if ($myargs ~ "x(\d+)") { set $height $1; } if ($myargs ~ "h([_]*)(\d+)") { set $height $2; } if ($arg_h) { set $height $arg_h; } # quality if ($myargs ~ "q([_]*)(\d+)") { set $quality $2; } if ($arg_q) { set $quality $arg_q; } # rotate if ($myargs ~ "r([_]*)(\d+)") { set $rotate $2; } if ($arg_r) { set $rotate $arg_r; } # gravity if ($myargs ~ "Center") { set $crop_offx center; set $crop_offy center; } if ($arg_g ~ "Center") { set $crop_offx center; set $crop_offy center; } if ($myargs ~ "South") { set $crop_offy bottom; } if ($arg_g ~ "South") { set $crop_offy bottom; } if ($myargs ~ "East") { set $crop_offx right; } if ($arg_g ~ "East") { set $crop_offx right; } # sharpen if ($myargs ~ "e([_]*)(\d+)") { set $sharpen $2; } if ($arg_e) { set $sharpen $arg_e; } # output format if ($myargs ~ "ofmt([_]*)(\w+)") { set $ofmt $2; } if ($arg_ofmt) { set $ofmt $arg_ofmt; } # crop if ($myargs ~ "c([_]*)1") { set $cmd "crop"; } if ($arg_c = "1") { set $cmd "crop"; } if ($myargs ~ "g_+") { set $cmd "crop"; } if ($arg_g) { set $cmd "crop"; } # watermark if ($myargs ~ "water([_]*)1") { set $cmd "water"; } set $debugkey "$image_uri?w=$width&h=$height&q=$quality&r=$rotate&e=$sharpen&cmd=$cmd&ofmt=$ofmt"; set_unescape_uri $clean_uri "$image_uri$is_args$args"; rewrite ^ /cmd/$cmd last; } location /cmd/resize { internal; proxy_pass $clean_uri; include /etc/nginx/sites-enabled/proxy-hide-headers.common; add_header X-ImageProxy-Cache $upstream_cache_status; add_header X-ImageProxy-Debug $debugkey; expires 24h; add_header Cache-Control "public"; #image_filter_water_image /app/logo.png; #image_filter_water_pos center; # image_filter_ratio_max 3; image_filter_sharpen $sharpen; image_filter_jpeg_quality $quality; image_filter_webp_quality $quality; image_filter_output $ofmt; image_filter rotate $rotate; # image_filter resize $width $height; image_filter resize $width $height; } location /cmd/water { internal; proxy_pass $clean_uri; include /etc/nginx/sites-enabled/proxy-hide-headers.common; add_header X-ImageProxy-Cache $upstream_cache_status; add_header X-ImageProxy-Debug $debugkey; expires 24h; add_header Cache-Control "public"; image_filter_water_image /app/logo.png; #image_filter_water_pos center; image_filter_ratio_max 3; image_filter_sharpen $sharpen; image_filter_jpeg_quality $quality; image_filter_webp_quality $quality; image_filter_output $ofmt; image_filter rotate $rotate; # image_filter scale $width $height; image_filter scale $width $height; } location /cmd/crop { internal; proxy_pass $clean_uri; include /etc/nginx/sites-enabled/proxy-hide-headers.common; add_header X-ImageProxy-Cache $upstream_cache_status; add_header X-ImageProxy-Debug $debugkey; expires 24h; add_header Cache-Control "public"; #image_filter_water_image /app/logo.png; #image_filter_water_pos center; image_filter_sharpen $sharpen; image_filter_jpeg_quality $quality; image_filter_webp_quality $quality; image_filter_output $ofmt; image_filter rotate $rotate; image_filter_crop_offset $crop_offx $crop_offy; image_filter crop $width $height; } location @handle_redirect { set $image_uri "$upstream_http_location"; # if relative url, append base path if ($image_uri !~ "(http:|https:)") { set $image_uri "$protocol://$myhost$image_uri"; } set_unescape_uri $clean_uri "http://127.0.0.1/rx/$myargs/$image_uri"; proxy_cache_bypass 1; proxy_pass $clean_uri; } location @403 { add_header X-ImageProxy-Code 403 always; add_header X-ImageProxy-Debug $debugkey always; empty_gif; } location @404 { add_header X-ImageProxy-Code 404 always; add_header X-ImageProxy-Debug $debugkey always; empty_gif; } location @415 { add_header X-ImageProxy-Code 415 always; add_header X-ImageProxy-Debug $debugkey always; empty_gif; } location @500 { add_header X-ImageProxy-Code 500 always; add_header X-ImageProxy-Debug $debugkey always; empty_gif; } location @empty { add_header X-ImageProxy-Debug $debugkey always; empty_gif; } }