【发布时间】:2019-10-13 11:34:37
【问题描述】:
我继承了一个反向代理设置,它是 Apache SSL 终止 EC2 实例堆栈(带有 ALB 和 DNS)的一部分。 Apache 服务器及其配置是从 rpm 规范文件中烘焙出来的,这些文件在创建或更新期间部署在服务器上的 RPM 中。 我目前有一个映射,将请求路由到域名或主机名到私有(不在公共互联网上)后端 API。我在 S3 中有使用此 API 的静态资产,我的要求是还配置从用户友好域名到此 S3 存储桶的路由,然后希望将此后端 S3 url 设为私有。
将 API 的后端 url 与 S3 的 url 交换,我已经能够从公共域路由到 S3 存储桶。但是,我不确定如何使用相同的来源或域名设置两条路由,因为我必须使用 S3 存储桶中的 API 并验证访问这些资源的用户的证书。
这个系统就像一个黑匣子,我目前无法访问日志。在下面的代码中,我已将 S3_URL 和 /visualizer/ 映射添加到原始 API 映射中。 API 映射有效,但 S3_URL 组合在一起时无效。
#!/bin/bash
set -eu -o pipefail
API_URL=$(cat $1 | jq -r '.configuration.API_URL')
echo $API_URL
S3_URL=$(cat $1 | jq -r '.configuration.S3_URL')
echo $S3_URL
cat > /etc/httpd/conf.d/coy-httpd-includes/https_vhost/proxypass.inc <<EOF
ProxyRequests Off
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyMachineCertificateFile /etc/pki/tls/private/client_crt_rsa.pem
<Proxy *>
Require all granted
</Proxy>
ProxyPass / ${API_URL} retry=\${CLOUD_HTTPS_PROXY_RETRY} keepalive=\${CLOUD_HTTPS_PROXY_KEEPALIVE} nocanon
ProxyPassReverse / ${API_URL}
ProxyPass /visualizer/ ${S3_URL} retry=\${CLOUD_HTTPS_PROXY_RETRY} keepalive=\${CLOUD_HTTPS_PROXY_KEEPALIVE} nocanon
ProxyPassReverse /visualizer/ ${S3_URL}
EOF
cat > /etc/httpd/conf.d/coy-httpd-includes/http_vhost/elb_health_check_proxypass.inc <<'CONFIG'
RewriteEngine on
RewriteRule / /var/www/cgi-bin/status
<Directory /var/www/cgi-bin>
Options +ExecCGI
SetHandler cgi-script
</Directory>
CONFIG
【问题讨论】:
标签: apache reverse-proxy