一 、web服务的相关介绍
(一)、www简介
www是world wide web的缩写,也就是全球信息广播的意思。通常说的上网就是使用www来查询用户所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去。
(二)、网址及HTTP简介
web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的。
-
URL:Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
-
网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>
-
浏览器常支持的协议有:http、https、ftp等。
-
主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了。
-
端口号(port):http为80,https为443 (IANA:互联网数字分配机构
-
-
http请求方法:在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。具体请求方法如下表:
-
(三)、http协议请求的工作流程
(1)终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html (2)web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址 (3)web浏览器将端口号(默认是80)从访问地址(URL)中解析出来 (4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接 (5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文 (6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。 (7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。
二、基于以下要求搭建web服务器
(一)、前期准备工作
1、防火墙相关操作
[root@localhost ~]# systemctl restart firewalld.service #重启防火墙
[root@localhost ~]# systemctl status firewalld.service #检查防火墙是否开启#开启后将http/https两个协议添加到防火墙规则中
[root@localhost ~]# firewall-cmd --add-service=https --permanent
[root@localhost ~]# firewall-cmd --add-service=http --permanent
[root@localhost ~]# firewall-cmd --reload #新添加的信息后 重新加载防火墙,使信息生效
[root@server ~]# firewall-cmd --list-all #可以查看中所有防火墙规则的详细信息
2、开启selinux --[如不需要配置selinux,则这步和后面的标签匹配环节可以忽略],开启linux有两种方式
1.临时生效
[root@localhost ~]# setenforce 1 #1表示开始 0表示关闭
2.永久生效---------修改配置文件
[root@localhost ~]# vim /etc/selinux/config
改变策略之后需要重新启动;
如果由enforcing或permissive改成disabled,或由disabled改为其它两个,也必须要重新启动。
将selinux模式在enforcing和permissive之间切换的方法为:
setenforce 0 转换成permissive宽容模式
setenforce 1转换成enforcing强制模式
用firewall-cmd --list-all 可以查看中所有防火墙规则的详细信息,最终结果:
3、安装Web服务器软件nginx
[root@localhost ~]# yum install nginx -y
三、 配置实验
(一)实验1----搭建基于http协议的web服务器
1、编辑子配件文件
[root@localhost ~]# vim /etc/nginx/conf.d/openlab.conf,编辑内容如图所示
编辑完后 重启服务,使配置文件生效
[root@localhost ~]# systemctl restart nginx.service
2、基于配置文件的路径创建所需要的目录的文件
1.mkdir /www/openlab -pv #创建对应目录
2.echo www.openlab.com \!\!\! > /www/openlab/index.html #在自定义页面中写入内容
3、修改linux上的本地域名解析文件
通过vim /etc/hosts,在hosts文件中添加192.168.119.128 www.openlab.com 这条映射关系
4、由于开启了selinux,接下来需要判断进程标签和目标资源的标签是否是同一类别
ll /usr/share/nginx/html/ -Z #/usr/share/nginx/html 是默认的nginx网站根目录
#基于默认根目录下的文件标签 修改自定义目录下的文件标签
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /www/openlab/index.html
[root@localhost ~]# restorecon /www/openlab/index.html #进行回滚 使修改生效
[root@localhost ~]# ll /www/openlab/index.html -Z #查看自定义目录下的文件
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 19 1月 19 17:39 /www/openlab/index.html
具体操作如图所示:
#基于默认根目录下的index.html文件标签 修改自定义目录下的文件标签,这样服务进程就会和文件标签匹配成功匹配
5、进行测试,测试成功
(二)实验2 -----------在实验1的基础上创建三个子页面
1、子配置文件同实验一,监听的是本主机的80端口
[root@localhost ~]# vim /etc/nginx/conf.d/openlab.conf
2、在/www/openlab对应的目录下创建三个子文件
注意:由于开启selinux,需要修改文件标签, 若没有开启,则可以跳过修改标签这步
[root@localhost ~]# chcon -t httpd_sys_content_t /www -R
-R选项表示对/www下的所有文件的标签都进行修改
3、运行截图
(三)实验3
实验(1):
1、编辑配置文件
vim /etc/nginx/conf.d/openlab.conf,如下图所示,
编辑完成后重启服务:systemctl restart nginx
2、基于配置文件创建用户认证文件
htpasswd -c /etc/nginx/users song #-c 选项 指定创建用户认证文件users,并添加song用户
3、执行结果如图:(两个用户的密码都是123)
实验(2)----基于https进行访问
1、对之前的配置文件追加新的区域文件信息,如图
[root@localhost ~]# mkdir /www/money
[root@localhost ~]# echo this is money > /www/money/index.html#生成私钥文件
[root@localhost ~]# openssl genrsa -out /etc/pki/tls/private/openlab.key#基于私钥文件生成证书
[root@localhost ~]# openssl req -utf8 -new -key /etc/pki/tls/private/openlab.key -x509 -days 365 -out /etc/pki/tls/certs/openlab.crt#用https协议进行测试
[root@localhost ~]# curl https://www.openlab.com/money/ -k
如有个别问题,欢迎大家在评论区中指出!