简化 httpd.conf 文件

简化 httpd.conf 文件

关于如何简化我的 httpd.conf 文件有什么建议吗?我删除了除相关部分之外的所有内容:

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 的所有内容,而是为 443 启用 ssl?

答案1

如果您担心可编辑性,则可以使用包含 - 只需将重复的部分移动到单独的文件,balancer.cfg然后Include balancer.cfg

如果您的目标是拥有一个虚拟主机定义,我认为在这种情况下这是不可能的。如果您有多个使用 HTTP 的端口,您可以直接使用VirtualHost 10.1.2.3:*,它会匹配每个端口,或者使用类似等的列表VirtualHost 10.1.2.3:80 10.1.2.3:81。但在这种情况下,我没有看到使用相同定义同时提供 HTTP 和 HTTPS 的方法 - 似乎只有一个可以匹配,因此匹配的那个应该包含完整的配置。

Apache 仅根据 IP 地址(或通配符)和端口号选择最佳匹配。如果有多个相同的最佳匹配,则将选择配置文件中出现的第一个 VirtualHost。

http://httpd.apache.org/docs/current/vhosts/details.html

答案2

我认为我可以做得更好:

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 文档,这应该可以工作。

相关内容