【Linux】-学习笔记07

第四章、WEB服务器的部署及优化

1.用户常用关于web的信息

1.1什么是www

1.www是world wide web的缩写,及万维网,也就是全球信息广播的意思
2.通常说的上网就是使用www来查询用户所需要的信息。
3.www可以结合文字、图形、影像以及声音等多媒体,超链接的方式将信息以Internet传递到世界各处去。
4.当你连接www网站,该网站会提供一些数据,客户端要使用可以解析这些数据的软件来处理,那就是浏览器。

1.2网址

1.URI:Uniform Resource Identifier统一资源标识,分为URL和URN
2.URN:Uniform Resource Naming,统一资源命名,P2P下载使用的磁力链接是URN的一种实现
3.URL:Uniform Resorce Locator,统一资源定位符用于描述某服务器某特定资源位置
4.两者区别:而URL提供查找该事物的方法。URN仅用于命名,而不指定地址

1.3URL组成

URL组成机构如下:

<scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>

每部分的定义

scheme方案访问服务器以获取资源时要使用哪种协议
user用户某些方案访问资源时需要的用户名
password密码用户对应的密码,中间用:分隔
host主机资源宿主服务器的主机名或IP地址
port端口资源宿主服务器正在监听的端口号,很多方案有默认端口号
path路径服务器资源的本地名,由一个/将其与前面的URL组件分隔
params参数指定输入的参数,参数为名/值对,多个参数,用;分隔
query查询传递参数给程序,如数据库,用?分隔,多个查询用&分隔
frag片段一小片或一部分资源的名字,此组件在客户端使用,用#分隔

2.HTTP简介

2.1什么是HTTP

1.HTTP协议:全称为Hyper Text Transfer Protocol(超文本传输协议)
2.简单来说http就是从服务器传输超文本(html)到本地浏览器的传输协议
3.HTTP协议工作于B/S架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务端发送请求(Request)Web服务端根据接收到的请求数据后,向客户端发送响应信息(Response)

2.2http工作机制

1.一次http事务包括:
        http请求:http request
        http响应: http response

2.Web资源: web resource
一个网页由多个资源(文件)构成,打开一个页面,通常会有多个资源展示出来,但是每个资源都要单独请求。因此,一个"Web页面”通常并不是单个资源,而是一组资源的集合

资源类型:

        静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同
        常见文件后缀:.html,.txt,.jpg,.js,.css,mp3,avi
        动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同
        常见文件后缀:.php,jsp,asp

2.3HTTP访问请求完整过程

1.建立连接:
TCP的3次握手建立链接,向服务器发送http请求,服务器拒绝或允许。

2.接受请求
接受客户端请求报文对某个资源的一次请求过程web响应访问模型。

3.处理请求:
服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS。

4.访问资源:
服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源。

5.构建响应报文:
一旦Web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体
响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括:
描述了响应主体MIME类型的Content-Type首部
描述了响应主体长度的Content-Length
实际报文的主体内容
1)URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径
2)MIME类型:Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型
与资源管理起来。

6发送响应报文
Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接,有些是空闲的,有些在向服务器发送数据,还有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束。

2.4.http协议报文头部结构

求情报文由三部分组成即:开始行、首部行、实体主体
开始行:请求方法 url 版本 CRLF
首部行通常用键值表示
实体主题数据,一般在post动作中可以提看到
开始行中的请求方法:

方法描述
GET请求指定页面信息,并返回实体主体
HEAD类似get要求,只不过返回相应中没有主题内容,用户获取报头
POST向指定资源提交数据请求,数据包含在请求中,此请求可能会生成新的资源或修改已有资源
PUT从客户端向服务端传送数据取代指定的文档内容
DELETE请求服务器删除指定页面
CONNECTHTTP/1.1协议中预留给弄够将改为管道方式的代理服务器
OPTIONS允许客户端查看服务器的性能
TRACE回显服务器收到的请求,用于测试和诊断

求情报文由三部分组成即:开始行、首部行、实体主体
开始行:http版本 状态码 短语 CRLF
首部行通常用键值表示
实体主题数据,即获取内容

2.5状态代码

状态码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

状态码含义详解
1xx指示信息表示请求已接收,继续处理
2xx成功表示请求已被成功接收、理解、接受
3xx重定向要完成请求必须进行更进一步的操作
4xx客户端错误请求有语法错误或请求无法实现
5xx服务器端错误服务器未能实现合法的请求

常见状态代码、状态描述的说明如下:

状态码含义
200 OK客户端请求成功
400 Bad Request客户端请求有语法错误,不能被服务器所理解
401 Unauthorized这个状态代码必须和 WWW-Authenticate报头域一起
使用
403 Forbidden服务器收到请求,但是拒绝提供服务
404 Not Found请求资源不存在,举个例子:输入了错误的URL
500 Internal Server
Error
服务器发生不可预期的错误
503 Server Unavailable服务器当前不能处理客户端的请求,一段时间后可能恢复正常

3.web服务的配置详解

3.1web服务的常用种类

Apache
Nginx
openresty
大厂自研

3.2Nginx的安装

安装之前配置好软件仓库即可

dnf install nginx -y

