经过一番反复试验后想通了。这就是我所拥有的...
我可以使用一个 IP 地址在一台服务器上实现此目的,还是使用一台服务器托管和一台 mod_proxy ?
答:只有一个 IP 地址的 ON 服务器可以正常工作。所有代理功能都通过一个端口处理,在我的例子中是:9000。端口号的选择完全取决于您。9000 只是一个很大的数字,并没有与任何其他节点功能冲突。据我所知,这似乎也是一个不成文的标准。
如果我可以在一台服务器上做到这一点。如果是这样,什么是通用设置(A 到 B)?一两个虚拟主机?
答:这可能最好通过查看我的 Apache 虚拟主机设置来解释......
因为我使用的是 SSL,所以所有端口:80 HTTP 请求都被重写为 HTTPS
虚拟主机 *:80
重写引擎开启
RewriteCond %{HTTPS} 关闭
RewriteRule (.*) http(s)://%{HTTP_HOST}%{REQUEST_URI}
/虚拟主机
我在端口:3000 上运行节点应用程序,因此所有流量都从标准:443 路由到端口:3000,反之亦然。就公众而言,基本上端口:3000 通过服务器代理成为主域名。
虚拟主机 *:443
重写引擎开启
代理请求关闭
SSLEngine 开启
SSLProxyEngine 开启
SSLCertificateFile /pathToCert/sslCert.crt
SSLCertificateKeyFile /pathToKey/sslKey.key
地点 /
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
/地点
/虚拟主机
我已将端口 :9000 分配为我的跨域 HTTP POST 请求的反向代理。ProxyPass 和 ProxyPassReverse 指令本质上重写了我使用我的域地址发出的 HTTP 请求的 url。
https://MySite.com:9000/?request¶ms&here
会变成
https://SomeOtherSiteThanMine.com/?request¶ms&here
从而欺骗浏览器以为我正在向我自己的域发出请求。另请注意使请求 CORS 与我的代理兼容的“标头集”行。
虚拟主机 *:9000
重写引擎开启
代理请求关闭
SSLEngine 开启
SSLProxyEngine 开启
SSLCertificateFile /pathToCert/sslCert.crt
SSLCertificateKeyFile /pathToKey/sslKey.key
ProxyPass / https://SomeOtherSiteThanMine.com/
ProxyPassReverse / https://SomeOtherSiteThanMine.com/
标头集 Access-Control-Allow-Origin "*"
标头集访问控制允许方法“POST”
/虚拟主机
3. 解释 ProxyPass 和 ProxyReversePass 指令。我需要在此处添加我的外部服务 URL 吗?
A:见上面
4. 我是不是在单行道上完全走错了路?
A:不,最终完美地解决了问题。
如果有人发现该方法有问题,请务必加入。我只是拼凑了一些模糊描述的示例。