apache配置文件
安装apache后,需要对配置文件进行自定义的设置,首先进入到Apache的安装目录,有4个常用文件夹:
bin:二进制文件存储文件夹,用于控制Apache服务,添加环境后,可直接使用命令
- ab:压力测试工具
- apachectl:控制apache启动,是一个脚本,实际调用httpd命令
- apxs:扩展模块工具
- htpasswd:建立认证文件,设置账号密码
- httpd:apache控制命令
- rotatelogs:日志轮询命令
conf:用于存储Apache服务的配置文件
- httpd.conf:主配置文件
- extra:辅助配置文件目录
- htdocs:默认站点存储目录,其中默认存在的index.html就是默认访问的页面
- logs:默认日志文件存储目录
主配置文件
在安装apache的时候复制了一份主配置文件,编辑httpd.conf
- 配置服务器的根目录路径:指示目录下能找到服务器相关文件
ServerRoot "根目录"
- 侦听端口:Listen,可以删除,在辅助文件中配置
- LoadModule…….so:代表安装的模块,根据需要开启
User daemon,Group daemon:运行的用户和组
- 此处建议修改运行用户和组为apache,否则之后的站点可能出现权限问题无法更新:
- 创建系统用户组apache:
groupadd -r apache
- 创建系统用户:
useradd -r -g apache -s /sbin/nologin -d /apache -M apache
- 更改目录所有者:
chown -R apache:apache /usr/local/apache
- 修改权限:
chmod 777 -R /usr/local/apache
- 网站管理员邮箱:ServerAdmin,可以删除,在辅助文件中配置
- 权限控制:Directory,可以删除,在辅助文件中配置
- 站点存放目录:DocumentRoot,可以删除,在辅助文件中配置
- 访问站点主界面:DirectoryIndex标签,默认index.html
辅助配置文件
httpd-vhosts.conf
此配置文件用于虚拟主机的设置。在主配置文件中,删除"Include conf/extra/httpd-vhosts.conf"前面的#,启用vhosts配置文件。当配置多个虚拟主机时,会对每一个虚拟主机进行判断是否符合ip、端口、ServerName或ServerAlias,并作出对应相应。
常见的虚拟主机模式:
- 基于 IP 的虚拟主机:例如同时支持ipv4和ipv6的情况,或者多网卡的情况下,web服务器监听多个ip的网口,来选择应答的虚拟主机
- 基于域名的虚拟主机:例如多个域名解析到同一个web服务器的情况下,根据访问域名的不同,来选择应答的虚拟主机
- 基于端口的虚拟主机:例如支持ssl的情况下,根据web服务器监听端口的不同,来选择应答的虚拟主机
常见配置:
- 配置侦听端口:添加
listen *:80
侦听服务器上所有可用的网络接口80端口的请求 - 配置http2:添加
Protocols h2 h2c http/1.1
,同时主配置文件开启mod_http2模块 配置目录访问权限:
<Directory "目录路径"> Options FollowSymLinks # 跟随符号链接,即遇到软链接`ln -s`则跟随到源文件,使用`Options SymLinksIfOwnerMatch`表示当符号链接与源文件所有者相同时才跟随 AllowOverride none # 是否应用.htaccess文件,如果需要文章固定链接,则要`AllowOverride all`打开 Require all denied # 访问控制: # - 允许所有访问请求:Require all granted # - 拒绝所有访问请求:Require all denied # - 只允许特定域名主机访问:Require host +域名 # - 允许或拒绝ip访问:Require ip/not ip +单个IP地址或IP段 </Directory>
配置虚拟主机:
<VirtualHost ipv4:80或[ipv6]:80或*:80> ServerName ip或域名 # 基于域名的虚拟主机就可以修改 ServerName 配置的域名策略 DocumentRoot "站点路径" ErrorLog "logs/error_log" # 记录服务器运行时的错误和诊断信息 CustomLog "logs/access_log" common # 记录客户端请求的详细信息,日志格式为common,在主配置文件中定义 </VirtualHost>
配置禁止ip访问网站:
<VirtualHost ipv4:80或[ipv6]:80或*:80> ServerName 域名 ServerAlias 对应ip地址 <Location /> Require all denied </Location> # 或禁止访问ip时对根目录的访问 RedirectPermanent / https://域名/ # 或301重定向 DocumentRoot /根目录到域名,主配置文件需开启rewrite模块 Redirect / https://域名/ # 或302重定向 DocumentRoot /根目录到域名,主配置文件需开启rewrite模块 </VirtualHost>
- 配置侦听端口:添加
httpd-mpm.conf
此配置文件用于并发控制,默认使用event模式。在主配置文件中,删除"Include conf/extra/httpd-mpm.conf"前面的#,启用mpm配置文件
常见的多进程模块:
- prefork模式:一个主进程创建多个子进程,一个子线程创建一个子线程
- worker模式:一个主进程创建多个子进程,一个子线程创建多个子线程
- event模式:在worker模式的基础上,引入事件处理机制
具体参数:
- ServerLimit:主服务能创建的最大子进程数量
- StartServers:主服务启动时创建的子进程数量
- MinSpareThreads和MaxSpareThreads:允许的最少和最多空闲子线程数量,不在此区间将产生或销毁
- ThreadsPerChild:独立子进程能创建的最大线程数量,为64的倍数
- MaxRequestWorkers:服务同时处理的最大请求数量,应小于
ServerLimit * ThreadsPerChild
- MaxConnectionsPerChild:子进程整个生命周期能处理的请求数量
http-ssl.conf
此配置文件用于https,启用安全访问。在主配置文件中,删除"#Include conf/extra/httpd-ssl.conf"前面的#,启用ssl配置文件,同时开启mod_ssl.so模块
- 配置域名解析:选择Cloudflare管理域名和网站,配置dns添加a记录,解析域名到主机ip。如果vps在中国大陆,则不建议配置,域名未备案会被封。
- 安装证书:在Cloudflare中进行证书的申请,复制相关内容并保存到vps,一个保存为fullchain.pem,作为SSLCertificateFile的路径;一个保存为privkey.pem,作为SSLCertificateKeyFile的路径
配置ssl文件:
- 配置侦听端口:添加
listen ipv4:443
或listen [ipv6]:443
- 配置http2:添加
Protocols h2 h2c http/1.1
,同时主配置文件开启mod_http2模块 配置SSL/TLS:
- 配置加密算法种类:
SSLCipherSuite HIGH:MEDIUM:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
和SSLProxyCipherSuite HIGH:MEDIUM:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
- 配置加密算法使用顺序:按管理员指定的加密算法顺序使用算法
SSLHonorCipherOrder off
- 配置凭据:允许服务器将加密会话数据保存在客户端
SSLSessionTickets on
- 配置支持的 SSL/TLS 协议版本:禁用所有旧的 SSL/TLS 协议版本,只允许使用 TLSv1.2 和 TLSv1.3 这两个协议版本进行安全通信
SSLProtocol -all +TLSv1.2 +TLSv1.3
和SSLProxyProtocol -all +TLSv1.2 +TLSv1.3
- 配置SSL缓存:
SSLSessionCache
一句,需要在主配置文件中开启mod_socache_shmcb模块
- 配置加密算法种类:
- 配置密钥和证书位置:添加上述密钥和证书的位置
SSLCertificateFile "fullchain.pem"
和SSLCertificateKeyFile "privkey.pem"
- 配置侦听端口:添加
- 开启https重定向,可以在Cloudflare中开启自动重写