3.3配置文件详解

主配置文件路径/etc/nginx

├── conf.d #子配置目录
│ ├── default.conf #子配置文件
├── fastcgi_params #fastcgi变量文件,用于识别php
├── mime.types #媒体类型文件
├── nginx.conf #主配置文件
├── scgi_params #scgi变量文件,用于识别perl
└── uwsgi_params #uwsgi变量文件,用于识别python

日志文件路径/etc/log/nginx

3.4nginx相关文件解释

nginx的全局配置

user nginx;                                #nginx程序运行用户
worker_processes auto;                     #开启work进程数量
error_log /var/log/nginx/error.log notice; #错误日志
pid /var/run/nginx.pid;                    #pid文件
events {
worker_connections 1024;                   #可接受最大连接数
}

http模块配置

http {
include /etc/nginx/mime.types;                      #可解析的静态资源类型
default_type application/octet-stream;              #用来配置Nginx响应前端请求默认的MIME类型
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;          #访问日志
sendfile on;                                        # Nginx服务器是否使用sendfile()传输文件
#tcp_nopush on;                                     # 当包累计到一定大小后就发送,默认0.2s一次
keepalive_timeout 65;                               # 长连接超时时间
#gzip on;                                           #可以使网站的css、js 、xml、html 等静态资                                                      源在传输时进行压缩
include /etc/nginx/conf.d/*.conf;                   #指定子配置文件
}

子配置文件

/etc/nginx/conf.d/default.conf
server {
listen 80;                                  #监听端口
server_name localhost;                      #服务器的名字
location / {
root /usr/share/nginx/html;                 #默认发布目录
index index.html index.htm;                 #默认发布文件
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;       #访问出错呈现错误页面
location = /50x.html {
root /usr/share/nginx/html;
}
}

3.5nginx的虚拟主机的配置

1.基于ip的虚拟主机的配置

首先建立两个文件夹

建立站点

添加两个ip地址

在/etc/nginx/conf.d下编写配置文件(基于ip地址的)

2.基于域名的

由于主机不知道域名,所以可以配置/etc/hosts

 访问

4.web服务器的访问控制

4.1基于ip的访问控制

范围小的放在前面

设置172.25.254.135可以访问

allow 172.25.254.135;
deny all;

修改配置文件nginx.conf

172.25.254.135可以访问

设置172.25.254.135不可以访问

deny 172.25.254.135;
allow all;

修改配置文件nginx.conf

172.25.254.135不能访问

4.2基于认证的访问控制

下载httpd-tools,下载之后配置

htpasswd -cm /etc/nginx/.htpasswd admin

修改配置文件nginx.conf

 此时访问的需要密码

5.web服务器的数据加密

  • HTTP协议以明文方式发送内容,不提供任何方式的数据加密,

  • HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等

  • 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。

  • HTTPS全称:Hyper Text Transfer Protocol over Secure Socket Layer ),是以安全为目标的HTTP通道

  • HTTPS并不是一个新协议,而是HTTP+SSL(TLS)

  • 原本HTTP先和TCP直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信相当于

    SSL被嵌在了HTTP和TCP之间

5.1部署https

mkdir /etc/nginx/certs -p           #创建一个目录用于存放证书相关文件
​
openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/nginx/certs/timinglee.org.key -x509 -days 365 -out /etc/nginx/certs/timinglee.org.crt     #使用 OpenSSL 工具生成一个自签名的 SSL 证书请求并创建一个有效期为 365 天的自签名证书

按照提示填入相关信息

配置nginx开启https功能

mkdri /nginx/virtual/timinglee.org/login/html/ -p
​
echo login.timinglee.org > /nginx/virtual/timinglee.org/login/html/index.html
                                                                       #创建index.html

 进入如下目录:

/etc/nginx/conf.d下创建https.conf

server{
  listen 443 ssl;
  server_name login.timinglee.org;
  root /nginx/virtual/timinglee.org/login/html;
  ssl_certificate "/etc/nginx/certs/timinglee.org.crt";
  ssl_certificate_key "/etc/nginx/certs/timinglee.org.key";
  ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers       HIGH:!aNULL:!MD5;
}

/etc/nginx/conf.d下修改vhosts.conf

利用从定向的办法来强制客户使用加密访问方式

server{
 listen 80;
 server_name login.timinglee.org;
 rewrite ^/(.*)$ https://login.timinglee.org/$1;
}
 ^/(.*)$                         #这时正则表达式语法表示匹配浏览器地址栏中的所有内容
$1 login.easylee.org/xxx        #这个地址转换时保留xxx
permanent                       #表示永久转换301

访问

5.2搭建动态网站

  • 动态网站指网站内容可根据不同情况动态变更的网站,一般情况下动态网站通过数据库进行架构。

  • 动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更多自动的和高级的功能。

  • 动态网页:使用网页脚本语言,比如php、JSP等,通过脚本将网站内容动态存储到数据库,用户访

    问网站是通过读取数据库来动态生成网页的方法

配置web服务器对php站点的支持

dnf install php -y   #下载php

nginx -s reload      #刷新

访问页面

http://172.25.254.135/index.php

 结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值