Apache ProxyPass 忽略静态文件

vir*_*yes 8 jetty static-content proxypass apache-2.4

Apache 前端服务器连接到 Jetty 应用程序服务器时出现问题。

我认为ProxyPass !在位置块中不应该将处理传递给应用程序服务器,但由于某种原因,在我的情况下没有发生,Jetty 在缺少的静态(js、css 等)上显示 404

这是我的 Apache (v 2.4, BTW) 虚拟主机块:

DocumentRoot /path/to/foo
  ServerName foo.com
  ServerAdmin webmaster@foo.com

  RewriteEngine On

  <Directory /path/to/foo>
    AllowOverride  None
    Require all granted
  </Directory>

  ProxyRequests Off
  ProxyVia Off
  ProxyPreserveHost On

  <Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
  </Proxy>

  # don't pass through requests for statics (image,js,css, etc.)
  <Location /static/>
    ProxyPass !
  </Location>

  <Location />
    ProxyPass           http://localhost:8081/
    ProxyPassReverse    http://localhost:8081/
    SetEnv              proxy-sendchunks 1
  </Location>
Run Code Online (Sandbox Code Playgroud)

Kyl*_*ith 13

您需要使用 ProxyPass !带路径的参数,而不是在<Location>块中,例如:

ProxyPass /static !
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
Run Code Online (Sandbox Code Playgroud)

我相信这些规则是按照它们在配置中出现的顺序处理的,所以一定要先指定排除规则。