Apache2 X-Forwarded-Host包含错误的虚拟主机

Apache2 X-Forwarded-Host包含错误的虚拟主机,apache2,Apache2,我有一个充当反向代理的Apache服务器,其中配置了两个相同的VirtualHost:server1和server2(见下文)。server2.mydomain.com有一个指向server1.mydomain.com的CNAME DNS记录。当我击中http://server1.mydomain.com/some/resource,后端服务器会看到包含server2.mydomain.com的X-Forwarded-Host头。这是一个错误还是我的配置不正确 谢谢 -b 以下是我的虚拟主机的外

我有一个充当反向代理的Apache服务器,其中配置了两个相同的VirtualHost:server1和server2(见下文)。server2.mydomain.com有一个指向server1.mydomain.com的CNAME DNS记录。当我击中http://server1.mydomain.com/some/resource,后端服务器会看到包含server2.mydomain.com的X-Forwarded-Host头。这是一个错误还是我的配置不正确

谢谢

-b

以下是我的虚拟主机的外观:

非SSL(重写为SSL)


服务器管理员webmaster@localhost
ServerName server1.mydomain.com
服务器别名服务器1
服务器签名关闭
重新启动发动机
重写条件%{HTTPS}关闭
重写规则(*)https://%{HTTP\u HOST}%{REQUEST\u URI}
服务器管理员webmaster@localhost
ServerName server2.mydomain.com
服务器别名服务器2
服务器签名关闭
重新启动发动机
重写条件%{HTTPS}关闭
重写规则(*)https://%{HTTP\u HOST}%{REQUEST\u URI}
SSL


服务器管理员webmaster@localhost
ServerName server1.mydomain.com
服务器签名关闭
文档根。。。
标题编辑位置^http:(.*)$https:$1
RequestHeader集X-Forwarded-Proto https
ProxyVia关闭
代理请求关闭
代理主机
SSLProxyEngine打开
ProxyPass/https://back-end.mydomin.com/
ProxyPassReverse/https://back-end.mydomain.com/
...
服务器管理员webmaster@localhost
ServerName server2.mydomain.com
服务器签名关闭
文档根。。。
标题编辑位置^http:(.*)$https:$1
RequestHeader集X-Forwarded-Proto https
ProxyVia关闭
代理请求关闭
代理主机
SSLProxyEngine打开
ProxyPass/https://back-end.mydomin.com/
ProxyPassReverse/https://back-end.mydomain.com/
...

我的坏习惯。我有重叠的SSL虚拟主机(在启动/停止Apache时没有注意到警告)。解决方案是在ports.conf中添加NameVirtualHost*:443

-b

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName server1.mydomain.com
    ServerAlias server1
    ServerSignature off

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName server2.mydomain.com
    ServerAlias server2
    ServerSignature off

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName server1.mydomain.com
    ServerSignature off

    DocumentRoot ...

    <Directory ... />

    Header        edit Location ^http:(.*)$ https:$1
    RequestHeader set X-Forwarded-Proto https

    ProxyVia off
    ProxyRequests Off
    ProxyPreserveHost On

    SSLProxyEngine On
    ProxyPass / https://back-end.mydomin.com/
    ProxyPassReverse / https://back-end.mydomain.com/

    ...
<VirtualHost>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName server2.mydomain.com
    ServerSignature off

    DocumentRoot ...

    <Directory ... />

    Header        edit Location ^http:(.*)$ https:$1
    RequestHeader set X-Forwarded-Proto https

    ProxyVia off
    ProxyRequests Off
    ProxyPreserveHost On

    SSLProxyEngine On
    ProxyPass / https://back-end.mydomin.com/
    ProxyPassReverse / https://back-end.mydomain.com/

    ...
<VirtualHost>