我在 localhost:3030 运行一个服务器,我可以访问许多网页。当我在 上执行 wget 时localhost:3030/index.html
,我获取了网页。使用 ProxyPassMatch,我试图将请求重定向到 ,example.com/sparql/<something>
但locahost:3030/<something>
它不起作用。我使用的是 debian,配置如下:
<VirtualHost *:80>
ServerName example.com
ProxyPass "/sparql" "http://localhost:3030/"
ProxyPassReverse "/sparql" "http://localhost:3030/"
ProxyPassReverseCookieDomain "localhost" "example.com"
....
<VirtualHost *:80>
当我在 上发送请求时example.com/sparql/index.html
,页面返回,但没有返回任何图像和 css 文件。配置有问题吗?
答案1
为什么要用ProxyPassMatch
这么简单的反向代理?您可以...
<VirtualHost *:80>
ServerName example.com
...
ProxyPass "/sparql/" "http://localhost:3030/sparql/"
ProxyPassReverse "/sparql/" "http://localhost:3030/sparql/"
ProxyPassReverseCookieDomain "localhost" "example.com"
</VirtualHost>
然后,如果您的内容位于HTML 正文中http://localhost:3030/
,可能会有一些引用 而/
不是的硬编码内容/sparql/
。虽然也可以使用mod_substitute,这可能会导致其他问题。因此,建议使用子域名而不是在路径中添加额外的部分,如下所示:
<VirtualHost *:80>
ServerName sparql.example.com
...
ProxyPass "/" "http://localhost:3030/"
ProxyPassReverse "/" "http://localhost:3030/"
ProxyPassReverseCookieDomain "localhost" "sparql.example.com"
</VirtualHost>