我需要代理一些远程 APIhttps://example.com/api/
可在本地访问http://localhost/api/
我尝试输入以下行httpd.conf
:
ProxyPass /api/ https://example.com/api/
我已检查这些模块是否已启用:
ssl_module, proxy_module, proxy_http_module
当我尝试访问时http://localhost/api/
,出现了 500 内部服务器错误,我看到的error_log
是:
[Wed Jan 14 16:42:04.788401 2015] [proxy:warn] [pid 21916] [client ::1:59260] AH01144: No protocol handler was valid for the URL /api/v1/ads. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
我的问题与此有关:https://stackoverflow.com/questions/1997001/setting-up-a-basic-web-proxy-in-apache。实际上,当我尝试代理 http 资源时,一切正常,所以问题出在 SSL 上。
我希望它能起作用的原因是Access-Control-Allow-Origin
我在本地使用远程 API 时遇到了问题。
更新
这是整个 conf 文件。https://www.dropbox.com/s/mkrxna4h2o9yu8k/httpd.conf?dl=0
答案1
这应该是你所需要的全部:
RewriteEngine On
RewriteRule ^/api/(.*)$ https://example.com/api/$1 [P,QSA,L]
Apache 基本上会通过 mod_rewrite 模块创建新的 http 请求来代理你的请求,该模块默认启用