用http 地址代理 https 地址
本人工作中,无耐接手一个老项目,是用apache做的服务器,前端工程师访问其它域名的接口提示跨域,解决方案是让运维人员设置返向代理解决。
例如:
前端小程序地址为:https://www.aaaa.com.cn
接口地址为:https://interface.aaa.me/abc/bcd
结果报错
[Wed Dec 27 15:53:12.316645 2023] [proxy:warn] [pid 10858] [client 10.0.92.55:45144]
AH01144: No protocol handler was valid for the URL /abc/bcd. If you are using a DSO version of mod_proxy,
make sure the proxy submodules are included in the configuration using LoadModule.,
referer: https://www.aaaa.com.cn/newmobile/
查看配置如下
<VirtualHost *:80>
ServerName www.aaaa.com.cn
DocumentRoot /var/www/html/aaaa/public/
<Directory "/var/www/html/aaaa/public/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Proxyrequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# *** 接口
ProxyPass /abc/bcd https://interface.aaa.me/abc/bcd
ProxyPassReverse /abc/bcd https://interface.aaa.me/abc/bcd
</VirtualHost>
查询全网总结如下
一、需要引入的模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so
二、添加如下语句
<VirtualHost *:80>
ServerName www.aaaa.com.cn
DocumentRoot /var/www/html/aaaa/public/
<Directory "/var/www/html/aaaa/public/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Proxyrequests off
SSLProxyEngine on
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# *** 接口
ProxyPass /abc/bcd https://interface.aaa.me/abc/bcd
ProxyPassReverse /abc/bcd https://interface.aaa.me/abc/bcd
</VirtualHost>
总结一下
确认以上模块全部加载,加上一句 SSLProxyEngine on ,否则无法代理 https的地址