目录
Apache的作用
在web被访问时通常使用http://的方式
http:// ##超文本传输协议
提供http://超文本传输协议的软件:Apache、nginx、stgw、jfe、Tengine
Apache的安装
dnf install httpd.x86_64 -y
Apache的启用
systemctl enable --now httpd ##开启服务并设定服务位开机启动 firewall-cmd --list-all ##查看火墙信息 firewall-cmd --permanent --add-service=http ##在火墙中永久开启http访问 firewall-cmd --permanent --add-service=https ##在火墙中永久开启https访问 firewall-cmd --reload ##刷新火墙使设定生效
![]()
Apache的基本信息
服务名称:httpd
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
默认发布目录:/var/www/html
默认发布文件:index.html
默认端口:
80 http 443 https 用户:apache
日志:/etc/httpd/logs
- 检测Apache服务是否正常:
——正常。
Apache的基本配置
1、Apache端口修改
vim /etc/httpd/conf/httpd.conf ##修改配置文件 ***************************** listen 6666 ***************************** firewall-cmd --permanent --add-port=6666/tcp ##添加端口 firewall-cmd --reload semanage port -l | grep http ##过滤http服务端口 semanage port -a -t http_port_t -p tcp 6666 ##http服务添加端口 systemctl restart httpd ##重启成功未报错 firefox 172.25.254.20:6666 ##用于测试
——配置文件中修改内容。
2、默认发布文件
vim /etc/httpd/conf/httpd.conf ****************************** DirectoryIndex westos.html index.html ****************************** systemctl restart httpd
——配置文件中修改内容。
![]()
3、默认发布目录
vim /etc/httpd/conf/httpd.conf ******************************** DocumentRoot "/westos/html" <Directory "/westos/html"> Require all granted </Directory> ******************************* semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?' ##修改安全上下文 restorecon -RvvF /westos/ systemctl restart httpd
——配置文件中修改内容。
![]()
Apache的访问控制
实验素材
mkdir /var/www/html/westos vim /var/www/html/westos/index.html ********************************* westosdir`s page *********************************
——配置文件中修改内容。
1、基于客户端ip的访问控制
## ip白名单 ## <Directory "/var/www/html/westos"> Order Deny,Allow Allow from 172.25.254.20 Deny from All </Directory> ## ip黑名单 ## <Directory "/var/www/html/westos"> Order Allow,Deny Allow from All Deny from 172.25.254.10 </Directory>
2、基于用户认证
vim /etc/httpd/conf/httpd.conf ********************************** <Directory "/var/www/html/westos"> AuthUserfile /etc/httpd/htpasswdfile ##指定认证文件 AuthName "Please input your name and password" ##认证提示语 AuthType basic ##认证类型 Require user admin ##允许通过的认证用户 2选1 Require valid-user ##允许所有用户通过认证 2选1 </Directory> *********************************** htpasswd -cm /etc/httpd/htpasswdfile admin ##生成认证文件
注意:
当/etc/httpd/htpasswdfile存在那么在添加用户时不要加-c参数否则会覆盖源文件内容
Apache的虚拟主机
mkdir -p /var/www/westos.com/{news,wenku} echo "wenku's page" > /var/www/westos.com/wenku/index.html echo "news's page" > /var/www/westos.com/news/index.html echo "default's page" > /var/www/html/index.html vim /etc/httpd/Vhost.conf ************************************************ <VirtualHost _default_:80> DocumentRoot "/var/www/html" CustomLog logs/default.log combined </VirtualHost> <VirtualHost *:80> ServerName wenku.westos.com DocumentRoot "/var/www/westos.com/wenku" CustomLog logs/wenku.log combined </VirtualHost> <VirtualHost *:80> ServerName news.westos.com DocumentRoot "/var/www/westos.com/news" CustomLog logs/news.log combined </VirtualHost> *************************************************
测试:
在浏览器所在主机中vim /etc/hosts ************************************* 192.168.0.11 www.westos.com wenku.westos.com news.westos.com *************************************
firefox http://www.westos.com / http://wenku.westos.com / http://news.westos.com
Apache的语言支持
1、php
vim /var/www/html/index.php ******************************* <?php phpinfo(); ?> ******************************* dnf install php -y systemctl restart httpd
测试: firefox http://192.168.0.11/index.php
2、cgi
mkdir /var/www/html/cgidir vim /var/www/html/cgidir/index.cgi ****************************************** #!/usr/bin/perl print "Content-type: text/html\n\n"; print `date`; ****************************************** vim /etc/httpd/conf.d/vhost.conf ****************************************** <Directory "/var/www/html/cgidir"> Options +ExecCGI AddHandler cgi-script .cgi </Directory> ******************************************
测试: firefox http://192.168.0.11/cgidir/index.cgi
Apache的加密访问
1、安装加密插件
dnf install mod_ssl -y
2、生成证书
******** 生成私钥 **************** openssl genrsa -out /etc/pki/tls/private/www.westos.com.key 2048 ******** 生成证书签名文件 ************** openssl req -new -key /etc/pki/tls/private/www.westos.com.key -out /etc/pki/tls/certs/ www.westos.com.csr ******** 生成证书 *************** openssl x509 -req -days 365 -in /etc/pki/tls/certs/www.westos.com.csr \ -signkey /etc/pki/tls/private/www.westos.com.key \ -out /etc/pki/tls/certs/www.westos.com.crt ## x509 证书格式 ## -req 请求 ## -in 加载签证名称 ## -signkey /etc/pki/tls/private/www.westos.com.key vim /etc/httpd/conf.d/vhost.conf *********************************************** <VirtualHost *:80> ServerName login.westos.com RewriteEngine on ##^(/.*)$ ##客户地址栏中输入的地址 RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 ##%{HTTP_HOST} ##客户主机 </VirtualHost> ##$1 ##RewriteRule后面跟的第一串字符的值 <VirtualHost *:443> ServerName login.westos.com DocumentRoot "/www/westos.com/login" CustomLog logs/login.log combined SSLEngine on SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key </VirtualHost> ************************************************ systemctl restart httpd
Squid+Apache
1、squid 正向代理
实验环境:
- 单网卡主机设定ip不能上网;
- 双网卡主机设定ip1可以连接单网卡主机,设定ip2可以上网
实验效果:
让单网卡主机不能上网但浏览器可以访问互联网页实验操作:
在双网卡主机中 dnf install squid -y vim /etc/squid/squid.conf ************************************ 59 http_access allow all 65 cache_dir ufs /var/spool/squid 100 16 256 ************************************ systemctl restart squid firewall-cmd --permanent --add-port=3128/tcp firewall-cmd --reload 在单网卡主机中选择 NetWork Proxy 172.25.254.13 3128
测试:
在单网卡主机中,ping www.baidu.com 不通
在浏览器中访问www.baidu.com可以2、squid反向代理
实验环境:
- 192.168.0.11 ##Apache服务器
- 192.168.0.12 ##squid,没有数据负责缓存
实验操作:
vim /etc/squid/squid.conf ************************************************ http_port 80 vhost vport ##vhost 支持虚拟域名 vport 支持虚拟端口 ##当192.168.0.12的80端口被访问会从192.168.0.11的80端口缓存数据 cache_peer 192.168.0.11 parent 80 0 proxy-only ************************************************ systemctl restart squid
测试: firefox http://192.168.0.12访问看到的时192.168.0.11上的数据
ending.......