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 / 问题 / 704932
Accepted
Tobias
Tobias
Asked: 2015-07-11 10:14:45 +0800 CST2015-07-11 10:14:45 +0800 CST 2015-07-11 10:14:45 +0800 CST

让 Apache 提供静态内容而不是将其转发给 Plone (++resource++)

  • 772

我有一个基于 Plone 的站点,在 Apache 2.4 之后运行,它的性能可能会更好一些。一个想法是让 Apache 为内容的静态部分提供服务,防止它们被重写为 Plone 进程,就像通常所做的那样:

RewriteEngine On
RewriteRule  ^/(.*) http://localhost:8080/VirtualHostBase/http/%{HTTP_HOST}:80/Plone/VirtualHostRoot/$1 [L,P

这些静态内容并不都在同一个地方。但是,Plone 提供了一种命名资源目录的标准方法;例如,“浏览器”mybrowser可能myproduct有一个文件系统目录static:

/my/plone/root/Products/myproduct/mybrowser/static/

这将作为/++resource++mybrowser-static.

让 Plone 提供静态文件没有多大意义,所以我想防止某些请求被重写,而是直接提供。

这是我尝试过的:

# in Plone: /++resource++mybrowser-static
<Directory /my/plone/root/Products/myproduct/mybrowser/static>
    Options All
    AllowOverride All
    Require all granted
</Directory>
Alias /static                       /my/plone/root/Products/myproduct/mybrowser/static
Alias /++resource++mybrowser-static /my/plone/root/Products/myproduct/mybrowser/static
LogLevel alert rewrite:trace3 alias:trace3
...
RewriteCond %{REQUEST_URI} !^/++resource++mybrowser-static
RewriteCond %{REQUEST_URI} !^/static/
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/%{HTTP_HOST}:80/Plone/VirtualHostRoot/$1 [L,P]

因此,我目前对同一个目录有两个别名;该++版本是更通用的方法,所以我希望它能够工作。

但是,当我请求时http://my.site.com/static/logo.png,这有效:

... [rewrite:trace2] ... init rewrite engine with requested uri /static/logo.png
... [rewrite:trace3] ... applying pattern '^/(.*)' to uri '/static/logo.png'
... [rewrite:trace1] ... pass through /static/logo.png

...虽然.../++resource++mybrowser-static/版本没有(即这是由 Zope 提供的):

... [rewrite:trace2] ... init rewrite engine with requested uri /++resource++mybrowser-static/logo.png
... [rewrite:trace3] ... applying pattern '^/myunitracc([/?].+)\\?$' to uri '/++resource++mybrowser-static/logo.png'
... [rewrite:trace3] ... applying pattern '^/(.*)' to uri '/++resource++mybrowser-static/logo.png'
... [rewrite:trace2] ... rewrite '/++resource++mybrowser-static/logo.png' -> 'http://localhost:8080/VirtualHostBase/http/my.site.com:80/Plone/VirtualHostRoot/++resource++mybrowser-static/logo.png'
... [rewrite:trace2] ... forcing proxy-throughput with http://localhost:8080/VirtualHostBase/http/my.site.com:80/Plone/VirtualHostRoot/++resource++mybrowser-static/logo.png
... [rewrite:trace1] ... go-ahead with proxy request proxy:http://localhost:8080/VirtualHostBase/http/my.site.com:80/Plone/VirtualHostRoot/++resource++mybrowser-static/logo.png [OK]

在这两种情况下,我都希望通过而不是强制代理吞吐量。

我需要以+某种方式引用字符吗?我已经尝试用反斜杠作为前缀,或者用 替换它们%2B,但这似乎没有任何区别。

我也看过这里,但ProxyPass <url> !对我不起作用(还没有?),可能是因为 RewriteRule 而不是ProxyPass/ ProxypassReverse(Zope 虚拟主机机器负责“反向”部分本身)。

谢谢你的帮助!

apache-2.4
  • 1 1 个回答
  • 461 Views

1 个回答

  • Voted
  1. Best Answer
    Tobias
    2015-07-14T00:43:52+08:002015-07-14T00:43:52+08:00

    我找到了让它工作的方法。

    增加日志级别后:

    LogLevel alert rewrite:trace5
    

    ...我得到了一些关于模式匹配的额外信息(在第 4 级)。

    当放在方括号中时,文字+字符起作用:

    RewriteCond !^/[+][+]resource[+][+]myproduct-static/
    RewriteRule ...    
    

    对于别名,这不是必需的:

    Alias /++resource++myproduct-static /my/zope/root/Products/myproduct/static
    
    • 1

相关问题

  • SELinux 阻止 Apache 写入文件

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