【问题标题】:Apache to server both static file and webappApache 为静态文件和 webapp 提供服务器
【发布时间】:2021-04-13 00:08:46
【问题描述】:

我在反向代理配置下运行 apache 来提供 java webapp 内容

<VirtualHost *:80>
SSLProxyEngine on
ProxyPreserveHost On
ProxyRequests Off

ServerName www.example.com
ServerAlias example.com

<Location />
        Order deny,allow
        Allow from all
        SetOutputFilter INFLATE;DEFLATE

        ProxyPass  http://localhost:7070/
        ProxyPassReverse  http://localhost:7070/
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</Location>

</VirtualHost>

现在我想添加静态文件夹,并且应该在相同的域名下但在“/auth”路径下提供服务 https://example.com/auth

所以我在上面的下面添加了下面的配置

<Location /auth>
      Require all granted
      Allow from all
</Location>

DocumentRoot /var/www/html/auth/
<Directory /var/www/html/auth>
        Require all granted
        DirectoryIndex index.html
</Directory>

但是当我尝试“https://example.com/auth”时,它仍然会转到 java webapp 并给我 404 当我 curl localhost 我可以看到网页内容

curl http://localhost

如何使用https://example.com/auth URL 访问 /var/www/html/auth/ 上的静态内容

【问题讨论】:

    标签: apache centos virtualhost httpd.conf


    【解决方案1】:

    我不确定您是否使用“位置”来匹配整个文档根目录,因为您将所有内容都传递给 proxypass:恕我直言,您可以完全删除这 2 行(“”和“/”)。

    要从 proxypass 中排除路径,您可以使用“!” (文档:https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypass)。如果您不想更改配置,下面的示例应该可以工作:

    <Location "/main-dir/sub-dir/">
        ProxyPass "http://backend.example.com/"
    </Location>
    <Location "/main-dir/sub-dir/static-content">
        ProxyPass "!"
    </Location>
    

    【讨论】:

    • 感谢您的回答,添加 ProxyPass “!”成功了
    猜你喜欢
    • 2020-02-21
    • 2015-09-26
    • 2019-08-24
    • 2021-09-07
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    相关资源
    最近更新 更多