设为首页 收藏本站
查看: 1424|回复: 0

[经验分享] Linux web服务与HTTP协议基础概念

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-17 08:38:24 | 显示全部楼层 |阅读模式
  今天我们来说一下Web服务器当中的apache,在早些时候基本算是Web服务器市场占有率最高的一款开源Web服务器产品,其功能众多、稳定且开源,使得apache非常流行。下面我们来讲一下Web相关的知识及httpd的部分应用

一、Web相关知识
1、URI与URL
URI: Uniform Resource Indentifier,统一资源标示符。全局范围内,可以唯一引用某一个独立资源的命名方式被称为统一资源标示符;统一是指路径格式上的统一。
URL:Uniform Resource Locator,统一资源定位符,用于描述在互联网上,互联网资源的统一表示格式,是URI的子集。表示格式为protocol://HOST:port/path/to/file

2、Web资源(对象)
能通过URL唯一标记,并且能被客户端访问的资源被称为Web资源,也可称为Web对象,如http://www.baidu.com/logo.gif;多个资源很可能被整合为一个html文档

3、HTTP Method
  • HEAD
  • GET
  • PUT
  • POST
  • DELETE
  • TRACE
  • OPTIONS
  • CONNECTION


4、MIME
Multipurpose Internet Mail Extension, 多用途互联网邮件扩展,即将非文本数据在传输前重新编码为文本格式,接收方能够用相反的方式将其重新还原为原来的格式,还能够调用相应的程序来打开此文件

5、MVC
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

6、请求报文与相应报文
(1)、请求报文语法
1
2
3
4
5
6
7
8
9
10
11
12
<method> <request-URL> <version>
<headers>

<entity-body>

例如:

