web服务器

(转)三大WEB服务器对比分析(apache ,lighttpd,nginx)

前提是你 提交于 2019-12-02 05:49:23
一.软件介绍 (apache lighttpd nginx) 1. lighttpd Lighttpd 是一个具有非常低的内存开销, cpu 占用率低,效能好,以及丰富的模块等特点。 lighttpd 是众多 OpenSource 轻量级的 web server 中较为优秀的一个。支持 FastCGI, CGI, Auth, 输出压缩 (output compress), URL 重写 , Alias 等重要功能。 Lighttpd 使用 fastcgi 方式运行 php, 它会使用很少的 PHP 进程响应很大的并发量。 Fastcgi 的优点在于: · 从稳定性上看 , fastcgi 是以独立的进程池运行来 cgi, 单独一个进程死掉 , 系统可以很轻易的丢弃 , 然后重新分配新的进程来运行逻辑 . · 从安全性上看 , fastcgi 和宿主的 server 完全独立 , fastcgi 怎么 down 也不会把 server 搞垮 , · 从性能上看 , fastcgi 把动态逻辑的处理从 server 中分离出来 , 大负荷的 IO 处理还是留给宿主 server, 这样宿主 server 可以一心一意作 IO, 对于一个普通的动态网页来说 , 逻辑处理可能只有一小部分 , 大量的图片等静态 IO 处理完全不需要逻辑程序的参与 ( 注 1) · 从扩展性上讲 ,

使用Flask+nginx+uwsgi+Docker部署python应用

£可爱£侵袭症+ 提交于 2019-12-02 05:21:54
以下内容根据个人理解整理而成,如有错误,欢迎指出,不胜感激。 0. 写在前面 本文记录自己在服务器上部署python应用的实现过程,涉及的内容如下: Flask、nginx和uwsgi之间的关系 从零开始使用Flask+nginx+uwsgi+Docker部署一个python应用 1. Flask、nginx和uwsgi之间的关系 客户端向服务器发送一个http请求,一般要经过下面三个阶段: web服务器:用于接收客户端请求,并向客户端返回响应 web框架:用于对客户端的请求进行相应的处理,web框架也直接调用了我们自己编写的处理程序 WSGI协议:WSGI全称为 Web Server Gateway Interface ,它定义了web服务器和web框架之间相互交互的接口规范,只要web服务器和web框架满足WSGI协议,那么不同框架和服务器之间就可以任意搭配。要注意的是WSGI只适用于python语言 理解了上述内容,再来看Flask、nginx和uwsgi就比较简单: nginx就是一个web服务器 Flask就是一个web框架,常用的其他web框架还有Django uwsgi与WSGI一样,是一种通信协议。首先要说明,uWSGI是一个web服务器,它实现了WSGI、uwsgi、http等协议,其作用就是把HTTP协议转化成语言支持的网络协议,用于处理客户端请求

分布式Session一致性简介

左心房为你撑大大i 提交于 2019-12-02 05:04:32
Session简介 是什么? Session在网络中表示“会话控制”,用于存储特定用户所需的属性和其他的配置信息; Session表示一个特定的时间间隔,可以指用户从登陆系统到注销退出系统之家的时间。 为什么出现? 因为http 是一种无状态协议,如果没有Session的话,服务器无法识别请求是否来自同一个用户! 在一些业务场景中需要知道前面的操作和后台的操作是不是同一个用户的行为,即业务之间是有关联性的。 怎么用? 使用Session结合浏览器Cookie,将服务器Session保存到浏览器cookie中,这样可以保持http会话状态。 Session服务器创建,如Tomcat,浏览器发起请求到Tomcat服务器,然后Tomcat服务器生成SessionId保存在内存中,并将SessionId返回给浏览器,浏览器通过Cookie保存SessionId信息,用户每次通过浏览器访问服务器都会带上SessionId信息,这样就可以判断每次的请求是不是同一个用户,解决http协议无状态问题。 什么是Session一致性问题 单机版的系统,比如一个Tomcat部署,是不存在Session一直性的问题,因为Session保存在一个Tomcat容器中。 Session一致性问题是由架构演进或者业务的演进中发生,从单机演进到集群或者分布式的架构 用户—> 浏览器 ----> Nginx(轮询)

Web框架

僤鯓⒐⒋嵵緔 提交于 2019-12-02 02:56:40
1.Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。 这样我们就可以自己实现Web框架了。 socket服务端 import socket sk = socket.socket() #创建一个socket对象 sk.bind(('127.0.0.1',8000)) #绑定一个ip和端口 sk.listen() #监听 ​ #等待连接 while True: conn,addr = sk.accept() conn.recv(1024) #接受数据 conn.send(b'ok') #返回数据 conn.close() #断开连接 在浏览器中连接上述服务端时出现问题: 我们可以一下可以发现浏览器向服务端发送请求时,无法响应,那么是什么导致这个原因呢?我们想到必须有一个统一的规则,让大家发送消息、接收消息的时候都有个格式依据,不能随便写。这个规则就是HTTP协议. HTTP协议主要规定了客户端和服务器之间的通信格式 让我们首先打印下我们在服务端接收到的消息是什么 import socket sk = socket.socket() sk.bind(("127.0.0.1", 80)) sk.listen() while True: conn, addr = sk.accept() data = conn

web开发常见的鉴权方式

