一、安装 apache
安装 apache 软件包:
yum install httpd
启动 apache 服务:
systemctl start httpd;systemctl enable httpd
查看监听端口:
netstat -antlupe | grep httpd
tcp6 0 0 :::80 ::? LISTEN 0 109623 4034/httpd
实验:
[root@node1 ~]# yum install httpd
[root@node1 ~]# systemctl start httpd
[root@node1 ~]# netstat -antlupe | grep httpd
tcp6 0 0 :::80 :::* LISTEN 0 39867 1391/httpd
[root@node1 ~]# systemctl stop firewalld
二、指定默认发布目录及文件
[root@node1 ~]# cd /var/www/html #默认发布目录
[root@node1 html]# ls
[root@node1 html]# vim index.html #默认发布文件
文件内容:
浏览器测试:
1、修改访问端口
默认端口是80,修改访问端口为8011
[root@node1 html]# vim /etc/httpd/conf/httpd.conf
[root@node1 html]# systemctl restart httpd
[root@node1 html]# systemctl restart httpd
[root@node1 html]# netstat -antlupe | grep httpd
tcp6 0 0 :::8011 :::* LISTEN 0 42108 1501/httpd
浏览器测试:
直接输入ip时默认端口为80,不能查看到内容,输入ip:8011时可以查看到内容
2、修改默认发布目录
[root@node1 html]# vim /etc/httpd/conf/httpd.conf
修改端口为80
[root@node1 html]# systemctl restart httpd
[root@node1 html]# mkdir /haha/html -p #建立目录/haha和之下的/html
[root@node1 html]# cd /haha/html
[root@node1 html]# vim index.html #编辑默认发布文件
文件内容如图:
[root@node1 html]# vim /etc/httpd/conf/httpd.conf #编辑发布文件
内容如下:
[root@node1 html]# systemctl restart httpd
在浏览器测试:
3、修改默认发布文件
[root@node1 html]# vim ying.html
文件内容如下:
[root@node1 html]# vim /etc/httpd/conf/httpd.conf #修改默认访问文件
文件内容如下:
[root@node1 html]# systemctl restart httpd
在浏览器测试:
4、添加发布目录及文件
[root@node1 html]# mkdir linux/
[root@node1 html]# ls
index.html linux ying.html
[root@node1 html]# cd linux
[root@node1 linux]# vim index.html
文件内容如下:
[root@node1 linux]# vim /etc/httpd/conf/httpd.conf #将/haha/html下的目录/linux也设置为可访问的目录以及里面的文件
文件内容如下:
[root@node1 linux]# systemctl restart httpd
浏览器测试:
三、访问控制
[root@node1 ~]# systemctl start httpd
[root@node1 ~]# systemctl stop firewalld
1、基于ip的访问控制
[root@node1 ~]# cd /var/www/html
[root@node1 html]# ls
index.html
[root@node1 html]# mkdir haha
[root@node1 html]# cd haha/
[root@node1 haha]# vim index.html
文件内容如下:
[root@node1 haha]# vim /etc/httpd/conf/httpd.conf
内容解释:先访问禁止ip再访问允许名单,Deny from All 表示禁止所有访问,Allow from 172.25.254.169 表示172.25.254.169在白名单里面可以访问
[root@node1 ~]# systemctl restart httpd
在浏览器测试:
2、基于用户的访问控制
[root@node1 ~]# cd /etc/httpd
[root@node1 httpd]# ls
conf conf.d conf.modules.d logs modules run
[root@node1 httpd]# htpasswd -cm apacheuser user1 #创建apache用户user1,c表示建立文件,m表示建立,当文件apacheuser存在时不可以加 -c ,因为新建立的会覆盖文件的内容
New password:
Re-type new password:
Adding password for user user1
[root@node1 httpd]# htpasswd -m apacheuser user2
New password:
Re-type new password:
Adding password for user user2
[root@node1 httpd]# cat apacheuser
user1:$apr1$ve/yuYgI$dFmjxH125uUfO/8jl47Pr.
user2:$apr1$tVxiI7Nx$rNlcH8bWF43zySCfGLfw10
[root@node1 httpd]# vim /etc/httpd/conf/httpd.conf
文件内容如下:
文件中如果添加 Require valid-user 代表允许文件apahceuser中的所有用户访问
[root@node1 httpd]# systemctl restart httpd
在浏览器测试,输入ip时会跳出用户登录页面:
输入用户名及密码,user1可以访问,user2禁止访问:
四、apache 的虚拟主机
[root@node1 ~]# cd /etc/httpd
[root@node1 httpd]# ls
apacheuser conf conf.d conf.modules.d logs modules run
[root@node1 httpd]# cd conf.d
[root@node1 conf.d]# vim default.conf #default表示没有指定
文件内容如下:
[root@node1 conf.d]# mkdir /var/www/virtual/haha.com/news -p #建立属于news的专属文件
[root@node1 conf.d]# mkdir /var/www/virtual/haha.com/music -p #建立属于music的专属文件
[root@node1 conf.d]# vim /var/www/virtual/haha.com/news/index.html #编辑news的默认访问文件
文件内容如下:
[root@node1 conf.d]# vim /var/www/virtual/haha.com/music/index.html #编辑news的默认访问文件
文件内容如下:
[root@node1 conf.d]# vim news.conf #编辑news的配置文件
文件内容如下:
[root@node1 conf.d]# vim music.conf #编辑music的配置文件
文件内容如下:
[root@node1 conf.d]# systemctl restart httpd
在客户端测试:
[root@node2 ~]# vim /etc/hosts
添加内容如下:
打开客户端浏览器测试,浏览器输入网址对应内容不同:
五、自定义自签名证书
如果加密的通信非常重要,而经过验证的身份不重要,管理员可以通过生成 self-signed certificate 来避免与认证机构进行交互所带来的复杂性。
使用 genkey 实用程序(通过 crypto-utils 软件包分发),生成自签名证书及其关联的私钥。为了简化起见,genkey 将在“正确”的位置( etc/pki/tls 目录)创建证书及其关联的密钥。相应地,必须以授权用户(root)身份运行该实用程序。
[root@node1 ~]# yum install mod_ssl -y
[root@node1 ~]# yum install crypto-utils -y
[root@node1 ~]# cd /etc/httpd/conf.d/
[root@node1 conf.d]# genkey www.haha.com #执行完该命令,会跳转到如下页面,手动生成证书秘钥
生成密钥时不选CA认证:
填写证书内容:
output will be written to /etc/pki/tls/certs/www.haha.com.crt
output key written to /etc/pki/tls/private/www.haha.com.key
#图形配置完毕后,终端会显示内容有这两行内容,分别是秘钥和证书
[root@node1 conf.d]# vim /etc/httpd/conf.d/ssl.conf #修改文件中的秘钥及证书
[root@node1 conf.d]# systemctl restart httpd
浏览器测试:
输入https://www.haha.com显示如下页面:
注意:
当密钥生成错误时,进入目录/etc/pki/tls/serts删除证书,然后进入目录cd …/private/删除密钥,重新生成密钥后还是不能下载证书则进行Edit–>Advanced–>View…–>删除本机证书后即可下载。
六、网页重写
[root@node1 ~]# cd /etc/httpd
[root@node1 httpd]# ls
apacheuser conf conf.d conf.modules.d logs modules run
[root@node1 httpd]# cd conf.d
[root@node1 conf.d]# ls
autoindex.conf music.conf README ssl.conf.rpmsave userdir.conf
default.conf news.conf ssl.conf tmprequest welcome.conf
[root@node1 conf.d]# cp news.conf login.conf
[root@node1 conf.d]# vim login.conf
文件内容如下(443虚拟主机):
其中^(/.*)$ 客户主机在浏览器写入的字符。%{HTTP_HOST}$1 客户主机在浏览器里面写入的内容去掉http:以外的内容。[redirect=301] 表示临时转换,只有在访问的时侯转换。
[root@node1 conf.d]# mkdir -p /var/www/virtual/haha.com/login/
[root@node1 conf.d]# vim /var/www/virtual/haha.com/login/index.html
文件内容如下:
[root@node1 conf.d]# systemctl restart httpd
在客户主机测试:
[root@node2 ~]# vim /etc/hosts
添加内容如下:
在客户主机浏览器输入login.haha.com直接会跳转成https://www.haha.com,会显示如下页面,接下来的步骤和上文自签名证书中下载证书的步骤一样
下载完证书即可看到访问文件的内容
七、php语言支持
[root@node1 ~]# cd /var/www/html
[root@node1 html]# yum install php -y #下载php
[root@node1 html]# vim index.php #编写默认访问文件
文件内容如下:
[root@node1 html]# vim /etc/httpd/conf/httpd.conf #修改默认首先访问index.php
文件内容如下:
[root@node1 html]# systemctl restart httpd
在浏览器测试,可以看到php页面:
八、CGI
通用网关接口(CGI)是网站上放置动态内容的最筒单的方法。CGI 脚本可用于许多目的,但是谨慎控制使用哪个 CGI 脚本以及允许谁添加和运行这些脚本十分重要。编写质量差的 CGI 脚本可能为外部攻击者提供了破坏网站及其内容安全性的途径。困此,在 Web 服务器级别和 SELinux 策略级别,都存在用于限制 CGI 脚本使用的设置
[root@node1 ~]# cd /var/www/html
[root@node1 html]# ls
cgi haha index.html index.php
[root@node1 html]# vim cgi/index.cgi
文件内容如下:
[root@node1 html]# chmod +x cgi/index.cgi #加可执行权限
[root@node1 html]# ./cgi/index.cgi #该默认访问文件是打印此刻时间
Content-type: text/html
Wed May 30 09:26:44 EDT 2018
[root@node1 html]# vim /etc/httpd/conf.d/default.conf
文件内容如下:
[root@node1 html]# systemctl restart httpd
在浏览器测试:
九、正向代理
代理主机(可上网主机):
[root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 #添加网关、dns
文件添加内容如下:
[root@node1 ~]# systemctl restart network
[root@node1 ~]# yum install squid -y
[root@node1 ~]# vim /etc/squid/squid.conf
文件内容如下:
3128端口是Squid HTTP代理服务器的默认端口。
[root@node1 ~]# systemctl restart squid
[root@node1 ~]# ping 172.25.254.69 #可以ping通172.25.254.69
PING 172.25.254.69 (172.25.254.69) 56(84) bytes of data.
64 bytes from 172.25.254.69: icmp_seq=1 ttl=64 time=0.059 ms
64 bytes from 172.25.254.69: icmp_seq=2 ttl=64 time=0.142 ms
^C
--- 172.25.254.69 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.059/0.100/0.142/0.042 ms
[root@node1 ~]# ping www.baidu.com #可以ping通百度
PING www.a.shifen.com (183.232.231.173) 56(84) bytes of data.
64 bytes from 183.232.231.173: icmp_seq=1 ttl=51 time=67.5 ms
64 bytes from 183.232.231.173: icmp_seq=2 ttl=51 time=82.5 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 2 received, 33% packet loss, time 2002ms
rtt min/avg/max/mdev = 67.520/75.048/82.576/7.528 ms
在客户主机浏览器测试:
打开浏览器打开Preferences显示如下页面:
设置完访问代理后访问网页,是可以访问的,在这里以访问百度为例
##十、反向代理
主机apache:
[root@node1 ~]# yum install httpd
[root@node1 ~]# systemctl start httpd
主机squid:
[root@localhost ~]# yum install squid
[root@localhost ~]# vim /etc/squid/squid.conf
文件内容如下:
文中60行内容表示当访问80端口时从172.25.254.169这个主机缓存东西,0代表没有候补端口,proxy-only表示仅允许缓存
客户主机:
在浏览器访问squid主机和apache主机,显示内容一样,则表示反向代理配置完成