在这里你可以更容易地阅读
#服务器全局变量 用户www数据; worker_processes auto; worker_rlimit_nofile 65535; error_log/var/log/nginx/error.log; pid/run/nginx.pid; include/etc/nginx/modules-enabled/*.conf; #工作机配置 事件{ worker_connections 1024; 使用epoll; 多接收打开; } http协议{ #主要设置 在上发送文件; tcp_nopush打开; tcp_nodelay打开; client_header_timeout 180s; client_body_timeout 180s; 客户端头缓冲区大小2k; 客户端缓冲区大小256k; 客户机最大机身尺寸256m; 大客户端header_buffers 4 8k; 发送超时60s; 保持活动时间30秒; keepalive_requests 100000; 重置超时连接; server_tokens关闭; server_name_in_redirect关闭; 服务器名称哈希最大大小512; 服务器名称hash_bucket_size 512; 字符集utf-8; #FastCGI设置 fastcgi_buffers 8 256k; fastcgi_buffer_size 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi连接超时30s; fastcgi_read_timeout 300秒; fastcgi_send_timeout 180s; fastcgi_cache_lock打开; fastcgi_cache_lock_timeout 5s; fastcgi_cache_background_update于; fastcgi_cache_revalidate打开; #代理服务器设置 代理_直接关闭; proxy_set_header主机$Host; proxy_set_header X-Real-IP$remote_addr; $proxy_add_X_Forwarded_f的proxy_set_header X-Forwarded-For; proxy_pass_header Set-Cookie; 代理缓冲区32 4k; 代理缓冲区大小8k; 代理连接超时30s; 代理读取超时300s; 代理发送超时180s; #日志格式 log_format main“$remote_addr-$remote_user[$time_local]$request” “”“$status”“$body_bytes_sent”“$http_referer”“”“$http_user_agent”“$HTP_x_forwarded_for”“”; log_format字节'$body_bytes_sent'; log_not_found关闭; access_log关闭; #Mime设置 包括/etc/nginx/meme.types; default_type应用程序/octet-stream; #压缩 gzip打开; gzip_static打开; gzip_vary打开; gzip_comp_level 6; gzip最小长度1024; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types文本/纯文本/css文本/javascript文本/js文本/xml application/json应用程序/javascript应用程序/x-javascript application.xml application/xml+rss-application/font-ttf-image/svg+xml-font/opentype; gzip_proxyd任何; gzip_disable“MSIE[1-6]\.”; #Cloudflare接口 include/etc/nginx/conf.d/cloudflare.inc; #SSL PCI合规性 ssl_session_cache共享:ssl:20m; ssl会话超时60m; ssl_buffer_size 1400; ssl_protocols TLSv1.2 TLSv1.3; 上的ssl_prefer_server_ciphers; ssl密码 “ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA2-POLY135:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SSHA256:ECDHA-ECDSA-EAS256-GCM-SHA 384:ECDHE-RS A-AES256-GCM SHA384:DHE-RSA-ES128-GCM SHA256:DHE-RSA AES256-GCM-SHA384:ECDHE-ECDS-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ES128-SHA:ECDHE-RSA-AES256 SHA384:ECDHE-RSA-AES128-SHA:ECDH E-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA AES256-HA256:DHE-RS A-AES2五十六-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-BC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA 384:AES128_SHA256:DES-CBC3-SHA:! 决策支持系统”; ssl_dhparam/etc/ssl/dhparam.pem; ssl _ ecdh曲线secp384r1; ssl_session_tickets关闭; 解析器62.149.132.4 62.149.128.4有效=300s ipv6=关闭; 解析器超时5s; #错误页面 error_page 403/error/404.html; error_page 404/error/404.html; error_page 410/error/410.html; 错误_第500页501 502 503 504 505/error/50x.html; #代理缓存 proxy_cache_path/var/cache/nginx级别=2 keys_zone=缓存:10m非活动=60m 最大尺寸=1024m; proxy_cache_key“$scheme$request_method$host$request uri”; proxy_temp_path/var/cache/nginx/temp; proxy_ignore_headers使Cache-Control过期; proxy_cache_use_stale错误超时invalid_header http_502; proxy_cache_valid任意1d; #FastCGI缓存 fastcgi_cache_path/var/cache/nginx/micro-levels=1:2 keys_zone=microche:10m max_size=1024m非活动=30m; fastcgi_cache_key“$scheme$request_method$host$request _uri”; fastcgi_cache_methods获取头部; fastcgi_cache_use_stale更新错误超时invalid_header http_500 http_503; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; add_header X-FastCGI-Cache$upstreamm_Cache_status; #缓存旁路 映射$http_cookie$no_cache{ 默认为0; ~SESS 1; ~wordpress_logged_in 1; } #接受WEBP图像格式 映射$http_accept$webp_suffix{ 默认“”; “~*webp”“.web”; } #文件缓存(静态资产) open_file_cache最大值=10000非活动=30秒; 打开文件缓存有效60秒; 打开文件缓存最小值使用2; open_file_cache_errors关闭; #通配符包括 include/etc/nginx/conf.d/*.conf; 包括/etc/nginx/conf.d/domains/*.conf; }
螺纹起动器
特洛扎诺
(@tlozano)
您好! @斯特法基奥
我还有赫斯蒂亚普,它对我很有用。
这是我的/etc/nginx/nginx.conf
#服务器全局变量 用户www-data; worker_processes auto; worker_rlimit_nofile 65535; error_log/var/log/nginx/error.log; pid/run/nginx.pid; include/etc/nginx/modules-enabled/*.conf; #工作机配置 事件{ worker_connections 1024; 使用epoll; multi_accept打开; } http协议{ ##Webp+Avif插件配置 映射$http_accept$webp{ 默认为“.nonexisting”; “~*image/webp”“.webp”; } 映射$http_accept$png{ 默认为“.png”; “~*image/webp”“”“; } 映射$http_accept$avif{ 默认为“.nonexisting”; “~*image/avif”“.avif”; } ###结束插件webp+avif-config #主要设置 发送文件于; tcp_nopush打开; tcp_nodelay打开; client_header_timeout 180s; client_body_timeout 180s; 客户端头缓冲区大小2k; client_body_buffer_size 256k; 客户机最大机身尺寸256m; 大客户端header_buffers 4 8k; 发送超时60s; keepalive_timeout 30秒; keepalive_requests 100000; 重置超时连接; server_tokens关闭; server_name_in_redirect关闭; 服务器名称哈希最大大小512; 服务器名称hash_bucket_size 512; 字符集utf-8; #FastCGI设置 fastcgi_buffers 8 256k; fastcgi_buffer_size 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi连接超时30s; fastcgi_read_timeout 300秒; fastcgi_send_timeout 180s; fastcgi_cache_lock打开; fastcgi_cache_lock_timeout 5s; fastcgi_cache_background_update于; fastcgi_cache_revalidate打开; #代理服务器设置 代理_直接关闭; proxy_set_header主机$Host; proxy_set_header X-Real-IP$remote_addr; $proxy_add_X_Forwarded_f的proxy_set_header X-Forwarded-For; proxy_pass_header Set-Cookie; 代理缓冲区32 4k; 代理缓冲区大小8k; 代理连接超时30s; 代理读取超时300s; 代理发送超时180s; #日志格式 log_format main“$remote_addr-$remote_user[$time_local]$request” “”“$status”“$body_bytes_sent”“$http_referer”“”“$http_user_agent”“$HTP_x_forwarded_for”“”; log_format字节'$body_bytes_sentd'; log_not_found关闭; access_log关闭; #Mime设置 包括/etc/nginx/mime.types; default_type应用程序/octet-stream; #压缩 gzip打开; gzip_static打开; gzip_vary打开; gzip_comp_level 6; gzip最小长度1024; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types文本/纯文本/css文本/javascript文本/js文本/xml application/json应用程序/javascript应用程序/x-javascript application.xml application/xml+rss-application/font-ttf-image/svg+xml-font/opentype; gzip_proxyd任何; gzip_disable“MSIE[1-6]\.”; #Cloudflare接口 include/etc/nginx/conf.d/cloudflare.inc; #SSL PCI合规性 ssl_session_cache共享:ssl:20m; ssl会话超时60m; ssl缓冲区大小1400; ssl_protocols TLSv1.2 TLSv1.3; 上的ssl_prefer_server_ciphers; ssl密码 “ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA2-POLY135:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SSHA256:ECDHA-ECDSA-EAS256-GCM-SHA 384:ECDHE-RS A-AES256-GCM SHA384:DHE-RSA-ES128-GCM SHA256:DHE-RSA AES256-GCM-SHA384:ECDHE-ECDS-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ES128-SHA:ECDHE-RSA-AES256 SHA384:ECDHE-RSA-AES128-SHA:ECDH E-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA AES256-HA256:DHE-RS A-AES2五十六-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-BC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA 384:AES128_SHA256:DES-CBC3-SHA:! 决策支持系统”; ssl_dhparam/etc/ssl/dhparam.pem; ssl _ ecdh曲线secp384r1; ssl_session_tickets关闭; 解析器127.0.0.53有效=300s ipv6=关闭; 解析器超时5s; #错误页面 error_page 403/error/404.html; error_page 404/error/404.html; error_page 410/error/410.html; 错误_第500页501 502 503 504 505/error/50x.html; #代理缓存 proxy_cache_path/var/cache/nginx级别=2 keys_zone=缓存:10m非活动=60m 最大尺寸=1024m; proxy_cache_key“$scheme$request_method$host$request uri”; proxy_temp_path/var/cache/nginx/temp; proxy_ignore_headers使Cache-Control过期; proxy_cache_use_stale错误超时invalid_header http_502; proxy_cache_valid任意1d; #FastCGI缓存 fastcgi_cache_path/var/cache/nginx/micro-levels=1:2 keys_zone=microche:10m max_size=1024m非活动=30m; fastcgi_cache_key“$scheme$request_method$host$request _uri”; fastcgi_cache_methods获取头部; fastcgi_cache_use_stale更新错误超时invalid_header http_500 http_503; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; add_header X-FastCGI-Cache$upstreamm_Cache_status; #缓存旁路 映射$http_cookie$no_cache{ 默认为0; ~SESS 1; ~wordpress_logged_in 1; } #文件缓存(静态资产) open_file_cache最大值=10000非活动=30秒; 打开文件缓存有效60秒; 打开文件缓存最小值使用2; open_file_cache_errors关闭; #通配符包括 include/etc/nginx/conf.d/*.conf; include/etc/nginx/conf.d/domains/*.conf; }
这是我的修改模板….wordpress_b_Webpavif.stpl
#=========================================================================# #默认Web域模板# #请勿修改此文件! 重建域名时,更改将丢失# # https://docs.hestiacp.com/admin_docs/web.html如何 -do-web-模板-工作# #=========================================================================# 服务器{ 监听%ip%:%web_ssl_port%ssl http2; 服务器名称%domain_idn%%alias_idn%; 根%docroot%; 索引index.php index.html index.htm; access_log/var/log/nginx/domains/%domain%.log组合; access_log/var/log/nginx/domains/%domain%.bytes字节; error_log/var/log/nginx/domains/%domain%.error.log错误; ssl_certificate%ssl_pem%; ssl_certificate_key%ssl_key%; ssl_stapling打开; ssl_stapling_verify打开; 包括%home%/%user%/conf/web/%domain%/nginx.hsts.conf*; location=/favicon.ico{ log_not_found关闭; access_log关闭; } 位置=/robots.txt{ 全部允许; log_not_found关闭; access_log关闭; } 位置~/\。 (?!众所周知\/){ 否认一切; 返回404; } ##插件Webp+Avif 位置~*wp\-content/(?!cache/fastware\-webpavif).+\。 (jpe?g|png|gif|bmp|webp)${ 重写/wp \-content/(.+)$/wp-content/cache/fastware-webpavif/$1; } 位置~*cache/fastware \-webpavif.+\。 (jpe?g|png|gif|bmp)${ add_header Vary Accept; try_files$uri.pref$webp$uri.pef$avif$uri$webp$uri$avif$uri/? fw-webp-avif-ondemand=全部; } 位置~*cache/fastware \-webpavif.+\。 网页${ add_header Vary Accept; try_files$uri$png/? fw-webp-avif-ondemand=png; } ##Webp+Avif端插件 位置/{ try_files$uri$uri//index.php$ 参数; ##位置~*^.+\。 (ogg|ogv|svg|svgz|swf|eot|otf|woff|woff2|mov|mp3|mp4|webm|flv|ttf|rss|atom|jpg|jpeg|gif|png|webp|ico|bmp|mid|midi|wav|rtf|css|js|jar)${ 位置~*^.+\。 (ogg|ogv|svg|svgz|swf|eot|otf|woff|woff2|mov|mp3|mp4|webm|flv|ttf|rss|atom|ico|bmp|mid|midi|wav|rtf|css|js|jar)${ 30天到期; fastcgi_hide_header“Set-Cookie”; } 位置~*/(?:上传|文件)/.*.php${ 否认一切; 返回404; } 位置~[^/]\.php(/|$){ fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_SCRIPT_name; try文件$uri=404; fastcgi_pass%backend_lsnr%; fastcgi索引.php; 包括/etc/nginx/fastcgi_params; 包括%home%/%user%/conf/web/%domain%/nginx.fastcgi_cache.conf*; if($request_uri~*“/wp-admin/|/wp-json/|wp-*.php|xmlrpc.php|index.php|/store.*|/cart.*|/my-account.*|checkout.*”){ 设置$no_cache 1; } 如果($http_cookie~*“comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress _no_cache|wordprest_logged_in|woocommerce_items_in_cart|woocerce_cart_hash|PHPSESSID”){ 设置$no_cache 1; } } } 位置/错误/{ 别名%home%/%user%/web/%domain%/document_errors/; } 位置/vstats/{ 别名%home%/%user%/web/%domain%/stats/; 包括%home%/%user%/web/%domain%/stats/auth.conf*; } proxy_hide_header升级; include/etc/nginx/conf.d/phpmyadmin.inc*; include/etc/nginx/conf.d/phppgadmin.inc*; 包括%home%/%user%/conf/web/%domain%/nginx.ssl.conf*; }
它有两个mod部分;
##插件Webp+Avif
位置~*wp\-content/(?!cache/fastware\-webpavif).+\。 (jpe?g|png|gif|bmp|webp)${rewrite/wp\-content/(.+)$/wp-content/cache/fastware-webpavif/$1;}
位置~*cache/fastware \-webpavif.+\。 (jpe?g|png|gif|bmp)${add_header Vary Accept;try_files$uri.pref$webp$uri.pef$avif$uri$avif$uri/?fw-webp-avif-ondemand=all;}
位置~*cache/fastware \-webpavif.+\。 webp${add_header可变接受;try_files$uri$png/?fw-webp-avif-ondemand=png;}
##结束插件Webp+Avif
在这之后,我改变了路线
位置~*^.+。 (ogg|ogv|svg|svgz|swf|eot|otf|woff|woff2|mov|mp3|mp4|webm|flv|ttf|rss|atom|jpg|jpeg|gif|png|webp|ico|bmp|mid|midi|wav|rtf|css|js|jar)${
使用另一个(只需删除“|jpg|jpeg|gif|png|webp”并设置新标题)。
位置~*^.+。 (ogg|ogv|svg|svgz|swf|eot|otf|woff|woff2|mov|mp3|mp4|webm|flv|ttf|rss|atom|ico|bmp|mid|midi|wav|rtf|css|js|jar)${ 30天到期; fastcgi_hide_header“设置Cookie”; }
模板“wordpress_b_Webpavif.tpl”就是这个,但我认为它没有被使用(在我的例子中,它有301重定向到https)。
#=========================================================================# #默认Web域模板# #请勿修改此文件! 重建域名时,更改将丢失# # https://docs.hestiacp.com/admin_docs/web.html如何 -do-web-模板-工作# #=========================================================================# 服务器{ 监听%ip%:%web_port%; 服务器名称%domain_idn%%alias_idn%; 根%docroot%; 索引index.php index.html index.htm; access_log/var/log/nginx/domains/%domain%.log组合; access_log/var/log/nginx/domains/%domain%.bytes字节; error_log/var/log/nginx/domains/%domain%.error.log错误; 包括%home%/%user%/conf/web/%domain%/nginx.forcessl.conf*; location=/favicon.ico{ log_not_found关闭; access_log关闭; } 位置=/robots.txt{ 全部允许; log_not_found关闭; access_log关闭; } 位置~/\。 (?!众所周知\/){ 否认一切; 返回404; } ##插件Webp+Avif 位置~*wp\-content/(?!cache/fastware\-webpavif).+\。 (jpe?g|png|gif|bmp|webp)${ 重写/wp \-content/(.+)$/wp-content/cache/fastware-webpavif/$1; } 位置~*cache/fastware \-webpavif.+\。 (jpe?g|png|gif|bmp)${ add_header Vary Accept; try_files$uri.pref$webp$uri.pef$avif$uri$webp$uri$avif$uri/? fw-webp-avif-ondemand=全部; } 位置~*cache/fastware \-webpavif.+\。 网页${ add_header Vary Accept; try_files$uri$png/? fw-webp-avif-ondemand=png; } ##Webp+Avif端插件 位置/{ try_files$uri$uri//index.php$ 参数; 位置~*^.+\。 (ogg|ogv|svg|svgz|swf|eot|otf|woff|woff2|mov|mp3|mp4|webm|flv|ttf|rss|atom|jpg|jpeg|gif|png|webp|ico|bmp|mid|midi|wav|rtf|css|js|jar)${ 30天到期; fastcgi_hide_header“设置Cookie”; } 位置~*/(?:上传|文件)/.*.php${ 否认一切; 返回404; } 位置~[^/]\.php(/|$){ fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_SCRIPT_name; try文件$uri=404; fastcgi_pass%backend_lsnr%; fastcgi索引.php; 包括/etc/nginx/fastcgi_params; 包括%home%/%user%/conf/web/%domain%/nginx.fastcgi_cache.conf*; if($request_uri~*“/wp-admin/|/wp-json/|wp-*.php|xmlrpc.php|index.php|/store.*|/cart.*|/my-account.*|checkout.*”){ 设置$no_cache 1; } 如果($http_cookie~*“comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress _no_cache|wordprest_logged_in|woocommerce_items_in_cart|woocerce_cart_hash|PHPSESSID”){ 设置$no_cache 1; } } } 位置/错误/{ 别名%home%/%user%/web/%domain%/document_errors/; } 位置/vstats/{ 别名%home%/%user%/web/%domain%/stats/; 包括%home%/%user%/web/%domain%/stats/auth.conf*; } 包括/etc/nginx/conf.d/phpmyadmin.inc*; include/etc/nginx/conf.d/phppgadmin.inc*; 包括%home%/%user%/conf/web/%domain%/nginx.conf*; }
我希望这能帮助你。
精彩的! 现在它工作了! 安装说明中没有此步骤:
在这之后,我改变了路线
位置~*^.+。 (ogg|ogv|svg|svgz|swf|eot|otf|woff|woff2|mov|mp3|mp4|webm|flv|ttf|rss|atom|jpg|jpeg|gif|png|webp|ico|bmp|mid|midi|wav|rtf|css|js|jar)${
使用另一个(只需删除“|jpg|jpeg|gif|png|webp”并设置新标题)。
位置~*^.+。 (ogg|ogv|svg|svgz|swf|eot|otf|woff|woff2|mov|mp3|mp4|webm|flv|ttf|rss|atom|ico|bmp|mid|midi|wav|rtf|css|js|jar)${ 30天到期; fastcgi_hide_header“Set-Cookie”; }
此外,我在代码行内的位置上精确地编写编辑。
现在插件是如何工作的? 它多久发送一次拉请求? 它与wp-cron同步了吗?
非常感谢!
嗯…插件工作。。 但当我加载网页时,它总是提供jpeg文件…
转换的图像 7个WebP图像 1张AVIF图像 2张PNG图像 跳过的图像0 WebP图像 5幅AVIF图像 当转换的大小>原始大小或转换失败时,将跳过图像。 排队的图像5个图像 缓存大小0 MB
螺纹起动器
特洛扎诺
(@tlozano)
@斯特法基奥 你是怎么测试的?
提供的图像始终是原始名称和扩展名,但类型和大小必须更改。
您必须使用开发工具进行检查(Herramientas para desarrolladores en Español–>Control+MAyusculas+I) 控制+Shift+I
(Windows、Linux、Chrome OS),然后打开“网络”选项卡,然后选择“IMG”。 选择“禁用缓存”进行测试。 进行web刷新(F5)并显示图像的文件类型。 它应该是jpeg、webp或Avif,但名称可以是.jpg。 有点像这样:
网址:https://ibb.co/Rbpqckh
太好了,效果很好! 谢谢你的解释。
我有最后一个问题(我希望 🙂 ).. 插件仅将图像转换为webp。
它支持AVIF(有绿色复选框),但如果我检查服务器上的AVIF文件,所有文件都是0字节…为什么?
我在Debian 11上使用hestiaCP。
谢谢
对不起,我错了! 0字节的AVIF文件具有扩展名.skip,因此它是正确的。
是否有日志文件来了解转换失败的原因?
谢谢
螺纹起动器
特洛扎诺
(@tlozano)
是的,我认为这是正确的。 这是因为Avif文件比原始文件大。 你可以试着把目标质量降到…?85?… 试试看。
插件作者
快速软件
(@fastware)
你好,
@特洛扎诺 感谢您的大力支持!
我将扩展nginx的插件文档。
>>好的,已经达到80%了。。 也许转换时有错误吗?
您可以尝试30%,看看何时需要更多的AVIF转换。 AVIF格式是否更小在很大程度上取决于图像。 使用默认质量(100%)设置,在大多数情况下,原始格式仍然较小,因此插件仍然使用原始(或webp)格式。 但您可以根据质量设置进行更改。 根据我的经验,50%仍然是质量和大小之间的良好平衡 对于AVIF (不适用于WebP)。
我在nginx和Hestia中也遇到了“WebP/AVIF图像请求失败”的问题。 幸运的是,我们都可以将配置与 @特洛扎诺 在我的情况下,它们看起来完全一样。 是的,在Hestia面板中,我为特定域启用了正确的模板(stpl)。
最奇怪的是,直到一周前,当我将Hestia更新到1.8.x时,它仍然运行良好(如下图所示)。后来,我重新检查并添加了此插件工作所需的nginx conf,但此后它就不起作用了。
我会再次尝试删除和安装插件,但有一点机会可以修复它。
还有其他建议我可以试试吗?