Apache httpd

来自百合仙子's Wiki
跳转到导航 跳转到搜索

配置

虚拟主机

<VirtualHost *:80>
  ServerName domain1
  ServerAlias *.domain1
  DocumentRoot /www/domain1
</VirtualHost>

星号是必须的,不然各种异常。配置之后,非虚拟主机部分的配置失效。

HTTP 授权

Alias /secret/ "/home/lilydjwg/secret/"
<Directory /home/lilydjwg/secret/>
	AuthType Basic
	AuthUserFile /home/lilydjwg/passwd/secret
	AuthName "Password Needed"
	Require valid-user
	AllowOverride AuthConfig
</Directory>

其中 AuthUserFile 可由htpasswd命令生成。

反向代理

示例如下:

<Location /service/>
    ProxyPass http://localhost:8000/service/
    ProxyPreserveHost On
</Location>

如果位于 <VirtualHost> 中,则必须指定路径:

<VirtualHost *.abc.com:80>
  ServerName www.abc.com
  ServerAlias *.abc.com
  ProxyPass / http://other_host/
  ProxyPreserveHost On
</VirtualHost>

使用 remoteip 模块改写远端地址。如针对 CloudFlare

<VirtualHost *:80>
  ...
  RemoteIPHeader Cf-Connecting-IP
  RemoteIPTrustedProxy 199.27.128.0/21 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/12
</VirtualHost>

设置变量

(根据条件)告诉 PHP 已经启用 HTTPS

SetEnv HTTPS on
SetEnvIf X-Forwared-Proto https HTTPS=on

访问控制

以下适用于 Apache 2.2[1],不适用于 2.4 版本。

只允许 CloudFlare 访问(IP数据于2014年12月3日更新,只包含 IPv4 部分):

<Location />
  Order Allow,Deny
  Allow from 199.27.128.0/21
  Allow from 173.245.48.0/20
  Allow from 103.21.244.0/22
  Allow from 103.22.200.0/22
  Allow from 103.31.4.0/22
  Allow from 141.101.64.0/18
  Allow from 108.162.192.0/18
  Allow from 190.93.240.0/20
  Allow from 188.114.96.0/20
  Allow from 197.234.240.0/22
  Allow from 198.41.128.0/17
  Allow from 162.158.0.0/15
  Allow from 104.16.0.0/12
</Location>

未能完成的功能

  • 默认虚拟主机
  • 在特定虚拟主机内,只允许 CloudFlare 的访问(mod_cloudflare 只能全局配置)

参见

外部链接

参考资料