web服务器

Web服务器-HTTP相关-快速整一个服务器响应浏览器(3.2.1)

痞子三分冷 提交于 2019-11-28 07:29:28
目录 1.HTTP分析 2.简单服务器 关于作者 @ 1.HTTP分析 当你去访问一个网址的时候,浏览器会发送而各种头信息给服务器 然后服务器根据信息,返回一定数据的格式 最简单的就是下面的代码 自己构造返回数据的时候,头信息一定放在前面 当出现空格的时候,下一行就是返回的超文本HTML HTTP/1.1 200 OK <!Doctype html>.... 2.简单服务器 from socket import * import sys def main(): if len(sys.argv) != 2: print("可以按照如下方式运行:python3 xxx.py 7890") port = 7890 else: # 运行方式为python3 xxx.py 7890 port = int(sys.argv[1]) # 创建socket tcp_server_socket = socket(AF_INET, SOCK_STREAM) # 本地信息 address = ('', port) # 绑定本地信息 tcp_server_socket.bind(address) # 将主动套接字变为被动套接字 tcp_server_socket.listen(128) while True: # 等待客户端的链接,即为这个客户端发送文件 client_socket, clientAddr

HAProxy调度算法

核能气质少年 提交于 2019-11-28 07:23:41
文章目录 HAProxy调度算法 一、静态算法 1. static-rr 2. first 二、动态算法: 1. roundrobin 2. leastconn 三、混合算法 1. source 2. uri 3. url_param: 4. hdr 5. rdp-cookie 6. random 4层与7层的区别 IP透传: 四层IP透传 七层IP透传: HAProxy调度算法 HAProxy通过固定参数balance指明对后端服务器的调度算法,该参数可以配置在listen或backend选项中。 HAProxy的调度算法分为静态和动态调度算法,但是有些算法可以根据参数在静态和动态算法中相互转换。 一、静态算法 静态算法:按照事先定义好的规则轮询公平调度,不关心后端服务器的当前负载、链接数和相应速度等,且无法实时修改权重,只能靠重启HAProxy生效。 1. static-rr 基于权重的轮询调度,不支持权重的运行时调整及后端服务器慢启动,其后端主机数量没有限制 listen web_host bind 192.168.7.101:80,:8801-8810,192.168.7.101:9001-9010 mode http log global balance static-rr server web1 192.168.7.103:80 weight 1 check inter

Django(一)

