web基本概念和常识
概念
web:为用户提供的一种在互联网上浏览信息的服务,是动态的、可交互的、跨平台的和图形化的;
为用户提供各种互联网服务,这些服务包括浏览服务以及各种交互式服务,包括聊天、购物等;
web应用:网站(广义上的PC,手机app)
浏览器:也称用户代理,web客户端,主要有IE、Edge等
web服务器:也称HTTP服务器,主要有 Nginx、Apache、Tomcat
网站基础
1、域名
是一个IP地址的”面具“,目的是便于记忆和访问一个或一组服务器的地址。
2、域名解析
本地HOSTS解析
DNS服务器解析
3、网站的基本概念
网站、网页、主页;
HTTP、URL、HTML、超链接
4、web网站
web1.0(以编辑为特征)
web2.0(侧重用户交互)
5、静态页面的差别
URL不同
后缀不同
内容不同
6、域名格式
http://(协议头)www.bing.com(域名)/(URI资源:路径/⽂ 件名)
http协议
是超文本传输协议的缩写,是从web服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
HTTP原理
是⼀个基于TCP/IP通信协议来传递数据的协议,传输的数 据类型为HTML ⽂件,图⽚⽂件,查询结果等;
HTTP协议⼀般⽤于B/S架构。浏览器作为HTTP客户端通过URL 向HTTP服务端即web服务器发送所有请求,web服务器收到客 户端请求后进⾏响应
HTTP 特点
⽀持客户端/服务端模式
简单快速、灵活:HTTP 允许传输任意类型的数据对象
⽆连接:限制每次连接只处理⼀个请求
⽆状态:指协议对于事务处理没有记忆,后续处理需要 前⾯的信息,则必须重传
HTTP 报⽂格式
⼀个完整的http访问包含请求(request)和响应(response)
HTTP协议缺点
不会保存状态信息;
HTTP使⽤明⽂传播,有三⼤⻛险
(1)窃听⻛险(eavesdropping):第三⽅可以获知通信内容。
(2)篡改⻛险(tampering):第三⽅可以修改通信内容。
(3)冒充⻛险(pretending):第三⽅可以冒充他⼈身份参与通 信。
SSL/TLS协议是为了解决这三⼤⻛险⽽设计的,希望达到:
(1)所有信息都是加密传播,第三⽅⽆法窃听。
(2)具有校验机制,⼀旦被篡改,通信双⽅会⽴刻发现。
(3)配备身份证书,防⽌⽌身份被冒充
HTTPS 安全通信的四⼤原则
(1)机密性
(2)完整性
(3)身份认证
(4)不可否认性
apache服务
最早的web服务程序,基于http协议提供网页浏览服务
特点
模块化设置、开放源代码、跨平台应⽤、⽀持多种 web 编程语 ⾔、运⾏稳定
搭建apache服务器
root@server2 ~]# yum -y install httpd
[root@server2 ~]# systemctl start httpd
[root@server2 ~]# netstat -anpt | grep httpd #查 看端⼝确认apache已启⽤
[root@server2 ~]# systemctl status firewalld.service #查看防⽕墙是否启⽤,若启⽤则设置 apache服务可通⾏规则
[root@server2 ~]# firewall-cmd --permanent --addservice=http #设置防⽕墙放⾏apach
[root@server2 ~]# firewall-cmd --reload #重载防 ⽕墙规则
查看华为云主机的所有打开的端口
firewall-cmd --list-ports
关闭防火墙
apache 配置⽂件
yum 安装的 apache,配置⽂件在 /etc/httpd/conf/httpd.conf
如果是编译安装的 apache,那么配置⽂件在⾃⼰编译安装的安 装⽬录下
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
37 # Listen: Allows you to bind Apache to specific
IP addresses and/or
38 # ports, instead of the default. See also the
<VirtualHost>
39 # directive.
40 #
41 # Change this to Listen on specific IP addresses
as shown below to
42 # prevent Apache from glomming onto all bound IP
addresses.
43 #
44 #Listen 12.34.56.78:80
45 Listen 80 #默认的httpd监听端⼝,可在下⾯添加其他⾃
设端⼝
46
47 #
48 # Dynamic Shared Object (DSO) Support
......省略部分内容
92 # ServerName gives the name and port that the
server uses to identify itself.
93 # This can often be determined automatically,
but we recom mend you specify
94 # it explicitly to prevent problems during
startup.
95 #
96 # If your host doesn't have a registered DNS
name, enter i ts IP address here.
97 #
98 ServerName www.example.com:80 #指定httpd服务域
名和该域名的端⼝,可以⼿动修改其他域名
99
100 #
101 # Deny access to the entirety of your server's
filesystem. You must
nginx服务
开源、轻量级、高性能的http反向代理服务器
占用内存少、并发能力强、采用C语言编写
可以用来做负载均衡及反向代理使用、负载均衡使用较多
与nginx同类的web服务器有apache、tomcat等
服务特点
模块化设计
分为核心模块、http模块、事件模块和邮件模块四类。
低内存消耗、高开发
系统资源开销和CPU使用效率都很优秀。
事件驱动
采用异步方式处理请求
同步:发送⽅发出消息后,需要等待接收到接收⽅发回的响 应,或者通过回调函数来接收到对⽅响应信息
异步:发送方发出请求后,接收方不需要返回信息或者不等待返回消息,直接提供响应请求机制
高可靠性,master与worker架构
⼀个主进程和多个⼯作进程
master进程:主要⽤来监控worker进程⼯作状态进⾏相应重 启、停⽌等操作
worker进程:进⾏具体提供服务,接受请求和处理请求
支持热更新配置、日志文件滚动、平滑升级
/usr/local/nginx/sbin/nginx -s reload
html目录中的文件发生修改之后,不需要nginx服务
丰富的扩展模块
Nginx 基本功能
(1)静态资源 Web 服务器
(2)基于域名/IP/端⼝的虚拟主机
(3)HTTP/HTTPS、SMTP、POP3 和 TCP/UDP 反向代理
客户端代理,增强客户端的作用
反向代理是保护服务器
(4)负载均衡
nginx架构
(1)主进程(master process)
主要与外界通信和⼯作进程管理;
读取 nginx 配置⽂件并验证有效性;
建⽴、绑定和关闭 socket(套接字,IP地址:端⼝号);
按照配置⽂件⽣成、管理和结束⼯作进程;
nginx 重启、停⽌、重载配置⽂件、平滑升级、管理⽇志⽂件 等
(2)⼯作进程(worker process)
接受客户端请求,将请求交给各个功能模块处理;
接收主进程的指令并执⾏;
与后端服务器通信,接收后端服务器处理的结果,发送结果给客 户端;
数据缓存管理;
访问缓存索引、重建、查询和调⽤缓存数据;
系统 IO 调⽤,获取响应数据,发送响应给客户端;
源码编译安装
下载源码包
[root@a1 ~]# wget https://nginx.org/download/nginx-1.26.1.tar.gz
解压
[root@a1 ~]# tar -zxvf nginx-1.26.1.tar.gz
查看文件
[root@a1 ~]# ls nginx-1.26.1/
auto CHANGES.ru configure html man src
CHANGES conf contrib LICENSE README
安装软件包
[root@a1 ~]# yum -y install gcc gcc-c++
[root@a1 ~]# yum -y install openssl-devel.i686
[root@a1 ~]# yum -y install pcre-devel
[root@a1 ~]# yum -y install openssl-devel
[root@a1 ~]# yum -y install make
编译安装配置
[root@a1 ~]# cd nginx-1.26.1/
[root@a1 nginx-1.26.1]# ls
auto CHANGES.ru configure html man src
CHANGES conf contrib LICENSE README
[root@a1 nginx-1.26.1]# make && make install
安装完成创建用户
[root@a1 nginx-1.26.1]# useradd -s /bin/nologin -M nginx
检查目录
[root@a1 nginx-1.26.1]# tree /usr/local/nginx/
/usr/local/nginx/
├── conf
│ ├── fastcgi.conf
│ ├── fastcgi.conf.default
│ ├── fastcgi_params
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types
│ ├── mime.types.default
│ ├── nginx.conf
│ ├── nginx.conf.default
│ ├── scgi_params
│ ├── scgi_params.default
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── html
│ ├── 50x.html
│ └── index.html
├── logs
└── sbin├── nginx└── nginx.old4 directories, 19 files
切换目录
[root@a1 nginx-1.26.1]# cd /usr/local/nginx/
[root@a1 nginx]# ls
conf html logs sbin
开发端口或者服务
[root@a1 nginx]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@a1 nginx]# firewall-cmd --reload
success
创建软链接
[root@a1 nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/bin/
[root@a1 nginx]# ls -l /usr/bin/nginx
lrwxrwxrwx. 1 root root 27 7月 29 16:15 /usr/bin/nginx -> /usr/local/nginx/sbin/nginx
[root@a1 nginx]# nginx
[root@a1 nginx]# netstat -lnput|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8739/nginx: master
tcp6 0 0 :::80 :::* LISTEN 8739/nginx: master
[root@a1 nginx]# nginx
启动和关闭nginx服务
./nginx ./nginx -s stop
修改了配置文件后,重载nginx服务网
./nginx -s reload
[root@a1 nginx]# vim ~/inginx.sh
[root@a1 nginx]# source ~/inginx.sh
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8739/nginx: master
tcp6 0 0 :::80 :::* LISTEN 8739/nginx: master
nginx正在执行或者80端口被占用
[root@a1 nginx]# cat ~/inginx.sh
#!/bin/bash
/usr/local/sbin/nginx &> /dev/null
netstat -lnput|grep nginx
if [ $? -eq 0 ];thenecho "nginx正在执行或者80端口被占用"fi
以systemctl控制nginx
[root@a1 nginx]# vim /usr/lib/systemd/system/nginx.service
[root@a1 nginx]# systemctl daemon-reload
[root@a1 nginx]# cat /usr/lib
lib/ lib64/ libexec/
[root@a1 nginx]# cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=Flase[Install]
WantedBy=multi-user.target
如果直接使用sbin目录下nginx,就无法使用systemctl
开启状态监听模块
修改配置
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
[root@nginx ~]# systemctl reload nginx.service
访问测试
虚拟主机配置
反向代理
[root@tomcat ~]# scp root@q92.168.1.17:~/nginx-1.26.1.tar.gz ./
ssh: Could not resolve hostname q92.168.1.17: Name or service not known
[root@tomcat ~]# scp root@192.168.1.17:~/nginx-1.26.1.tar.gz ./
nginx-1.26.1.tar.gz 100% 1216KB 21.9MB/s 00:00
[root@tomcat ~]# tar -zxvf nginx-1.26.1.tar.gz