马哥linux高薪中级-web服务器

第一章  HTTP概述


一、概述

1、什么是HTTP?

HTTP:hypertext transfer protocl 超文本链接协议,所谓超链接就是将不同位置的超文本文件HTML进行快速的查找并读取。HTTP协议是一个规范,可以实现不同区域的用户直接可以实现超文本连接。实现的条件是tcp/ip协议、DNS服务、URL地址。

最初http协议的特点

1、无状态连接,不能够反映出连接时客户端的登录状态。

2、短连接,完成一次客户端请求报文就断开连接。

3、非安全传输。

4、一条链路上只发送一个请求

5、请求只能从客户端发起,客户端不能接受响应报文以外的报文。

6、HTTP首部信息非压缩,造成首部越来越大,传输延时大。

HTML和XML的区别

两者都是通用标记语言,用来修饰文本内容,但是XML更适合于对数据进行修饰。比如表单

2、RFC是什么?

RFC(request for comments,征求修正意见书):用于制定http协议标准的设计文档。

3、动态网站

客户端对服务器发送一个请求,这个请求需要服务器端进行计算后才能得出来,就可以成为动态网站。

3.1、客户端动态

方法:将动态处理过程放在客户端来执行的过程就称为客户端动态。

实现技术:applet(java)

3.2、服务器端动态

技术:CGI:通用网关接口 common gateway interface ,这个CGI接口就是http协议和能够处理用户需要计算的请求的程序之间的管道或中间件。换句话说就是服务器在接收到客户端发送过来的请求后转发给程序的一组机制,这里的程序是指由客户端发起的请求,由服务器端程序编写的代码需要又程序来进行解释。常用的CGI程序包括:PERL、PHP、RUBY、C等编程语言。

4、http请求方法:

get:下载

head:仅仅请求响应首部

post:上传、提交表单

options:返回资源请求使用方法的方法。,类似请求方法的man操作。

put:上传,依赖于webdav。

delete:依赖于webdav,删除。

trace:追踪一个资源所经过的代理服务器。

[[email protected] ~]# curl 10.40.0.175 -v

