AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[images](server)

Martin Hope
Totoro
Asked: 2022-03-17 12:32:11 +0800 CST

试图让 Apache 服务于 webp 而不是 png/jpg(来自 prestashop 的 /img 文件夹)

  • 1

第一次在这里发帖,所以我希望我做得很好。

我从我的 prestashop public_html 文件夹开始将所有 png/jpg 转换为 webp,并向 .htaccess 添加了重写规则,以便提供 webp 而不是 png/jpg。

我的重写基于已经存在的 prestashop 重写。我在哪里:
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
我最终做了:

RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.webp [L]
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.webp [L]
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]

哪个有效:我得到了提供 webp 图像的 jpg URL,到目前为止一切都很好(我知道仍然需要实现

#RewriteCond %{HTTP_ACCEPT} image/webp
#RewriteCond %{DOCUMENT_ROOT}/$1.webp -f

并且尝试弄清楚我是否应该离开[L]或做[L,T=image/webp]或做[T=image/webp,E=REQUEST_image],这就是为什么我正在阅读与 apache 相关的文档并在网络上爬取关于重写相关主题的内容,这确实是巨大的。

好的,回到主题,我发现我缺少对 prestashop 存储在 public_html/img 文件夹中的图像的 webp 重写。

然后我尝试了以下(以及其他变体):

RewriteRule ^/img/(.+)\.jpe?g$ /img/$1.webp [L]
RewriteRule ^/img/(.+)\.png$ /img/$1.webp [L]

^--- 不好...仍然从 img 目录提供 jpg/png 类型的图像(仔细检查 MIME 类型)。

注意:

  1. 每次我更改 .htaccess 并尝试解决方案时,我都会清除 prestashop 缓存,以防万一(尽管知道每次请求都会读取 .htaccess)。
  2. 存在 img 文件夹中 jpg/png 对应的 webp 图片。
  3. 图像文件 perms 在 img 文件夹中是正确的,实际上在 public_html 下的所有东西中都是正确的
  4. 在 prestashop 的 img 文件夹中,还有另一个 .htaccess,它限制了可以从此文件夹提供的文件类型,我已经添加了 webp,以防万一有人问。

更新:根据 MrWhite 的要求,添加 img 文件夹的 .htaccess

<IfModule mod_php5.c>
    php_flag engine off
</IfModule>

# Apache 2.2
<IfModule !mod_authz_core.c>
    Order deny,allow
    Deny from all
    <Files ~ "(?i)^.*\.(webp|jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico)$">
        Allow from all
    </Files>
</IfModule>

# Apache 2.4
<IfModule mod_authz_core.c>
    Require all denied
    <Files ~ "(?i)^.*\.(webp|jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico)$">
        Require all granted
    </Files>
</IfModule>

请问你们能帮我吗?

rewrite .htaccess extension mod-rewrite images
  • 1 个回答
  • 536 Views
Martin Hope
Alexander Sofianos
Asked: 2021-10-31 23:59:24 +0800 CST

Docker 私有注册表作为 kubernetes pod - 已删除的图像自动重新创建

  • 0

我将 docker 私有注册表 v2.7.0 作为具有服务和持久卷的 kubernetes pod 运行,这要感谢 Varun Kumar G 教程,这是我设置中唯一成功的方法,让 kubernetes 从我的私有 docker 注册表中提取我的3 个节点 - 本地 - 带有 ubuntu 20.04 lts kvms 的集群。

问题在于从 kubernetes pod docker registry v2.7.0 中删除图像(必须使用以前的版本,因为最新的 v2.7.1 不适用于 htpasswd)。此外,我已经阅读了很多类似的主题,例如this、this和this。

使用 docker registry v2.7.1作为 docker 容器运行,我可以毫无问题地删除图像,

但是使用 docker registry v2.7.0作为 kubernetes pod运行,通常的删除步骤导致无法再次推送已删除的映像,即使在成功删除 blob 并手动删除/var/lib/registry/docker/registry/v2/repositories/.

下面是注册表 pod yaml

apiVersion: v1
kind: Pod
metadata:
  name: dockreg-pod
  labels:
    app: mregistry
spec:
  containers:
  - name: registry
    image: registry:2.7.0
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: repo-vol
      mountPath: "/var/lib/registry"
    - name: certs-vol
      mountPath: "/certs"
      readOnly: true
    - name: auth-vol
      mountPath: "/auth"
      readOnly: true
    env:
    - name: REGISTRY_AUTH
      value: "htpasswd"
    - name: REGISTRY_AUTH_HTPASSWD_REALM
      value: "Registry Realm"
    - name: REGISTRY_AUTH_HTPASSWD_PATH
      value: "/auth/htpasswd"
    - name: REGISTRY_HTTP_TLS_CERTIFICATE
      value: "/certs/tls.crt"
    - name: REGISTRY_HTTP_TLS_KEY
      value: "/certs/tls.key"
    - name: REGISTRY_STORAGE_DELETE_ENABLED
      value: "true"
  volumes:
  - name: repo-vol
    persistentVolumeClaim:
      claimName: repo-pvc
  - name: certs-vol
    secret:
      secretName: certs-secret
  - name: auth-vol
    secret:
      secretName: auth-secret
  restartPolicy: Always
  nodeName: spring

以下是持久卷 yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: repo-pv
  labels:
    type: prstore
spec:
  capacity:
    storage: 7Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    fsType: ext4
    path: /root/repo
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - spring
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: repo-pvc
  labels:
    type: prstore
spec:
  selector:
    matchLabels: 
      type: prstore
  volumeMode: Filesystem
  storageClassName: local-storage
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 7Gi

假设我在一个全新的注册表 pod 上推送一个图像,并且预先清除了持久性存储。

root@sea:scripts# docker push dockreg:5000/mubu4:v4
The push refers to repository [dockreg:5000/mubu4]
9f54eef41275: Pushed 
v4: digest: sha256:7bd0d9a9821815dccb5c53c18cea04591ec633e2e529c5cdd39681169589c17f size: 529

删除图像似乎按预期工作,直到我再次尝试推送已删除的图像,此时我遇到了可怕的Layer already exists错误。

正如您可能在上面看到的,我在注册表 pod 环境中包含以下内容,

- name: REGISTRY_STORAGE_DELETE_ENABLED
      value: "true"

否则我会unsupported从调用中得到一个错误curl -X DELETE,即使在添加之后

delete:
    enabled: true

在/etc/docker/registry/config.yml吊舱内,

version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
  delete:
    enabled: true
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

这似乎对我的用例没有影响。

以下是删除步骤。

curl -u alexander:sofianos \
> -vsk -H "Accept: \
> application/vnd.docker.distribution.manifest.v2+json" \
> -X DELETE \
> https://dockreg:5000/v2/mubu4/manifests/sha256:\
> 7bd0d9a9821815dccb5c53c18cea04591ec633e2e529c5cdd39681169589c17f

上面打印了以下内容

> DELETE /v2/mubu4/manifests/sha256:7bd0d9a9821815dccb5c53c18cea04591ec633e2e529c5cdd39681169589c17f HTTP/2
> Host: dockreg:5000
> authorization: Basic YWxleGFuZGVyOnNvZmlhbm9z
> user-agent: curl/7.68.0
> accept: application/vnd.docker.distribution.manifest.v2+json
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 250)!
< HTTP/2 202 
< docker-distribution-api-version: registry/2.0
< x-content-type-options: nosniff
< content-length: 0
< date: Sat, 30 Oct 2021 13:25:53 GMT
< 
* Connection #0 to host dockreg left intact

