基本配置文件

<VirtualHost _default_:80>
        DocumentRoot "/www/netdj"
        ServerName "www.netdj.net"
        DirectoryIndex netdj.html
 <Directory "/www/netdj">
  AllowOverride All
  Require all granted
 </Directory>

</VirtualHost>

错误总结:


1.检查防火墙
2.目录权限
3.是不是真的没有首页
4.查看阿帕奇版本,如果为2.4则需要添加对目录确认的代码,具体为什么不清楚,反正添加了通车
未填坑

别名目录

安装阿帕奇

yum install httpd

2.进入子配置文件

vim /etc/httpd/conf.d/autoindex.conf

#  配置文件
Alias /www/ "/home/www/"
<Directory "/home/www/">
    Options Indexes MultiViews FollowSymlinks
    AllowOverride None
    Require all granted
</Directory>

2.5 默认首页

DirectoryIndex netdj.html

3.重启阿帕奇

4.创建网站别名的真实目录

mkdir /home/wwws
chmod 755 /home/www/
403解决方法:
1.关闭selinux:setenforce 0
2. 关闭防火墙: systemctl restart firewalld
3.真实目录文件设置成755
无法访问问题
firewall-cmd --zone=public --add-port=80/tcp --permanent  #开放80端口
systemctl restart firewalld

Apache 的用户认证

1.开启功能

1.文件形式
<VirtualHost *:80>
ServerName www.lin.2018skills.com:80
DocumentRoot "/var/www/html"
<Directory /var/www/html>
        # 验证方式改为 Authconfig
        Allowoverride AuthConfig
        # 验证提示内容
        AuthName "内容"
        #认证类型,验证方式
        AuthType Basic
        #指定密码文件所在位置(需要手动添加)
        AuthUserFile /var/www/html/apache.passwd
         #设定需要认证的用户为“AuthUserFile”中定义的所有可用用户
        require valid-user
     </Directory>
</VirtualHost>
2.对接数据库
AuthName "mysql对接"
AuthType Basic

# 开关
AuthMYSQLEnable on
# 数据库用户名 & 密码
AuthMYSQLUser root
AuthMYSQLPassword 123
# 使用的数据库
AuthMYSQLDB zhanghan
# 使用的数据表
AuthMYSQLUserTable httpauth
# 表中的用户列名字 & 密码
AuthMYSQLNameField name
AuthMYSQLPasswordField pwd

Require valid-user

因本人所有实验环境都是RedHat7环境,所以阿帕奇版本是2.4.6,也因此没有 mod_auth_mysql这个组件,所以以上配置本人未测试过,仅供参考

2.建立密码文件,加入允许访问的用户。(此用户和系统用户无关)

htpasswd -c 存放路径/apache.passwd test1
#  -c 建立密码文件,只有添加第一个用户时,才用-c

htpasswd -m 存放路径/apache.passwd test2
#  -m 再添加更多用户时,使用-m 参数

注意: htpasswd 该命令是 httpd 的命令,需要绝对路径

3.重启阿帕鸡

若出现内部服务器错误,请查看AuthName是否存在,如果没有请加上

OpenSSL + 阿帕鸡

0.安装OpenSSL

不安装没有相关配置文件

yum install mod_ssl openssl

1.生成证书

a. openssl genrsa -out ca.key 1024
#建立服务器私钥,生成 RSA 密钥
b. openssl req -new -key ca.key -out atguigu.csr
#需要依次输入国家,地区,城市,组织,组织单位,Email 等信息。最重要的是有一个 common
name,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名吻合,否则会引发浏览器警报。生成的 csr 文件交给 CA 签名后形成服务端自己的证书
c. openssl x509 -req -days 365 -sha256 -in atguigu.csr -signkey ca.key -out atguigu.crt
#使用 CA 服务器签发证书,设置证书的有效期等信息
注意 1:生成完秘钥和证书文件后,将文件存放在 Apache 的安装目录下的 cert 目录下注意

2.修改配置文件

阿帕奇2.4版本开始好像就不需要修改第一步的东西
①调用 ssl 模块,并启用 ssl 独立配置文件

/etc/httpd/conf.modules.d/00-ssl.conf
LoadModule ssl_module modules/mod_ssl.so

/etc/httpd/conf/httpd.conf
 Include conf.modules.d/*.conf

②修改/etc/httpd/conf.d/ssl.conf 配置文件,调用证书等文件

vim /etc/httpd/conf.d/ssl.conf

#添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
#修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
#证书公钥配置(签字的)
SSLCertificateFile cert/atguigu.crt
#证书私钥配置
SSLCertificateKeyFile cert/ca.key

③修改主配置文件,添加虚拟主机

vim /etc/httpd/conf/httpd.conf

<VirtualHost _default_:443>
# DocumentRoot 目录位置要和 httpd.conf 里面的一致
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost:443
SSLCertificateFile 名称.crt
SSLCertificateKeyFile 名称.key
</VirtualHost>

④语法检查,重启阿帕鸡

apachectl -t
apachectl restart

⑤强制跳转443端口

rewriteengine on
rewritecond %{server_port} !^443$
rewriterule (.*) https://%{server_name}

记录日志

普通型(common)和复合型(combined)

<VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.test.com
    ErrorLog "logs/test.com_error_log"       CustomLog "logs/test.com_access_log" common
</VirtualHost>

监控阿帕鸡状态页面

往httpd.conf里面添加,访问地址:IP/zt
<location /zt>
         SetHandler server-status
         Allow from all
</location>

禁止IP访问

<VirtualHost *:80>
ServerName 192.168.10.112:80
redirect 500 /
</VirtualHost>

<VirtualHost *:80>
ServerName www.netdj.net:80
Documentroot "/www"
省略 ......
Last modification:February 10th, 2020 at 09:26 pm
如果觉得我的文章对你有用,请随意赞赏