GET / HTTP/1.1
Accept:text/css,*/*;q=0.1
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Host:httpd.apache.org



(2)、响应报文语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<version> <status> <reason-phrase>
<headers>

<entity-body>

例如:

HTTP/1.1 200 OK
Accept-Ranges:bytes
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:1106
Content-Type:text/css
Date:Wed, 16 Dec 2015 11:11:13 GMT
ETag:"e20-4d6aa6c1982c8-gzip"
Keep-Alive:timeout=30, max=96
Last-Modified:Wed, 27 Feb 2013 01:09:13 GMT
Server:Apache/2.4.7 (Ubuntu)
Vary:Accept-Encoding

上面两个报文的第一行通常称作报文“起始行(start line)”;
后面的标签格式的内容称作首部域(Header field),每个首部域都由名称(name)和值(value)组成,中间用逗号分隔。
另外,响应报文通常还有一个称作Body的信息主体,即响应给客户端的内容。




7、HTTP状态码
    ①1xx: 纯信息类
    ②2xx: “成功”类的信息 (200, 201, 202)
    ③3xx:重定向类的信息 (301, 302, 304)
    ④4xx: 客户端错误类的信息 (404)
    ⑤5xx:服务器端错误类的信息

8、Web服务器的主要操作
    ①建立连接——接受或拒绝客户端连接请求
    ②接收请求——通过网络读取HTTP请求报文
    ③处理请求——解析请求报文并做出相应的动作
    ④访问资源——访问请求报文中相关的资源
    ⑤构建响应——使用正确的首部生成HTTP响应报文
    ⑥发送响应——向客户端发送生成的响应报文
    ⑦记录日志——当已经完成的HTTP事务记录进日志文件

9、http/1.1
增强了缓存的功能
长连接:keep-alive


10、MPM:Multi-Processing Modules
①mpm_winnt:windowsNT专用

②prefork (一个请求用一个进程响应,启动多个进程)
1
2
3
4
5
6
7
8
<IfModule prefork.c>
StartServers       8                 # 服务启动时所启动的httpd进程个数
MinSpareServers    5                  # 服务运行过程当中最小保持的空闲进程数
MaxSpareServers   20                   # 服务运行过程当中最大保持的空闲进程数
ServerLimit      256                 # 指定MaxClients上限
MaxClients       256                 # 服务运行过程中最多允许的用户同时请求连接数
MaxRequestsPerChild  4000              # 服务运行过程中每个进程最多允许处理的用户请求数
</IfModule>



③worker  (一个请求用一个线程响应, (启动多个进程,每个进程生成多个线程))
1
2
3
4
5
6
7
8
<IfModule worker.c>
StartServers         4     # 服务启动时所启动的httpd进程个数
MaxClients         300     # 服务运行过程中最多允许的用户同时请求连接数
MinSpareThreads     25       # 服务运行过程中最小保持的空闲线程数
MaxSpareThreads     75       # 服务运行过程中最大保持的空闲线程数
ThreadsPerChild     25       # 每个进程生成的线程个数
MaxRequestsPerChild  0        # 每个进程最多允许处理的用户请求数(为0,因为是线程处理用户请求,并不是进程)
</IfModule>



④event   (一个进程处理多个请求)

11、httpd
-V:查看httpd服务版本以及编译的参数
-l:显示编译进httpd的模块列表,但是不会显示使用LoadModules加载的动态模块
-M:显示加载的静态和动态模块
-t:检查配置文件是否有语法错误


12、基于用户或组访问控制
(1)、允许用户访问
1
2
3
4
5
6
7
8
9
10
AllowOverride AuthConfig

AuthType Basic
AuthName "Personal area..."
AuthUserFile "/etc/httpd/conf/.htpasswd"
Require valid-user

touch /etc/httpd/conf/.htpasswd
htpasswd -c -m /etc/httpd/conf/.htpasswd tom
htpasswd -m /etc/httpd/conf/.htpasswd hadoop



(2)、允许用户组访问
1
2
3
4
5
6
7
8
9
10
11
12
13
14
AllowOverride AuthConfig

AuthType Basic
AuthName "Personal area..."
AuthUserFile "/etc/httpd/conf/.htpasswd"
AuthGroupFile "/etc/httpd/conf/.htgroup"
Require group groupname

touch /etc/httpd/conf/.htpasswd
touch /etc/httpd/conf/.htgroup
htpasswd -c -m /etc/httpd/conf/.htpasswd tom
htpasswd -m /etc/httpd/conf/.htpasswd hadoop

/etc/httpd/conf/.htgroup格式:groupname:user1 user2 ...



13、基于ip的访问控制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
AllowOverride none
Order Deny,Allow
Deny from 172.16.1.100

地址表示方法
IP:172.16.1.110

network/netmask:172.16.1.110/16

Host:www.soysauce.com
  
domain name:soysauce.com

Partial IP:172.16(172.16.0.0/16)



14、用户个人家目录站点
1
2
3
4
5
6
7
8
9
10
11
注释 UserDir disabled
启用 UserDir public_html

useradd hadoop
su - hadoop
mkdir public_html
echo "hadoop's personal site" >> public_html/index.html
chmod o+x /home/hadoop
exit

service httpd restart



15、PV与UV
PV(Page View):每天的页面访问量
UV(User View):每天的独立IP访问量

16、路径别名
1
2
3
4
5
Alias /URL "local_path"

例如:Alias /images/  "/tmp/test"

http://172.16.1.102/images/ 就等于是访问tmp/test目录下的文档



17、虚拟主机配置
(1)、基于IP的虚拟主机配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<VirtualHost 172.16.1.110:80>
    ServerName www.a.com
    DocumentRoot "/data/www/a.com"
    CustomLog "/var/log/httpd/a.com/access_log"
    ErrorLog "/var/log/httpd/a.com/error_log"
    <Directory "/data/www/a.com">
        Options none
        AllowOverride none
        Order Deny,Allow
        Allow From all
    </Directory>
</VirtualHost>

<VirtualHost 172.16.1.111:80>
    ServerName www.b.net
    DocumentRoot "/data/www/b.net"
    CustomLog "/var/log/httpd/b.net/access_log"
    ErrorLog "/var/log/httpd/b.net/error_log"
    <Directory "/data/www/b.net">
        Options none
        AllowOverride none
        Order Deny,Allow
        Allow From all
    </Directory>
</VirtualHost>



(2)、基于端口的虚拟主机配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<VirtualHost 172.16.1.110:80>
    ServerName www.a.com
    DocumentRoot "/data/www/a.com"
    CustomLog "/var/log/httpd/a.com/access_log"
    ErrorLog "/var/log/httpd/a.com/error_log"
    <Directory "/data/www/a.com">
        Options none
        AllowOverride none
        Order Deny,Allow
        Allow From all
    </Directory>
</VirtualHost>

<VirtualHost 172.16.1.110:8080>
    ServerName www.c.edu
    DocumentRoot "/data/www/c.edu"
    CustomLog "/var/log/httpd/c.edu/access_log"
    ErrorLog "/var/log/httpd/c.edu/error_log"
    <Directory "/data/www/c.edu">
        Options none
        AllowOverride none
        Order Deny,Allow
        Allow From all
    </Directory>
</VirtualHost>



(3)、基于主机名的虚拟主机配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
DNS解析能正确的解析两个主机名到自己的IP地址上
/etc/hosts
172.16.1.103    www.b.net
172.16.1.103    www.d.org
  
NameVirtualHost 172.16.1.111:80

<VirtualHost 172.16.1.111:80>
    ServerName www.b.net
    DocumentRoot "/data/www/b.net"
    CustomLog "/var/log/httpd/b.net/access_log"
    ErrorLog "/var/log/httpd/b.net/error_log"
    <Directory "/data/www/b.net">
        Options none
        AllowOverride none
        Order Deny,Allow
        Allow From all
    </Directory>
</VirtualHost>

<VirtualHost 172.16.1.111:80>
    ServerName www.d.org
    DocumentRoot "/data/www/d.org"
    CustomLog "/var/log/httpd/d.org/access_log"
    ErrorLog "/var/log/httpd/d.org/error_log"
    <Directory "/data/www/d.org">
        Options none
        AllowOverride none
        Order Deny,Allow
        Allow From all
    </Directory>
</VirtualHost>



18、默认虚拟主机配置
1
2
3
4
5
6
7
8
9
<VirtualHost _default_:80>
DocumentRoot /www/default80
# ...
</VirtualHost>

<VirtualHost _default_:*>
DocumentRoot /www/default
# ...
</VirtualHost>



19、server-status配置
1
2
3
4
5
6
7
8
9
10
<Loacation /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 172.16.1.102
</Location>

<Location> 指令用于定义url

<Directory> 指令用于本地文件系统路径



20、CGI脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
修改主配置文件httpd.conf
启用 LoadModule cgi_module modules/mod_cgi.so
  ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
   
在/var/www/cgi-bin目录下创建一个脚本test
#!/bin/bash
cat << EOF
Content-Type:text/html
<pre>
<h1>$(/bin/date)</h1>
</pre>
EOF

然后增加执行权限 chmod +x test



21、apache与php结合的方式
    ①CGI
    ②Module
    ③FastCGI




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-152246-1-1.html 上篇帖子: Linux 基于openssl的https服务配置 下篇帖子: Centos7利用光盘制作YUM源 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表