这似乎是有序的。

下面,从注册表 pod 中删除 blob

root@sea:scripts# kubectl exec -it dockreg-pod -- sh
/ # bin/registry garbage-collect  /etc/docker/registry/config.yml
mubu4

0 blobs marked, 3 blobs and 0 manifests eligible for deletion
blob eligible for deletion: sha256:7b1a6ab2e44dbac178598dabe7cff59bd67233dba0b27e4fbd1f9d4b3c877a54
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/7b/7b1a6ab2e44dbac178598dabe7cff59bd67233dba0b27e4fbd1f9d4b3c877a54  go.version=go1.11.2 instance.id=82a101ee-47f4-4f4f-bc79-76d774b0924b service=registry
blob eligible for deletion: sha256:7bd0d9a9821815dccb5c53c18cea04591ec633e2e529c5cdd39681169589c17f
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/7b/7bd0d9a9821815dccb5c53c18cea04591ec633e2e529c5cdd39681169589c17f  go.version=go1.11.2 instance.id=82a101ee-47f4-4f4f-bc79-76d774b0924b service=registry
blob eligible for deletion: sha256:ecb35fc8715f5ab1d9053ecb2f2d9ebbec4a59c0a0615d98de53bc29f7285085
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/ec/ecb35fc8715f5ab1d9053ecb2f2d9ebbec4a59c0a0615d98de53bc29f7285085  go.version=go1.11.2 instance.id=82a101ee-47f4-4f4f-bc79-76d774b0924b service=registry

最后,手动删除存储库映像

/ # rm -rf /var/lib/registry/docker/registry/v2/repositories/mubu4

在我的持久存储上,注册表现在看起来像这样

