apache功能详解
1、配置文件
RerverRoot 主目录
Listen 监听端口
LoadModule 动态模块
<IFModule 模块名>
</IFModule> 对模块进行配置
ServerAdmin 管理员邮箱
ServerName 服务器域名
<Directory 目录路径>
</Directory> 对目录进行配置
Options 目录选项
Indexes 当没有主页面时,是否列出目录内容
FollowSymLinks 是否允许首页文件为软连接文件
allowoverride 是否启用.htaccess权限文件(只对directory声明的目录生效)
all 启用
none 不启用
vim .htaccess .htaccess权限文件必须放在directory声明的目录下
authname 提示信息
authtype 认证类型
authuserfile 用户名密码文件
require valid-user 授权
htpasswd -[c|m] [authuserfile声明的用户名密码文件] [用户名] 创建用户(密文)-c是创建,-m是添加
require all granted 允许所有人访问
require all denied 拒绝所有人访问
允许个别,拒绝所有
<requireall>
require all granted
require not ip地址
</requireall>
拒绝个别,允许所有
<requireall>
require all granted
require ip ip地址
</requireall>
DocumentRoot 指定网站首页文件及应用位置
DirectoryIndex 默认打开的首页文件
</Files> 文件配置区域
ErrorLog 错误日志
LogLevel 要记录的日志级别
LogFormat 日志记录格式
CustomLog 访问日志
ScriptAlias 别名文件
TypesConfig 后缀名解析文件。如果后面跟的文件里没有要解析的后缀名,需要手动添加AddType application/x-[文件类型] [扩展名]
Include 额外的配置文件,如果想启用某个配置文件,就去掉注释。
Include etc/extra/proxy-html.conf 启用代理的模板配置文件
SSLRandomSeed 加密模块要用到的配置
2、目录别名
Alisa "/别名目录" "/实际目录"
对实际目录给权限
<directory "/usr/local/apache2/htdocs/a/b/c">
options indexes followsymlinks
allowoverride none
require all granted
</directory>
3、虚拟主机
a、基于IP地址
<VirtualHost *:80> 将*改成要监听的地址
b、基于端口
Listen 声明监听的端口
<VirtualHost *:80> 将80改成要监听的端口
c、基于域名
Include etc//extra/httpd-vhosts.conf 主配置文件打开虚拟主机加载文件选项
创建首页网站目录及首页文件
mkdir /var/web/www /var/web/jd
创建首页文件
配置虚机主机
<VirtualHost *:80> *表示监听服务器上的所有IP
DocumentRoot "/var/web/baidu" 网站根目录
ServerName www.baidu.com 域名
<directory "/var/web/baidu"> 给网站目录赋权限
options indexes followsymlinks
allowoverride none
require all granted
</directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/web/jd"
ServerName www.jd.com
<directory "/var/web/jd">
options indexes followsymlinks
allowoverride none
require all granted
</directory>
</VirtualHost>
注:RPM安装的网站服务器,配置虚拟主机时,必须要开启NameVirtualHost *:80选项
4、个人主页
Include etc/extra/httpd-userdir.conf 主配置文件启用个人主页配置文件
编辑个人主页配置文件(默认不用修改,主要是确认主页名)
UserDir public_html 主页目录名
<Directory "/home/*/public_html"> 权限设置
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
创建主页存放目录及个人主页
mkdir /home/zhangsan/public_html /home/lisi/public_html 需要跟配置文件的主页目录名一致
chmod o+x /home/zhangsan/ /home/lisi/ 对家目录给执行权限,确保daemon用户能进去。
LoadModule userdir_module modules/mod_userdir.so 主配置文件打开userdir动态模块
动态库:
--enable-so
启用DSO(动态共享目标,就是动态模块)支持的核心模块
apache运行时加载模块扩展功能。
静态:
启动时就已经加载,可随时使用<IFmodule>
动态:
启动时不加载,而是提供.so文件。使用loadmodule选项加载并配置
5、地址重定向
www.360buy.com ---> www.jd.com
a、添加rewrite模块
LoadModule rewrite_module modules/mod_rewrite.so 主配置文件打开模块
b、虚拟主机目录选项开启使用权限文件
allowoverride all
c、在主目录增加权限文件
vim .htaccess 写在需要重定向的网站下。
rewriteengine on 开启重定向引擎
rewritecond %{HTTP_HOST} www.360buy.com 将老域名赋值到变量
rewriterule .* http://www.jd.com 定义规则将所有定向到新域名
6、HTTPS
网站服务端:
安装加密相关的模块
yum install -y mod_ssl openssl openssl-devel
重新编译安装apache,加上--enable-ssl选项
./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc/ --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite --enable-ssl
mkdir /usr/local/apache2/ssl 创建一个证书存放目录
(umask 077;openssl genrsa 1024 > httpd.key) 在目录下生成密钥文件
openssl req -new -key httpd.key -out httpd.crq 用密钥文件生成证书申请文件
将证书申请文件交给CA服务器。
scp httpd.crq 10.244.16.22:/tmp
收到CA证书之后的配置
Include etc/extra/httpd-ssl.conf 启用加密配置文件
编辑扩展文件vim etc/extra/httpd-ssl
Listen 443
<VirtualHost 10.244.16.21:443>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName www.jd.com:443
SSLCertificateFile "/usr/local/apache2/ssl/httpd.crt"
SSLCertificateKeyFile "/usr/local/apache2/ssl/httpd.key"
...
</VirtualHost>
主配置文件打开一个加密模块LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
主配置文件手动写入一个模块 LoadModule ssl_module modules/mod_ssl.so
/usr/local/apache2/bin/apachectl -t 检查语法错误
CA服务器端:
cd /etc/pki/CA/ 进入CA目录
(umask 077;openssl genrsa -out private/cakey.pem 2048)
设置反掩码077;openssl用genrsa算法在private子目录生成一个cakey.pem文件,大小2048
vim /etc/pki/tls/openssl.cnf 编辑证书模板配置文件
countryName_default = CN 默认国家名称
stateOrProvinceName_default = HN 默认省份名称
localityName_default = ZZ 默认城市名称
0.organizationName_default = FZDZ 默认公司名称
organizationalUnitName_default = CLOUD 默认组织名称
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655 加密文件写的时相对路径所以需要在CA目录下执行
-new生成一个新的文件;-x509格式;-key后跟加密文件; -out后跟生成的证书文件名; -days后跟证书有效期
准备:
touch index.txt 在CA目录里创建index.txt,用来记录颁发过的证书(默认不存在需要创建)。
echo "01" >> serial 表示起始从01开始,以后每颁发一个证书,在后面追加一个
颁发证书:
openssl ca -in /tmp/httpd.crq -out /tmp/httpd.crt -days 3655
-in输入证书请求文件;-out输出一个证书文件; -days后跟证书有效期
将证书交给网站服务器
scp /tmp/httpd.crt 10.244.16.21:/usr/local/apache2/ssl
注:CA证书的请求文件一定要和CA证书上的填写的一致