* About to connect() to 10.40.0.175 port 80 (#0)

*   Trying 10.40.0.175... connected

* Connected to 10.40.0.175 (10.40.0.175) port 80 (#0)

> GET / HTTP/1.1

> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2

> Host: 10.40.0.175

> Accept: */*

>

< HTTP/1.1 303 See Other

< Server: nginx/1.0.6

< Date: Mon, 12 Dec 2016 01:27:48 GMT

< Content-Type: text/html

< Transfer-Encoding: chunked

< Connection: keep-alive

< Set-Cookie: PHPSESSID=943sje87u4dbod4e8j3d4pcko5; path=/

< Expires: Thu, 19 Nov 1981 08:52:00 GMT

< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

< Pragma: no-cache

< Set-Cookie: PHPSESSID=vq0ai9pib0mlgtc8m1p5nihfs3; path=/

< Location: http://10.40.0.175/home/auth/login?redirect=http%3A%2F%2F10.40.0.175

<

* Connection #0 to host 10.40.0.175 left intact

* losing connection #0

二、代理 和缓存
为客户端访问源服务器资源提供帮助,替代客户端完成数据请求。

1、分类:

1.1、按是否有缓存分

缓存代理服务器

无缓存代理服务

2.1、按HTT缓存机制分

公共缓存:网页信息

私有缓存:个人账户密码等信息

2、代理和缓存的区别是什么?

客户端请求web服务,缓存服务器查看自己是否有请求内容,如果有就提供如果没有就不提供,而代理服务器是在用户提供请求的时候,代替客户端查询,并将查询结果返回给客户端,通常缓存和代理服务结合使用。

如果仅仅提供缓存不提供代理,当自己没有资源可用,而是有用户去查询资源,并缓存用户资源的情况称为旁路缓存服务器。

3、http的状态码:

1、200:表示请求处理成功

2、204:表示请求处理成功,但响应内容中不包括主体的信息。

3、206:表示客户端发送了范围请求(断点续传),而服务器端也做出了正确响应。3

4、301:表示永久性重定向,客户端所请求的服务器端url已经发生了变化,服务器发送了新的url地址,并希望下次访问时使用此新地址。

5、302:临时性重定向

6、303:提示客户端使用的请求方法不合适,并提出建议,此次请求正确执行

7、400:客户端请求中存在着语法错误

8、401:表示对服务器的请求有认证要求,并提示认证失败。

9、403:表示客户端请求被服务器拒绝了。

10、404:服务器端无法找到客户端请求的资源

11、500:表示服务器端在执行请求时发生了错误

12、503:表示服务器目前处于高负荷、停机维护等状态,目前无法处理请求。

三、http报文首部


1、什么是HTTP报文首部

用于记录HTTP请求或者响应时需要提供的信息资料存放位置

2、分类

2.1、HTTP请求报文首部:

请求方法、URL、HTTP版本、HTTP首部字段等信息


2.2、HTTP响应报文首部:

HTTP版本、状态码、HTTP首部字段

2.3HTTP首部字段的结构

由首部字段名和字段值构成,中间用冒号“:”分隔。

2.4HTTP首部字段的类型

2.4.1、通用首部字段

2.4.2、请求首部字段

2.4.3响应首部字段

2.4.4、实体首部字段

3、手动发送http请求信息

3.1、安装telnet

3.2、填写http首部信息

[[email protected] ~]# telnet 10.40.0.175 80

Trying 10.40.0.175...

Connected to 10.40.0.175.

Escape character is ‘^]‘.

GET / HTTP/1.1

HOST:10.40.0.175

HTTP/1.1 303 See Other

Server: nginx/1.0.6

Date: Tue, 13 Dec 2016 07:59:22 GMT

Content-Type: text/html

Transfer-Encoding: chunked

Connection: keep-alive

Set-Cookie: PHPSESSID=340e3hnjvr20tsrrq55hdlreb4; path=/

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Set-Cookie: PHPSESSID=cc2flkv34krodu52iqnm2rto56; path=/

Location: http://10.40.0.175/home/auth/login?redirect=http%3A%2F%2F10.40.0.175

4、一次http事务的完成过程:

1、建立连接

2、接收请求

3、处理请求

4、获取资源

读取硬盘资源,需要I/O操作,需要系统内核先将资源从磁盘读到内核所占用的内存中,然后内核再将资源放到HTTP服务开启的进程所使用的内存空间上。

5、构建响应

6、回送响应

7、记录日志

四、HTTP认证

1、basic认证

客户机发送链接请求到服务器

服务器发送认证要求

客户端提交用户名,密码并通过basic64进行编码

缺点是密码可以随意破解

2、digest(质询/响应)认证

客户机发送验证请求到服务器

服务器发送一个随机码给客户机,要求按此加密用户名、密码

客户机发送认证信息和加密信息。

相对basic认证,提高了密码的安全性,但同样不能认证客户机身份

3、SSL认证

客户机通过证书证明用户身份的认证方法,证书需要购买或者通过搭建证书服务器生成并管理。

4、双因素认证

认证方法采用两种认证,通常一方面认证计算机的身份,另外认证客户人的身份

5、表单(form)认证

最常用的认证方式,此认证方式有网站来认证,而不是通过http协议自身来认证(basic和digest是http协议自带的认证方式)。这样就造成了安全技术上的参差不齐。

6、keepalive认证

目前http协议都是默认采用keepalive连接的,那么他的认证就需要使用cookic,用户在首次进行认证后,服务器会发送一个cookieid号,来对于用户真实的账户密码,并发送给客户机,客户机在长连接时,需要再访问其他网页的时候,会在请求报文中发送cookieid来进行身份验证。

第二章 HTTP应用

一、应用程序

1、历史与相关程序

httpd、(apache)a patchy server 一个充满补丁的服务器,

ASF:apache software foundation 隶属于一个软件基金会。同时还包括tomcat、cassandra、hadoop、lucene、cloudstack。

nginx:主要做反向代理。

lightttpd:

2、应用程序服务器

为完成http动态请求,需要计算处理编译脚本的应用程序。

IIS:windows

tomcat:(apache ,jsp,opensource)

websphere:商业的,IBM公司、支持JSP,commodity

weblogic:oracle公司、支持jsp,commodity

jboss:红帽

3、apache特点

高度模块化,支持正向、反向代理、缓存、认证等。

mpm:multipath processing module 多进程模块

perfork:一个进程响应一个请求

worker:一个进程生成多个线程,一个线程响应一个请求

event:事件驱动模式。

主流版本:

1.3:稳定,不提供维护

2.0:接近1.3

2.2:

2.4:

名词解释:

反向代理就是是网站通过一台机器发布到公网。。你访问的时候是直接访问那台代理机器的,然后通过那台机器才访问到网站。你无法得到网站的真实ip地址。这样的好处是保护了网站服务器,而且可以通过一个被动代理服务器将很多机器解析到同一ip地址。

二、httpd安装:

1、编译安装

./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd2.3 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event

APR和APR-UTILS主要是为不同平台提供相同的通用接口而产生的,默认情况下,linux是有安装这两个软件包的,所有在编译安装httpd的时候也可以同时编译安装新的apr软件。

--enable-modules=most        ##指定装载模块的数量,静态加载模块,在编译时将模块直接放到httpd的程序中。通过httpd.conf的<ifmodule module.c>来管理。

<IfModule mod_dav_fs.c>

# Location of the WebDAV lock database.

DAVLockDB /var/lib/dav/lockdb

</IfModule>

-enable-mpms-shared=all    ##指定可以动态加载模块,模块没有加载到httpd程序中,启动httpd的时候不会加载此类模块,而是给一个module.so文件,需要loadmodule语法来加载。

# LoadModule foo_module modules/mod_foo.so

#

LoadModule auth_basic_module modules/mod_auth_basic.so

LoadModule auth_digest_module modules/mod_auth_digest.so

LoadModule authn_file_module modules/mod_authn_file.so

LoadModule authn_alias_module modules/mod_authn_alias.so

LoadModule authn_anon_module modules/mod_authn_anon.so

LoadModule authn_dbm_module modules/mod_authn_dbm.so

参考资料:http://blog.sina.com.cn/s/blog_6238358c01017gdu.html

1、添加编译安装的httpd的可执行命令的路径(环境 变量)

[[email protected] ~]# vi /etc/profile.d/httpd.sh

[[email protected] ~]# . /etc/profile.d/httpd.sh

2、检查当前apachectl命令是否是编译安装的路径。

[[email protected] ~]# hash

hits command

1 /usr/local/test/apache/bin/apachectl

3、执行apachectl命令

[[email protected] ~]# apachectl start

4、查看当前运行模式(event)

[[email protected] ~]# httpd -t -D DUMP_MODULES

Loaded Modules:

core_module (static)

so_module (static)

http_module (static)

authn_file_module (shared)

authn_core_module (shared)

authz_host_module (shared)

authz_groupfile_module (shared)

authz_user_module (shared)

authz_core_module (shared)

access_compat_module (shared)

auth_basic_module (shared)

reqtimeout_module (shared)

filter_module (shared)

mime_module (shared)

log_config_module (shared)

env_module (shared)

headers_module (shared)

setenvif_module (shared)

version_module (shared)

mpm_event_module (shared)

unixd_module (shared)

status_module (shared)

autoindex_module (shared)

dir_module (shared)

alias_module (shared)

5、查看当前httpd相关详细信息。

[[email protected] ~]# httpd -V

Server version: Apache/2.4.20 (Unix)

Server built:   Dec 23 2016 12:18:31

Server‘s Module Magic Number: 20120211:57

Server loaded:  APR 1.5.2, APR-UTIL 1.5.4

Compiled using: APR 1.5.2, APR-UTIL 1.5.4

Architecture:   64-bit

Server MPM:     event

threaded:     yes (fixed thread count)

forked:     yes (variable process count)

Server compiled with....

-D APR_HAS_SENDFILE

-D APR_HAS_MMAP

-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)

-D APR_USE_SYSVSEM_SERIALIZE

-D APR_USE_PTHREAD_SERIALIZE

-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT

-D APR_HAS_OTHER_CHILD

-D AP_HAVE_RELIABLE_PIPED_LOGS

-D DYNAMIC_MODULE_LIMIT=256

-D HTTPD_ROOT="/usr/local/test/apache"

-D SUEXEC_BIN="/usr/local/test/apache/bin/suexec"

-D DEFAULT_PIDLOG="logs/httpd.pid"

-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"

-D DEFAULT_ERRORLOG="logs/error_log"

-D AP_TYPES_CONFIG_FILE="/etc/httpd24/mime.types"

-D SERVER_CONFIG_FILE="/etc/httpd24/httpd.conf"

6、修改脚本

[[email protected] ~]# cp /etc/init.d/httpd  /etc/init.d/httpd24

[[email protected] ~]# vi /etc/init.d/httpd24

apachectl=/usr/local/test/apache/bin/apachectl

httpd=${HTTPD-/usr/local/test/apache/bin/httpd}

pidfile=${PIDFILE-/usr/local/test/apache/logs/httpd.pid}

7、额外的配置文件,通常编译安装的httpd程序,配置虚拟主机、默认配置、ssl、mpm等需要首先取消incloud相关的注释,然后到一下文件中配置才可。

[[email protected] ~]# ll /etc/httpd24/extra/

总用量 68

-rw-r--r--. 1 root root  2889 12月 23 12:27 httpd-autoindex.conf

-rw-r--r--. 1 root root  1837 12月 23 12:27 httpd-dav.conf

-rw-r--r--. 1 root root  2942 12月 23 12:27 httpd-default.conf

-rw-r--r--. 1 root root  1119 12月 23 12:27 httpd-info.conf

-rw-r--r--. 1 root root  5078 12月 23 12:27 httpd-languages.conf

-rw-r--r--. 1 root root  1033 12月 23 12:27 httpd-manual.conf

-rw-r--r--. 1 root root  4444 12月 23 12:27 httpd-mpm.conf

-rw-r--r--. 1 root root  2234 12月 23 12:27 httpd-multilang-errordoc.conf

-rw-r--r--. 1 root root 13248 12月 23 12:27 httpd-ssl.conf

-rw-r--r--. 1 root root   694 12月 23 12:27 httpd-userdir.conf

-rw-r--r--. 1 root root  1475 12月 23 12:27 httpd-vhosts.conf

-rw-r--r--. 1 root root  3161 12月 23 12:27 proxy-html.conf

使用虚拟主机功能

1、关闭DocumentRoot

#DocumentRoot "/usr/local/test/apache/htdocs"

2、开启virtualHost功能

# Virtual hosts

Include /etc/httpd24/extra/httpd-vhosts.conf

3、配置/etc/http24/extra/httpd-vhosts.conf

<VirtualHost *:8080>

documentroot "/usr/local/test/dtedu/"

servername www.inno.com.cn

ErrorLog "/var/log/dtedu/dteduerror.log"

<Directory "/usr/local/test/dtedu">

options none

allowoverride none

order deny,allow

deny from 10.40.0.57

</Directory>

</VirtualHost>

<VirtualHost *:80>

documentroot "/usr/local/test/gongbing/"

servername www.gongbing.com.cn

ErrorLog "/var/log/inno/innoerror.log"

<Directory "/usr/local/test/gongbing">

options none

allowoverride none

order deny,allow

deny from 10.40.0.57

</Directory>

<VirtualHost *:80>

documentroot "/usr/local/test/inno/"

servername www.inno.com.cn

ErrorLog "/var/log/inno/innoerror.log"

<Directory "/usr/local/test/inno">

options none

allowoverride none

order deny,allow

deny from 10.40.0.57

</Directory>

4、开启8080端口(/etc/htttpd24/httpd.conf)

Listen 80

Listen 8080

5、修改工作模式,仅需修改loadmodule即可(编译方式)

#LoadModule mpm_event_module modules/mod_mpm_event.so

#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

LoadModule mpm_worker_module modules/mod_mpm_worker.so

安装pcre的前提需要安装gcc、gcc-c++。

时间: 2024-10-27 18:44:35

马哥linux高薪中级-web服务器的相关文章

马哥linux高薪中级-web服务器(续一)

2.工作模式切换 httpd支持三种模型,即perfork.worker.event模型. 三种模型的启动方法是不同的,perfork是默认的启动模型,通过httpd命令即可启动,可以通过rpm -ql |grep bin来看到有httpd.http.worker.http.event三个命令. 一般来说,apache的2.2版本之前并不支持event模型,在2.4以后才开始支持event模型. 2.1.修改配置文件 [[email protected] ~]# vi /etc/sysconfi

马哥linux高薪中级-web服务器(续二)

11.http status 查看web服务器状态的模块:status 要求安装mod_status模块,默认是安装的. 1.已经加载了LoadModule status_module modules/mod_status.so 2.按需要开启ExtendedStatus on 3.配置文件 <Location /status>                                //"/status"可以随意设置,最终代表的就是域名后面的路径 SetHandle

马哥linux高薪中级-DNS

第一章 简介 一.DNS domain name server,用来将计算机名称或者域名解析成ip地址的服务协议. 用户在使用域名访问时会先通过DNS服务请求域名对应的ip地址,然后缓存下来,然后才通过ip地址进行通信. 最初域名解析是通过HOSTS文件来静态绑定的. DNS缓存的时间期限是由服务器端决定的,然后客户端在时间到期后进行更新缓存信息. 二.DNS服务器角色类型: 缓存DNS服务器:只处理请求并递归查找,本身并不解析域名.可以直接安装caching-nameserver来完成,也可以

马哥linux高薪中级-POSTFIX邮件服务(四)

安装配置httpd文件 由于extmail要进行本地邮件的投递操作,所以必须以邮件投递代理所认可的用户身份运行httpd服务器.本利中打开了httpd服务器的suexec功能,所以使用一下方法来实现虚拟主机运行身份的指定. <VirtualHost *:8081> ServerName mail.dtedugongbing.com DocumentRoot /var/www/extsuite/extmail/html/ ScriptAlias /extmail/cgi /var/www/ext

马哥linux高薪中级-POSTFIX邮件服务

第一章.概述 1.邮件服务通常使用什么协议? SMTP:简单邮件传输协议,只实现传输功能,没有索引.加密邮件功能. ESMTP,SMTP的升级版本,可以实现身份检测功能了. POP3::post office protocol 邮局协议 IMAP4:互联网访问协议 SASL:邮件认证协议 2.邮件服务的发展简史. 早期unix之间的通信协议是UUCP协议(unix to unix copy,主机间复制文件协议).后来出现了smtp,smtp具有路由功能,可以依据邮件的目的地址来通过邮件中继器进行

马哥linux高薪中级-POSTFIX邮件服务(二)

四.POSTFIX+CYRUS-SASL 结合实现用户身份认证 1.cyrus-SASL简介 Cyrus SASL介绍(翻译) 2.配置内容简介: postfix-->/var/lib/sasl2/smtpd.conf pwcheck_method : saslauthd math_list :PLAIN LOGIN 3.服务脚本:saslauthd 1.启动SASL 服务 /etc/init.d/saslauthd [[email protected] ~]# chkconfig --add

马哥linux高薪中级-POSTFIX邮件服务(三)

五.邮件服务器的虚拟域 简介 虚拟域功能类似于httpd的虚拟主机服务,同样支持一台物理主机服务器创建和支持多个虚拟域名,并为其提供邮件服务,实现此功能需要涉及到mydestination.mydomain.myorigin几个参数. 当一台服务器运行多个虚拟域的情况下,势必会给查询带来负担,这样就需要一个快速的检索数据库,常用的有hash.ladp.mysql等,hash我们在前面已经讲过了,就是通过postmap来生成需要的索引文件*.db.确定是不灵活,当账户信息文件需要经常变化的时候,就

马哥LINUX高薪LINUX高薪就业入门教程-虚拟机篇幅-学习笔记-11

课程名称:马哥Linux高薪就业入门-安装学习VMware Workstation9-1 课程主要内容:虚拟机安装及OS系统配置说明 虚拟机硬件配置: CPU,Memory,I/O(disk,Ethercard) 虚拟机关键字: 1.disk image file(磁盘映像文件) 2.Sparse(稀疏格式) 3.CPU超线程 虚拟机使用技巧: 1.虚拟机磁盘建议放置空间大,分区编号越小性能越好,对于不常用的文件就放到最外层的: 2.CPU一级缓存最高,二级缓存价格次之,一级缓存容量翻倍基本价格

马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)

马哥linux运维初级+中级+高级 视频教程 教学视频 全套下载(近50G)目录详情:18_02_ssl协议.openssl及创建私有CA18_03_OpenSSH服务及其相关应用09_01_磁盘及文件系统管理详解之三10_05_脚本编程之八 脚本完成磁盘分区格式化20_01_DNS主从复制及区域传送04_04_grep及正则表达式01_03_操作系统基础08_02_bash脚本编程之七 case语句及脚本选项进阶14_03_bash脚本编程之十一(Linux启动流程之三) SysV服务脚本01