一,web服务器简介
(1)什么是www
www是world wide web的缩写,也就是全球信息广播的意思。通常说的上网就是使用www来查询用户 所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方 式将信息以Internet传递到世界各处去。
- www所用的协议: 浏览器怎样向web服务器请求数据以及服务器怎样把文档传送给浏览器呢?这就是 由http协议来定义的,(Hyper Text Transport Protocol,HTTP,超文本传输协议)。
- www服务器需要提供可让客户端浏览的平台。目前最主流的Web服务器是Apache、Microsoft的 Internet信息服务器(Internet Information Services,IIS)和unix nginx。
- 服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML)、多媒体 文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓 的标记来规范所要显示的数据格式。
- 客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。那 么著名的浏览器就有内建在Windows操作系统内的IE浏览器了,还有Firefox浏览器和Google的 chrome浏览器。
(2)网址及HTTP简介
web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在 某个特殊的目录下面,这个目录就是我们整个网站的首页,在nginx中,这个目录默认 在/usr/share/nginx/html/。
状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
(3)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服务器基本配置
[root@localhost ~]# dnf install nginx -y[root@localhost ~]# nginx -v[root@localhost ~]# nginx -V[root@localhost ~]# rpm -ql nginx[root@localhost httpd]# tree /etc/nginx[root@localhost ~]# tree /etc/nginx//etc/nginx/├── conf.d #子配置文件目录
├── default.d
├── fastcgi.conf├── fastcgi.conf.default├── fastcgi_params #用以翻译nginx的变量供php识别
├── fastcgi_params.default├── koi-utf├── koi-win├── mime.types #用以配置支持的媒体文件类型
├── mime.types.default├── nginx.conf #主配置文件
├── nginx.conf.default├── scgi_params├── scgi_params.default├── uwsgi_params #用以配置nginx的变量供python识别
├── uwsgi_params.default└── win-utf[root@localhost ~]# tree /usr/share/nginx/html/ #默认的nginx网站根目录
[root@localhost ~]# tree /var/log/nginx/ #nginx的日志文件所在目录
三,搭建静态网站——基于https协议的静态网站
(1)https简介
HTTP协议以明文方式发送 内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可 以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决 HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道。HTTPS并不是一个新协议, 而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变 成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。
(2)https协议加密所使用的算法
HASH是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就 是散列值。Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段 特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的 密码存储、信息完整性校验等。
常见的HASH算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、 HMACSHA1。
(3)HTTPS的安全通信工作流程可大致分为三个阶段:
- 认证服务器
- 协商会话密钥
- 加密通讯
(4)https网站配置
#https功能由ngx_http_ssl_module模块提供
[rootlocalhost ~]# nmcli connection modify ens33 +ipv4.addresses
192.168.168.156/24[root@localhost ~]# nmcli connection up ens33[root@localhost ~]# mkdir -pv /www/https/[root@localhost ~]# echo https > /www/https/index.html[root@localhost conf.d]# cd /etc/pki/tls/certs/#key是私钥文件
[root@localhost certs]# openssl genrsa -out https.key#crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持
有人的公钥,以及签署者的签名等信息
[root@localhost certs]# openssl req -utf8 -new -key https.key -x509 -days
100 -out https.crt[[root@localhost ~]# cat /etc/nginx/conf.d/test_https.confserver {# listen 80;listen 192.168.168.156:443 ssl;root /www/https;ssl_certificate /etc/pki/tls/certs/https.crt;ssl_certificate_key /etc/pki/tls/certs/https.key;location / {}}[root@localhost ~]# systemctl restart nginx[root@localhost ~]# curl --insecure https://192.168.168.156https[root@localhost ~]# curl -k https://192.168.168.156https
(4) 搭建动态网站配置
[root@localhost nginx]# nmcli connection modify ens33 +ipv4.addresses
192.168.168.157/24[root@localhost nginx]# nmcli connection up ens33[root@localhost ~]# dnf install php php-fpm -y[root@localhost ~]# systemctl restart nginx php-fpm[root@ntp-server ~]# echo "<?php phpinfo(); ?>" >
/usr/share/nginx/html/index.php#使用浏览器访问