眉间皱痕 提交于 2019-11-28 03:57:23
Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。 这样我们就可以自己实现Web框架了。 socket服务端 import socket sk = socket.socket() sk.bind(("127.0.0.1", 80)) sk.listen() while True: conn, addr = sk.accept() data = conn.recv(8096) conn.send(b"OK") conn.close() 可以说Web服务本质上都是在这十几行代码基础上扩展出来的。这段代码就是它们的祖宗。 用户在浏览器中输入网址,浏览器会向服务端发送数据,那浏览器会发送什么数据?怎么发?这个谁来定? 你这个网站是这个规定,他那个网站按照他那个规定,那互联网还能玩么? 所以,必须有一个统一的规则,让大家发送消息、接收消息的时候都有个格式依据,不能随便写。 这个规则就是HTTP协议,以后浏览器发送请求信息也好,服务器回复响应信息也罢,都要按照这个规则来。 HTTP协议主要规定了客户端和服务器之间的通信格式,那HTTP协议是怎么规定消息格式的呢? 让我们首先打印下我们在服务端接收到的消息是什么。 import socket sk = socket.socket() sk.bind(("127.0.0.1

wstngfw中配置squid

♀尐吖头ヾ 提交于 2019-11-28 03:49:57
wstngfw中配置squid Squid是一个缓存 Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向 Squid 发出一个申请,要 Squid 代替其进行下载,然后 Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户。 按照代理类型的不同,可以将 Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为标准代理和透明代理。 1.标准的代理缓冲服务器 一个标准的代理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。 2.透明代理缓冲服务器

HTTP cookies 详解

…衆ロ難τιáo~ 提交于 2019-11-28 00:41:37
HTTP cookies 详解 http://bubkoo.com/2014/04/21/http-cookies-explained/ HTTP cookies,通常称之为“cookie”,已经存在很长时间了,但是仍然没有被充分理解。首要问题是存在许多误解,认为 cookie 是后门程序或病毒,却忽视了其工作原理。第二个问题是,对于 cookie 的操作缺少统一的接口。尽管存在这些问题,cookie 仍旧在 Web 开发中扮演者重要的角色,以至于如果没有出现相应的代替品就消失的话,我们许多喜欢的 Web 应用将变的不可用。 cookie 的起源 早期的 Web 应用面临的最大问题之一就是如何维持状态。简言之,服务器无法知道两个请求是否来自于同一个浏览器。当时,最简单的办法就是在请求的页面中插入一个 token,然后在下次请求时将这个 token 返回至服务器。这需要在页面的 form 表单中插入一个包含 token 的隐藏域,或者将 token 放在 URL 的 query 字符串中来传递。这两种方法都需要手动操作,而且极易出错。 当时网景通讯的一名员工 Lou Montulli ,在 1994 年将 “ magic cookies ” 的概念应用到 Web 通讯中。他试图解决 Web 的第一个购物车应用,现在购物车成了购物网站的支柱。他的 原始说明文档 提供了 cookie

Web应用运行原理

久未见 提交于 2019-11-27 23:59:30
web应用启动做了什么? 读取web.xml文件 - web.xml常用配置参数: 1) .context-param(上下文参数) 2) .listener(监听器配置参数) 3) .filter(过滤器配置参数) 4) .servle(servlet页面参数) 5).其他 - 读取顺序: 1)>>> 2)>>> 3)>>> 4)( 5))(具体对应的执行顺序也是如此) - 原理及过程 1)应用在服务器上启动,容器按上述顺序自动读取 web .xml中的参数 2)容器创建一个上下文对象,即 ServletContext,整个 web应用共享这个对象 3)容器将读取到的 context-param配置参数转化为键值对,封装到 ServletContext 4)创建监听器对象(Servlet容器实例化所有监听器,回调无参构造方法,调用init初始化方法) 5)创建过滤器对象(Servlet容器实例化所有过滤器,回调无参构造方法,调用init初始化方法) 注意:此时只是 web应用启动时的读取文件以及初始化阶段,客户端没有发送的请求的情况下不会有其他任何操作 浏览器到服务器解析? A.浏览器发送请求到服务器 1.在浏览器地址栏输入请求地址,浏览器解析请求URL,解析出IP地址等信息(域名解析) 2.解析后的URL信息封装成HTTP报文 3.浏览器创建一个socket调用send(

常用的ASP.net性能优化方法.doc

微笑、不失礼 提交于 2019-11-27 22:51:51
ASP.NET中常用的优化性能方法 收藏 1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。连接池的大小是有限的, R1 如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间 ,避免出现超出连接限制的情况。 使用存储过程 存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。 优化查询语句 ASP.NET中ADO连接消耗的资源相当大,SQL语句运行的时间越长,占用系统资源的时间也越长。因此, R2 尽量使用优化过的 SQL 语句以减少执行时间。比如

网页从输入网址到渲染完成经历了哪些过程

守給你的承諾、 提交于 2019-11-27 22:08:36
大致可以分为如下7步: 输入网址 ; 发送到 DNS服务器(解析) ,并获取域名对应的web服务器对应的ip地址; 与web服务器建立 TCP连接(低级协议,高级协议基础) ; 浏览器 向web服务器发送http请求(高级协议) ; web服务器 响应请求 ,并 返回指定url的数据 (或错误信息,或重定向的新的url地址); 浏览器 下载web服务器返回的数据 及 解析html源文件 ; 生成DOM树,解析css和js,渲染页面,直至显示完成 ; 来源: https://www.cnblogs.com/wangtong111/p/11379834.html

实体类实现序列化

試著忘記壹切 提交于 2019-11-27 21:54:34
客户端访问了某个能开启会话功能的资源, web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间。如果在某一时间段内访问站点的用户很多,web服务器内存中就会积累大量的HttpSession对象,消耗大量的服务器内存,即使用户已经离开或者关闭了浏览器,web服务器仍要保留与之对应的HttpSession对象,在他们超时之前,一直占用web服务器内存资源。 web服务器通常将那些暂时不活动但未超时的HttpSession对象转移到文件系统或数据库中保存,服务器要使用他们时再将他们从文件系统或数据库中装载入内存,这种技术称为Session的持久化。 将HttpSession对象保存到文件系统或数据库中,需要采用序列化的方式将HttpSession对象中的每个属性对象保存到文件系统或数据库中;将HttpSession对象从文件系统或数据库中装载进内存时,需要采用反序列化的方式,恢复HttpSession对象中的每个属性对象。所以存储在HttpSession对象中的每个属性对象必须实现Serializable接口 ———————————————— 转载:CSDN博主「wan23333」 https://blog.csdn.net/wan23333/article/details/83057488 来源: https://www

tomcat集群负载均衡配置

青春壹個敷衍的年華 提交于 2019-11-27 20:25:03
参考: Tomcat与Apache或Nginx的集群负载均衡设置: http://huangrs.blog.51cto.com/2677571/1058579 Tomcat与Apache或Nginx连接和集群配置: http://toplchx.iteye.com/blog/1928390 系统环境设置 准备三台redhat linux 5或 centos服务器: 负载均衡服务器:Apache安装自带的web发布服务(httpd服务) IP地址:192.168.0.100 Tomcat发布服务器1:安装有两个发布服务tomcat1和tomcat2 IP地址:192.168.0.101 Tomcat发布服务器2:安装有两个发布服务tomcat3和tomcat4 IP地址:192.168.0.102 统一对外部发布的地址是: http://192.168.0.100 (即负载均衡地址) 在设定完成IP以后,最好先设置主机名和IP的对应关系: 1 2 3 4 cat /etc/hosts 192.168.0.100 web.example.com web #add 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 Tomcat发布器的安装 JDK安装 JDK软件最新版下载: