【问题标题】:Apache multiple ports bindedApache多个端口绑定
【发布时间】:2016-01-17 09:16:13
【问题描述】:

我在 apache 中配置了我的 httpd.conf,以根据请求的端口号指向多个站点。这个配置部署在windows下可以正常工作,但是当我把同样的配置移到linux上就不行了,求大神帮忙。

下面是相同的sn-p。

Listen 81
Listen 82

<VirtualHost *:81>  
    RewriteEngine on
    RewriteCond %{HTTPS} on
    RewriteRule ^((?!/services).)*$ http://%{HTTP_HOST}%{REQUEST_URI}
    ServerAdmin root@localhost
    ProxyRequests off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPreserveHost On
    Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED  
    ProxyPass / balancer://mycluster/ stickysession=ROUTEID
    <Proxy balancer://mycluster>
        Order deny,allow
        Allow from all
        BalancerMember http://10.236.75.102:9765 route=AS1 loadfactor=100  timeout=600 Keepalive=On
    </Proxy>
    <Location /balancer-manager>
        SetHandler balancer-manager
        Order deny,allow
        Allow from all
<IfModule mod_headers.c>
       SetEnvIf Origin (.*) AccessControlAllowOrigin=$1
       Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
       Header set Access-Control-Allow-Credentials true
</IfModule>

    </Location>
</VirtualHost>

<VirtualHost *:82>  
    RewriteEngine on
    RewriteCond %{HTTPS} on
    RewriteRule ^((?!/services).)*$ http://%{HTTP_HOST}%{REQUEST_URI}
    ServerAdmin root@localhost
    ProxyRequests off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPreserveHost On
    Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED  
    ProxyPass / balancer://mycluster/ stickysession=ROUTEID
    <Proxy balancer://mycluster>
        Order deny,allow
        Allow from all
        BalancerMember http://10.236.75.101:9767/carbon/ route=UES1 loadfactor=100  timeout=600 Keepalive=On
    </Proxy>
    <Location /balancer-manager>
        SetHandler balancer-manager
        Order deny,allow
        Allow from all
<IfModule mod_headers.c>
       SetEnvIf Origin (.*) AccessControlAllowOrigin=$1
       Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
       Header set Access-Control-Allow-Credentials true
</IfModule>

【问题讨论】:

    标签: linux proxy reverse-proxy httpd.conf apache2.2


    【解决方案1】:

    我找到了答案,下面是最终的解决方案,

    <VirtualHost *:81>
            RewriteEngine on
            RewriteCond %{HTTPS} on
            RewriteRule ^((?!/services).)*$ http://%{HTTP_HOST}%{REQUEST_URI}
            ServerAdmin root@localhost
            ProxyRequests off
            <Proxy *>
                    Order deny,allow
                    Allow from all
            </Proxy>
            ProxyPreserveHost On
            Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
            ProxyPass / balancer://mycluster/ stickysession=ROUTEID
            <Proxy balancer://mycluster>
                    Order deny,allow
                    Allow from all
                    BalancerMember http://10.236.75.102:9765 route=AS1 loadfactor=100  timeout=600 Keepalive=On
            </Proxy>
            <Location /balancer-manager>
                    SetHandler balancer-manager
                    Order deny,allow
                    Allow from all
    <IfModule mod_headers.c>
           SetEnvIf Origin (.*) AccessControlAllowOrigin=$1
           Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
           Header set Access-Control-Allow-Credentials true
    </IfModule>
            </Location>
    </VirtualHost>
    
    <VirtualHost *:82>
            RewriteEngine on
            RewriteCond %{HTTPS} on
            RewriteRule ^((?!/services).)*$ http://%{HTTP_HOST}%{REQUEST_URI}
            ServerAdmin root@localhost
            ProxyRequests off
            <Proxy *>
                    Order deny,allow
                    Allow from all
            </Proxy>
    ProxyPreserveHost On
            Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
            ProxyPass / balancer://mycluster1/ stickysession=ROUTEID
            <Proxy balancer://mycluster1>
                    Order deny,allow
                    Allow from all
                    BalancerMember http://10.236.75.101:9767/carbon route=UES1 loadfactor=100  timeout=600 Keepalive=On
            </Proxy>
            <Location /balancer-manager>
                    SetHandler balancer-manager
                    Order deny,allow
                    Allow from all
    <IfModule mod_headers.c>
           SetEnvIf Origin (.*) AccessControlAllowOrigin=$1
           Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
           Header set Access-Control-Allow-Credentials true
    </IfModule>
            </Location>
    </VirtualHost>
    

    httpd-ssl.conf中也需要类似的配置

    Virtualhost 应该有多个条目,例如:

    <VirtualHost *:446>
    
    .......
    
     ProxyPreserveHost On
            Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
            ProxyPass / balancer://mycluster1/ stickysession=ROUTEID
            <Proxy balancer://mycluster1>
                    Order deny,allow
                    Allow from all
                    BalancerMember http://10.236.75.101:9767/carbon route=UES1 loadfactor=100  timeout=600 Keepalive=On
            </Proxy>
            <Location /balancer-manager>
                    SetHandler balancer-manager
                    Order deny,allow
                    allow from all
                    SSLRequireSSL
            </Location>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2016-01-01
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多