任何关于如何简化我的httpd.conf文件的build议? 除了相关的部分,我已经剥离了一切:
Listen <ip-addr-1>:80 Listen <ip-addr-1>:443 <VirtualHost <ip-addr-1>:80> ServerName myservername.com <Proxy balancer://mycluster> BalancerMember http://172.22.22.20 BalancerMember http://172.22.22.21 </Proxy> ProxyPass /app1 balancer://mycluster/app1 ProxyPassReverse /app1 balancer://mycluster/app1 </VirtualHost> # Repeat for 443 <VirtualHost <ip-addr-1>:443> ServerName myservername.com SSLEngine On SSLCertificateFile conf/ssl/mycert.crt SSLCertificateKeyFile conf/ssl/mycert.key SSLCACertificateFile conf/ssl/intermediate.crt <Proxy balancer://mycluster> BalancerMember http://172.22.22.20 BalancerMember http://172.22.22.21 </Proxy> ProxyPass /app1 balancer://mycluster/app1 ProxyPassReverse /app1 balancer://mycluster/app1 </VirtualHost>
反正有没有重复80端口和443端口的所有内容,但打开ssl为443?
如果您担心可编辑性,可以使用include,只需将重复的部分移动到单独的文件中,比如说balancer.cfg ,然后Include balancer.cfg 。
如果你的目标是有一个单一的虚拟主机的定义,我认为这是不可能的。 如果你有多个端口说HTTP,你可以使用VirtualHost 10.1.2.3:* ,它将匹配每个端口,或使用像VirtualHost 10.1.2.3:80 10.1.2.3:81等列表。 但在这种情况下,我没有看到使用相同的定义同时提供HTTP和HTTPS的方式 – 只有一个可以匹配,看起来,所以匹配的应该包含完整的configuration。
Apache仅在IP地址(或通配符)和端口号的基础上select最佳匹配。 如果有多个相同的最佳匹配,则会select出现在configuration文件中的第一个VirtualHost。
我想我可以做得更好:
Listen 80 Listen 443 ServerName myservername.com ProxyPass /app1 balancer://mycluster/app1 ProxyPassReverse /app1 balancer://mycluster/app1 SSLCertificateFile conf/ssl/mycert.crt SSLCertificateKeyFile conf/ssl/mycert.key SSLCACertificateFile conf/ssl/intermediate.crt <Proxy balancer://mycluster> BalancerMember http://172.22.22.20 BalancerMember http://172.22.22.21 </Proxy> <VirtualHost *:80> </VirtualHost> # Repeat for 443 <VirtualHost *:443> SSLEngine On </VirtualHost>
我承认,我不知道*:80的VirtualHost指令是否可以完全省略,但基于Apache文档,这应该工作。