﹥>﹥吖頭↗ 提交于 2019-12-02 02:27:56
结合网上找的资料整理了一下,以下是web开发中常见的鉴权方法: 预备:一些基本的知识 RBAC (Role-Based Access Control)基于角色的权限访问控制 (参考下面①的连接) l 用户-角色-权限 的授权模型 : 一个用户拥有若干角色,每一个角色拥有若干权限 l 用户:一个个独立的账号 l 角色:一些权限的集合,是权限的载体(例如:"管理员"、”会员“、"普通用户") l 权限:权限通常是一组资源的集合。(例如:用户管理、保单管理、系统维护。角色和权限是多对多关系。) l 用户量大的时候,单独为一个用户授予角色比较繁琐,需增加 用户组, 可以对用户组内所有的用户统一分配角色,这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。 l 各种资源的整合,我们在设计权限的时候会遇到多种类型的资源,例如页面元素的显示隐藏、文件的访问、按钮的操作权限等等 ACL 访问控制列表,是前几年盛行的一种权限设计, 它的核心在于用户直接和权限挂钩 。 RBAC的核心是用户只和角色关联,而角色代表对了权限,这样设计的优势在于使得对用户而言,只需角色即可以,而某角色可以拥有各种各样的权限并可继承。 ACL和RBAC相比缺点在于由于用户和权限直接挂钩,导致在授予时的复杂性,虽然可以利用组来简化这个复杂性,但仍然会导致系统不好理解

什么是Servlet容器?

ⅰ亾dé卋堺 提交于 2019-12-02 02:05:29
在本文中,我写了一些关于Web服务器、Servlet容器以及它与JVM的关系的基本概念。我想表达的是,Servlet容器也仅仅不过是一个Java程序。 1. 什么是Web服务器? 想要知道什么是Servlet容器,我们首先要知道什么是Web服务器。 Web服务器使用HTTP协议来传输数据。最简单的一种情况是,用户在浏览器(客户端,client)中输入一个URL(如,www.programcreek.com/static.html),然后就能获取网页进行阅览。因此,服务器完成的工作就是发送网页至客户端。传输过程遵循HTTP协议,它指明了请求(request)消息和响应(response)消息的格式。 2. 什么是Servlet容器? 在这里,我们发现,用户/客户端只能向服务器请求静态网页。如果用户想要根据自己的输入来读取网页,这种方式就不能满足用户的要求。Servlet容器的基本思想是在服务器端使用Java来动态生成网页。因此,Servlet容器是Web服务器和servlet进行交互的必不可少的组件。 Servlet容器就是用来装Servlet的。 3. 什么是Servlet? Servlet 是在javax.serlvet包中定义的一个接口。它声明了servlet生命周期中必不可少的三个方法-init()、service()和destroy()。每个servlet

uWSGI 漏洞复现(CVE-2018-7490)

↘锁芯ラ 提交于 2019-12-01 23:08:21
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。 目标: 了解uWSGI CVE-2018-7490漏洞形成原理和漏洞利用方法。 利用搜索工具了解CVE-2018-7490漏洞详情。再利用漏洞获取根目录key.txt的值。 解析思路 http://219.153.49.228:48001/..%2f..%2fkey.txt .. 表示上一级 %2f表示/ 在IP后面输入: ..%2f..%2f..%2f..%2f..%2f..%2f..%2fkey.txt 来源: https://www.cnblogs.com/daiorz/p/11720420.html

JavaWeb

怎甘沉沦 提交于 2019-12-01 22:57:01
1.基本概念 1.1 前言 web网页的意思 静态web html,css 动态web jsp 在java中,动态web开发的技术统称为javaWeb 1.2web应用程序 这些统一的web 资源会放在同一个文件夹下 -> Tomcat服务器 静态web的缺点,无法和DB交互 web 服务器 jsp本质就是一个servlet 服务器是一种被动的操作,用于处理一些用户的请求和给用户响应一些信息 来源: https://www.cnblogs.com/liudao666/p/11719894.html

linux使用nginx配置web服务器

亡梦爱人 提交于 2019-12-01 21:58:59
环境: CenterOS 7 1.安装nginx之前先安装nginx所需的依赖包 yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel 2.使用wget下载nginx压缩文件,并且解压安装,操作步骤如下: 点击查看官网nginx版本 ,此处我使用的是1.16.1版本 [root@VM_1_14_centos ~]# cd /data/ [root@VM_1_14_centos data]# wget http://nginx.org/download/nginx-1.15.7.tar.gz [root@VM_1_14_centos data]# tar -xvf nginx-1.16.1.tar.gz [root@VM_1_14_centos data]# mkdir //usr/local/nginx -p [root@VM_1_14_centos data]# ll total 1008 drwxr-xr-x 9 1001 1001 4096 Dec 17 15:16 nginx-1.15.7 -rw-r--r-- 1 root root 1026732 Nov 27 22:51 nginx-1.15.7.tar.gz [root@VM_1_14_centos data]# cd nginx-1

讨论Web前后端分离的意义

谁说胖子不能爱 提交于 2019-12-01 20:28:00
自然是有很大意义的。下面我可能说的比较多……方便题主能够更全面的了解为什么说是有有意义的。另外,本文是以Java的角度谈前后端分离。放心,大家一定会有种是我了,没错,的感觉。 一、先来明晰下概念   前后端分离是通过Ngnix+Tomcat的方式(也可以中间加一个Node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,iOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。   它的核心思想是 前端HTML页面通过Ajax调用后端的Restful API接口并使用json数据进行交互。这点题主也有提到。 二、其次,让我们了解下,没有前后端分离的时代(各种耦合)   过去,Java Web项目大多数都是Java程序员又当爹又当妈,又搞前端,又搞后端。   感觉就是,怀疑猿生……   那时的JavaWeb项目都是使用了若干后台框架,Spring MVC/Struts + Spring + Spring JDBC/Hibernate/Mybatis 等等。   大多数项目在Java后端都是分了三层,控制层,业务层,持久层。控制层负责接收参数,调用相关业务层,封装数据,以及路由&渲染到JSP页面。然后JSP页面上使用各种标签或者手写Java表达式将后台的数据展现出来