Cloudflare和mod_proxy

时间:2015-03-26 12:52:03

标签: apache .htaccess mod-rewrite mod-proxy cloudflare

我已经使用mod_proxy从example-domain.com重定向到example-domain.com:8080,没有CloudFlare(预留代理)它可以工作......但是使用CloudFlare它只是响应错误1000个DNS指向禁止的IP。有没有机会通过这个仍然使用CloudFlare来保护自己?我不希望地址显示类似于mod_rewrite http://example-domain.com:8080的内容,这就是为什么我重定向,在端口80上托管是不可能的,所以没有更改。

我的虚拟主机配置:

    <Directory /var/www/example-domain.com>
            AllowOverride None
            Require all denied
            </Directory>

    <VirtualHost *:80>
            DocumentRoot /var/www/example-domain.com/web

            ServerName example-domain.com
            ServerAlias www.example-domain.com 
            ServerAlias alias.example-domain.com
            ServerAdmin webmaster@example-domain.com
            ProxyPreserveHost On
            ProxyRequests Off

            <Proxy *>
              Order deny,allow
              Allow from all
            </Proxy>

            ProxyPass / http://example-domain.com:8080/
            ProxyPassReverse / http://example-domain.com:8080/

    </VirtualHost>

1 个答案:

答案 0 :(得分:2)

无论您通过哪个端口访问CloudFlare,CloudFlare都倾向于首先尝试端口80/443。如果它可以在它自己的代理期间连接到这些端口,它会在那里停止,然后不会尝试你真正想要的端口(在你的情况下为8080)。

因此,这看起来像一个循环循环,您将请求从CloudFlare指向代理,通过CloudFlare指向服务器端口8080.然后CloudFlare剥离端口8080并通过普通连接进行连接。

解决此问题的最佳方法是简单地将ProxyPass设置为通过不通过CloudFlare网络运行的URL或仅通过localhost运行。

因此,要么将VirtualHost中的ProxyPass更改为:

        ProxyPass / http://direct.example-domain.com:8080/
        ProxyPassReverse / http://direct.example-domain.com:8080/

direct.example-domain.com不通过CloudFlare网络路由(CloudFlare DNS中的灰色云,提供您正在进行全主机CloudFlare设置)。

或者更改您的代理传递以通过localhost:

        ProxyPass / http://127.0.0.1:8080/
        ProxyPassReverse / http://127.0.0.1:8080/

玩得开心!