root@spring:repo# tree
.
└── docker
    └── registry
        └── v2
            ├── blobs
            │   └── sha256
            │       ├── 7b
            │       └── ec
            └── repositories

8 directories, 0 files

但是当我再次尝试推送已删除的图像时,我得到了

root@sea:scripts# docker push dockreg:5000/mubu4:v4
The push refers to repository [dockreg:5000/mubu4]
9f54eef41275: Layer already exists 
v4: digest: sha256:7bd0d9a9821815dccb5c53c18cea04591ec633e2e529c5cdd39681169589c17f size: 529

在我的注册表中,我之前删除的 mubu4 图像文件夹已通过上述推送命令神秘地重新创建。

root@spring:repo# tree
.
└── docker
    └── registry
        └── v2
            ├── blobs
            │   └── sha256
            │       ├── 7b
            │       └── ec
            └── repositories
                └── mubu4
                    └── _manifests
                        ├── revisions
                        │   └── sha256
                        │       └── 7bd0d9a9821815dccb5c53c18cea04591ec633e2e529c5cdd39681169589c17f
                        │           └── link
                        └── tags
                            └── v4
                                ├── current
                                │   └── link
                                └── index
                                    └── sha256
                                        └── 7bd0d9a9821815dccb5c53c18cea04591ec633e2e529c5cdd39681169589c17f
                                            └── link

19 directories, 3 files

我还尝试用

root@spring:repo# rm -rf *

无济于事。之后尝试推送已删除的图像,仍然输出完全相同的Layer already exists错误,并且注册表树再次自动重新创建,看起来与上述树输出中的完全相同。

问题是我还能尝试什么来完成这项工作,和/或替代地,

从上面的测试可以看出,在 docker registry kubernetes pod 中,还有其他文件,这些文件保存了已删除图像似乎没有被删除的配置,并且这些文件通过 docker push 调用激活了已删除图像的重新创建。除了树我应该往哪里看

/var/lib/registry/docker/registry/v2/

所以我可以删除对已删除图像的所有引用?

images docker-registry docker kubernetes yaml
  • 1 个回答
  • 393 Views
Martin Hope
siberiano
Asked: 2010-04-15 10:27:18 +0800 CST

Nginx + PHPBB3 反向代理图片问题

  • 1

大家好,我的 Nginx 前端 + Apache2 后端 + PHPBB3 软件有问题。它也不加载 CSS 和图像。我经常遇到这样的错误:

2010/04/14 16:57:25 [错误] 13365#0: *69 open() "/var/www/foo/styles/styles/coffee_time/theme/large.css" 失败(2:没有这样的文件或目录),客户端:83.44.175.237,服务器:www.foo.com,请求:“GET /styles/coffee_time/theme/large.css HTTP/1.1”,主机:“www.foo.com”,引用者:“ http ://www.foo.com/viewforum.php?f=43 "

这是我的网站配置:

服务器{听80;server_name www.foo.com; access_log /var/log/nginx/foo.access.log;

    # serve static files directly
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
    access_log        off;
    expires           30d;
    root  /var/www/foo/;
    }



    location / {
            root   /var/www/foo/;
            index  /var/www/foo/index.php;
    }

   # proxy the PHP scripts to predefined upstream .apache.        #
    location ~ .php$ {
            proxy_pass   http://apache;
   }

    location /styles/ {
            root   /var/www/foo/styles/;
            }
nginx reverse-proxy images phpbb
  • 1 个回答
  • 963 Views
Martin Hope
deadman
Asked: 2010-03-25 00:13:04 +0800 CST

一个文件夹可以存储多少个文件和文件夹有限制吗?

  • 0

我有这个文件夹,叫它'X'。

目前,它有 40k 个文件夹和 70k 个文件。

我有点担心,里面是图像。文件夹“X”可以存储是否有限制?

该文件夹很重要,它存储了我当前用户的图像。请指教?

还是应该存储在数据库(BLOB)中?我正在使用mysql。

请指教。

编辑:

我正在使用 Windows Server 2003。IIS 6

mysql filesystems images
  • 6 个回答
  • 2045 Views
Martin Hope
Powertieke
Asked: 2010-02-12 01:00:48 +0800 CST

扩大现有虚拟服务器上的映像磁盘空间(centos 5 主机上的 centos 5 guest - Xen)

  • 2

是否可以增加现有虚拟服务器映像的大小(centos 5 主机上的 centos 5 guest - Xen)?我刚刚安装了一个新来宾,发现在安装时我没有为来宾分配足够的存储空间。

我知道我可以通过挂载到虚拟系统来添加虚拟存储,但我真的希望系统尽可能简单(一个挂载的设备 - 每个系统一个映像文件)。

那么,是否可以在现有系统中增加图像的存储量,还是我必须重新开始?

virtualization xen centos storage images
  • 1 个回答
  • 930 Views
Martin Hope
JohnyV
Asked: 2009-08-20 16:32:00 +0800 CST

谷歌安全搜索网络过滤

  • 1

我提出了一个问题,一名学生在 Reece Bennett 上进行了谷歌图片搜索,在第二页上,在将安全搜索从中等到关闭后,他们得到了一些不合适的图片。阻止首选项页面无济于事,因为有一个下拉框可以关闭安全搜索。有没有办法阻止用户更改安全搜索选项?有没有人解决过这个问题?

search google images
  • 1 个回答
  • 336 Views
Martin Hope
letronje
Asked: 2009-07-01 04:14:38 +0800 CST

使用 nfs 为具有高读写比的系统优化图像服务

  • 1

我们的系统主要使用 NFS 来复制和提供来自多个节点的图像。

新图像添加的频率不高。因此写入很少见。几乎所有请求都是读取请求。

我如何优化我的系统以获得最大的读取性能(仅使用 nfs)。是否有任何快速可靠的测试来验证系统是否性能更好?

有没有更好的方法来快速提供图像?可以在 nfs 挂载之上使用 squid/缓存机制来加快速度吗?

我们已经在使用 apache 的内存缓存模块。

服务器和客户端使用 - nfs v3,全部运行 RHEL 4。

服务器硬件配置:RAM:3GB,四核 Intel(R) Xeon(TM) @ 3 Ghz。

服务器上的 cat /proc/net/rpc/nfsd" 给出:

rc 0 3584710 221921733 fh 1506 0 0 0 0 io 4274869225 1474485090 th 8 581669 39835.922 7449.989 1396.547 0.000 879.767 604.030 436.573 320.797 0.000 1362.017 ra 16 3454951 13954 4091 8186 3920 6990 6421 3003 5574 2727 2467399 net 225510008 0 225488411 41217 rpc 225506272 0 0 0 0 proc2 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 proc3 22 57 144259928 359775 11723001 58910204 0 5977165 2145920 546253 3829 0 0 509776 3718 15256 165 21497 79725 10067 59 0 867450 proc4 2 0 0

linux nfs apache-2.2 squid images
  • 6 个回答
  • 1673 Views
Martin Hope
blndcat
Asked: 2009-06-28 05:47:43 +0800 CST

如何找出在 linux 安装中默认安装的所有软件包?

  • 2

我正在考虑获得一个 VPS 并使用 Ubuntu。我在家庭服务器上安装了 linux,我几乎总是选择一个非常裸的系统,然后在安装完成后手动安装软件包。

但是对于 VPS,一些提供商有可以使用的预制图像。如果我要使用其中一个,找出/列出已安装的内容(包括位置和版本等内容)的最简单方法是什么?

linux ubuntu package-management vps images
  • 4 个回答
  • 1126 Views
Martin Hope
Rick Hensly
Asked: 2009-06-26 16:15:24 +0800 CST

在虚拟电脑上访问 apache

  • 1

我正在使用虚拟电脑来测试我的网站。

我可以在虚拟 PC 上访问我的所有网页。

但是,图像无法正确加载。

我可以浏览到我的图像文件夹并查看所有这些。但是,如果我单击图像,它将不会加载,并且 apache 日志会显示虚拟 pc 的 ip 试图查看图像:

192.168.0.55 - - [25/Jun/2009:20:10:41 -0400] "GET /images/pic.png HTTP/1.1" 302 220

现在,如果我刷新它加载的页面。

192.168.0.55 - - [25/Jun/2009:20:10:51 -0400] "GET /images/bg.png HTTP/1.1" 200 214

此外,图像不会以 html 或 css 加载。这似乎是一个重定向问题或其他什么,但我不知道如何解决它。

感谢您的任何建议

http apache-2.2 redirect images
  • 3 个回答
  • 434 Views
Martin Hope
user8042
Asked: 2009-06-25 06:13:48 +0800 CST

提供 50 万张带有冗余的图像

  • 1

我希望将我们的图像服务功能从我们的主服务器中分离出来。我们有近 50 万张图片——其中任何一张都可以随时访问。我一直在研究使用连接到 iSCSI SAN 的 W2k8 集群,想知道是否有更好的方法来提供冗余方式来提供大量图像?有人建议丢失 SAN 并在每个文件服务器上保存图片副本将是更好的解决方案 - 是这种情况吗?操作系统必须基于 Windows。

谢谢,

安德鲁

web images
  • 5 个回答
  • 510 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve