一、 Web Service基础:
service:计算机后台提供的功能或计算机可以提供的某一种功能
Web Service本质:通过网络调用其它网站的资源
根据来源的不同,分为两种服务:
本地服务:使用同一台机器提供的服务,不需要网络
网络服务:使用另一台机器提供的服务,需要网络
IANA互联网地址授权机构(Internet Assigned Numbers Authority):
负责对IP地址分配规划以及对TCP/UDP公共服务的端口定义
BSD Socket
是IPC(进程间通信)的一种实现,允许位于不同主机上不同进程之间进行通信
Socket API封装了内核中的socket通信相关的系统调用
(1)根据传输层协议分类
SOCK_STREAM::tcp套接字
SOCK_DGRAM::UDP套接字
SOCK_RAW:raw裸套接字
(2)根据套接字所使用的地址格式 Socket Domain
AF_INET(Address Family):IPv4的地址
AF_INET6:ipv6的地址
AF_UNIX:同一主机上不同进程之间通信使用
TCP/UDP特点
TCP(Transmission Control Protocol):传输控制协议
UDP(User Datagram Protocol):用户数据报协议
TCP特点:
面向连接的协议
TCP是可靠的
TCP会依序排序数据包,不管数据包到达的先后顺序
可以通过三次握手实现流量控制
因为有三次握手所以TCP传输速度慢
TCP是重量级的
TCP要建立连接、保证可靠性和有序性,就会传输更多信息,所以包头大
TCP协议的头结构 |
|||||
来源端口(2字节) |
目的端口(2字节) |
||||
序号(4字节) |
确认序号(4字节) |
||||
头长度(4位) |
保留(6位) |
||||
URG |
ACK |
PSH |
RST |
SYN |
PIN |
窗口大小(2字节) |
校验和(16位) |
||||
紧急指针(16位) |
选项(可选) |
||||
数据 |
UDP特点:
无连接协议
UDP是不可靠的
UDP对数据包的接受是不做管理(无序)
UDP没有流量控制
相对于TCP,UDP传输速度较快
UDP是轻量级的
UDP包头小
UDP协议的头结构 |
|
源端口(2字节) |
目的端口(2字节) |
封报长度(2字节) |
校验和(2字节) |
数据 |
TCP和UDP主要区别如下:
TCP:是面向连接的、可靠地、有序的、速度慢的协议;头部比UDP大;无界有拥塞控制
基于TCP的协议:HTTP/HTTPS Telnet FTP SMTP
UDP是无连接的、不可靠的、无序的、速度快的协议;有界无拥塞控制
基于UDP的协议:DHCP DNS SNMP TFTP BOOTP
TCP协议的特性:
建立连接:三次握手
将数据打包成段:校验和(CRC-32)
确认、重传及超时
排序:基于逻辑序号实现
流量控制:滑动窗口算法
拥塞控制:慢启动和拥塞避免算法
二、 HTTP协议
http(hyper text transfer protocol)超文本传输协议 应用层协议
html(Hyper Text Mark Language)超文本标记语言
一种用于创建网页的标准标记语言
HTML语法示例:
<html> <head> <title>TITLE</title> </head> <body> <h1></h1> <p> ...... <a href="http://www.rookie.com/index.html"> ...... </a> </p> <h2> </h2> </body> </html>
HTTP协议:
超文本传输协议是一种通信协议,允许将超文本标记语言文档从Web服务器传输到客户端的浏览器。
http协议版本
HTTP0.9:原型版本,只能传输文本文件
HTTP1.0:支持MIME机制、cache支持、method(请求方法)
HTTP1.1:增强了缓存功能
HTTP2.0:大大提升了性能
工作模式:一次http事务===>请求<==>响应
一次请求和一次HTTP响应的通信过程就是一次完成的http事务
http请求报文:http request
http响应报文: http response
URL(Uniform Resource Locator)统一资源定位符
是因特网上标准的资源的地址;用于描述服务器某特定资源的位置
URL标准格式:协议类型://服务器地址(必要时需加上端口号)/路径/文件名
Scheme(协议)://Server(服务器)[:Port](端口)[/PATH/TO/SOME_RESOURCE](路径、文件)
例如 http://www.sina.com.cn/index.html
Web资源:web resource
静态资源:原始形式与响应内容一致,无需服务端做出额外处理
.jpg .png .gif .html txt .js .css .mp3 .avi
动态资源:服务端需要通过执行程序做出处理,发送给客户端的事程序的运行结果
.php .jsp
注意:一个网页中展示的资源可能有多个,每个资源都需要单独请求,Web页面通常是一组资源的集合。
一次完整的http请求处理过程:
1.建立连接—— 接受一个客户端连接,如果如果不希望与这个客户端建立连接,就直接关闭
2.接收请求—— 从网络中读取一条HTTP 请求报文
3.处理请求—— 对请求报文进行解析,并且采取相应的行动
4.访问资源—— 发起系统调用,访问报文中指定的资源
5.构建响应报文并发送响应报文—— 创建带有正确首部的HTTP 响应报文
6.记录日志,分析用户行为—— 将与已完成事务有关的内容记录在一个日志文件中
并发访问响应模型:
单进程I/O模型:启动一个进程处理用户请求,一次只能处理一个请求,多个请求被串行响应
多进程I/O结构:由父进程并行启动多个子进程,每个子进程响应一个请求
复用的I/O结构:一个进程响应n个请求
多线程模式:一个进程生成n个线程,一个线程处理一个请求
事件驱动(event-driven):一个进程直接处理n个请求
复用的多进程I/O结构:启动多个(m)个进程,每个进程生成(n)个线程
响应的请求的数量:m*n
Web Server请求处理:分析请求报文的HTTP首部
HTTP协议
http请求报文首部
http响应报文首部
请求报文首部的格式
<method><URL><VERSION>
HEADERS (name:value)
<request body> 请求的主体部分
访问资源:获取请求报文中请求的资源
web服务器,即存放了web资源的主机,负责向请求者提供对方请求的静态资源,或动态资源运行生成的结果
Docroot:存放静态资源或者动态资源的本地文件系统路径
web 服务器的资源路径映射方式:
1.Docroot
2.alias
3.虚拟主机的Docroot
4.用户家目录的Docroot111111111
例:http://www.rookie.com/rookie.jpg
Apache 配置文件中定义了根目录/var/www/html/
在此目录下存放rookie.jpg
http请求处理中的连接模式:
保持连接(长连接) keep-alive
避免过多的连接保持,可以从时间和数量两个维度对长连接加以限制
非保持连接(短连接)
对于大量并发的场景中,短连接的三次握手四次挥手占据了大量带宽
常用Http 服务器程序
Httpd (Apache)
Nginx
Lighttpd
应用程序服务器
不仅能处理静态资源,还能处理动态资源
IIS: .Net 程序
Tomcat:. jsp 程序
Httpd 的特性
高度模块化:核心模块+ 功能模块
DSO dynamic share object 动态装卸载
MPM:多路处理模块机制(Multipath processing Modules) )
Prefork: 多进程模型,每个进程响应一个请求
一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理
n个子进程:每个子进程处理一个请求
工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求;最大空闲和最小空闲
Worker: 多进程多线程模型,每线程处理一个用户请求
一个主进程:负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理
多个子进程:每个子进程负责生成多个线程
每个线程:负责响应用户请求
并发响应数量:m*n
m:子进程数量
n:每个子进程所能创建的最大线程数量
Event :事件驱动模型,多进程模型,每个进程响应多个请求
一个主进程 :负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理
子进程:基于事件驱动机制直接响应多个请求
在httpd-2.2中仍为测试使用模型
在httpd-2.4中event可生产环境中使用
Httpd 程序版本
1.3:停止维护
2.0
2.2 :CentOS 6 默认版本,event仍为测试使用模型
2.4 :CentOS 7 默认版本,event可生产环境中使用
Httpd 功能特性
CGI :Common Gateway Interface(公共网关接口)
虚拟主机:基于IP ,基于端口,基于FQDN
反向代理
负载均衡
路径别名
丰富的用户认证机制
Basic
Digest
支持扩展的第三方模块
CentOS 6:httpd-2.2
程序环境:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服务脚本:/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd
主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日志文件:
/var/log/httpd:
access_log:访问日志
error_log:错误日志
站点文档:/var/www/html
模块文件路径:/usr/lib64/httpd/modules
服务控制和启动:
chkconfig httpd on|off
service {start|stop|restart|status|configtest|reload} httpd
CentOS 7:httpd-2.4
程序环境:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf
systemd unit file:
/usr/lib/systemd/system/httpd.service
主程序文件:
/usr/sbin/httpd
httpd-2.4支持MPM的动态切换;
日志文件:
/var/log/httpd:
access_log:访问日志
error_log:错误日志
站点文档:/var/www/html
模块文件路径:/usr/lib64/httpd/modules
服务控制和启动:
systemctl enable|disable httpd.service
systemctl {start|stop|restart|status} httpd.service
Httpd 2.2 配置文件
主配置文件:/etc/httpd/conf/httpd.conf
###Section 1:Global Environment
###Section 2:’Main’ Server configuration (默认)
###Section 3:Virtual Hosts
配置格式
指令行:指令 Directive:value
Directive:不区分字符大小写,但是字符首位应该大写
Value:作为路径时候,是否区分字符大小写,取决于文件系统
常用配置:
1、修改监听的IP和PORT
Listen [IP-address:]portnumber [protocol]
(1) 省略IP表示为0.0.0.0
(2) Listen指令可重复出现多次
Listen 80
Listen 8080
(3) 修改监听socket,重启服务进程方可生效
(4) 限制其必须通过ssl通信时,protocol需要定义为https
2、持久连接的概念
Persistent Connection,TCP 连接建立后, 每个资源获取完成后不会断开连接,继续进行其他资源请求的进行,同时为了避免大量的连接被占据,可以从数量和时间上两个维度进行限制。Httpd 2.4 支持毫秒级别的限制。
副作用:对并发访问量较大的服务器,长连接机制会使后续某些请求无法得到正常响应
折衷:使用较短的持久连接时长,以及较少的请求数量
三个参数
KeepAlive On|Off
KeepAliveTimeout 15
MaxKeepAliveRequests 100
3、MPM
MPM的基本概念和模型:prefork woker event
httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用的那个;CentOS 6的rpm包为此专门提供了三个应用程序文件,httpd(prefork), httpd.worker, httpd.event,分别用于实现对不同的MPM机制的支持。
默认使用的为/usr/sbin/httpd,其为prefork的MPM模块
查看httpd 程序的模块列表:
查看静态编译的模块:httpd -l
查看静态编译及动态编译的模块:httpd -M
更换使用httpd程序,以支持其它MPM机制
/etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.{worker,event}
注意:重启服务进程方可生效
MPM配置:
条件式配置,prefork 和worker分别对应不同的配置区段
Prefork 模式
<IfModule prefork.c> StartServers 8 服务器进程启动时候启动多少空闲进程 MinSpareServers 5 最少空闲进程数,如果少于5 ,主控进程再启动几个达到5 MaxSpareServers 20 最大空闲进程数,如果大于20 主控进程对子进程进行回收 ServerLimit 256 所允许启动的最大在线进程数量 MaxClients 256 最大允许启动进程数量响应用户请求(最大并发响应数) MaxRequestsPerChild 4000每个进程最多可以处理多少个请求,超过4000 销毁 </IfModule>
worker模式
<IfModule worker.c> StartServers 4 服务器进程启动时候启动多少空闲进程 MaxClients 300 最大并发响应数300 MinSpareThreads 25 最小空闲线程数25 MaxSpareThreads 75 最大空闲线程数75 ThreadsPerChild 25 每个进程启动25 个线程 MaxRequestsPerChild 0 每个进程可以处理无限个请求 </IfModule>
4、DSO
配置指定实现模块加载
LoadModule <mod_name> <mod_path>
模块文件路径可使用相对路径:
相对于ServerRoot(默认/etc/httpd)
5、定义中心主机Main Server的文档页面路径
ServerName
语法格式: ServerName [scheme://]fully-qualified-domain-name[:port]
DocumentRoot “”
文档路径映射:
DoucmentRoot指向的路径为URL路径的起始位置
其相当于站点URL的根路径
URL PATH与FileSystem PATH不是等同的,而是存在一种映射关系
URL / –> FileSystem /var/www/html/
/images/logo.jpg –> /var/www/html/images/logo.jpg
6、站点访问控制常见机制
可基于两种机制指明对哪些资源进行何种访问控制
文件系统路径
<Directory “/var/html/www”>
……
</Directory> // 对目录下所有资源实现访问控制
<File “ ”>
….
</File> // 对单个文件实现访问控制
<FileMatch “PATTERN”>
…
</FileMatch> // 使用正则表达式模式匹配进行访问控制
注意:正则表达式要启用正则表达式引擎,效率会降低很多
基于URL 路径
<Location “ ”>
…
</Locaion>
<LocationMatch “ ”>
</LocationMatch>
7、定义站点主页面
DirectoryIndex index.html index.html.var
当请求的资源不存在的时候 http服务器会有两种处理结果
1.返回404或者403
2.将当前网页目录下内容全部列出来
8、定义路径别名
定义一个DocumentRoot “/data/www/”
网站访问 http://www.rookie.com/download/test.html
对应文件存放目录应该是 /data/www/download/test.html
定义一个目录别名
Alias /download/ “/rpms/pub”
此时访问
http://www.rookie.com/download/test.html
对应的文件存放目录应该是/rpms/pub/test.html
9、设定默认字符集
AddDefaultCharset UTF-8
三种常见的中文字符集格式 GBK GB2312 GB18030
10、日志设定
日志类型:访问日志和错误日志
错误日志
定义 ErrorLog logs/error_log
/etc/httpd/conf/httpd.conf指定,相对目录(/etc/httpd/下)
错误日志级别
debug, 所有信息,只要产生就全部记录下来
info, 所有的信息数据
notice, 引起注意
warn, 警告
error, 发生错误
crit, 级别很严重
alert, 红色警戒
emerg. 引起恐慌
访问日志:
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
CustomLog logs/access_log combined
LogFormat format strings:
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
%h:客户端IP地址
%l:Remote User, 通常为一个减号(“–”)
%u:Remote user (from auth; may be bogus if return status (%s) is 401);非为登录访问时,其为一个减号
%t:服务器收到请求时的时间
%r:First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本
%>s:响应状态码
%b:响应报文的大小,单位是字节;不包括响应报文的http首部;
%{Referer}i:请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的
%{User-Agent}i:请求报文中首部“User-Agent”的值;即发出请求的应用程序
11、基于用户的访问控制
常见的用户认证方式:
http协议自身提供的认证(明文,抓包即可获取密码)–>basic 明文认证
表单认证–>digest消息摘要认证
认证质询:
www-authenticate
响应码为401,拒绝客户端请求,并说明要求客户端提供账号密码
Authorization
客户端用户填入账号密码后再次发送请求报文,认证通过时,则服务器发送响应的资源
安全域,需要用户认证后方能访问的路径。应该通过名称对其进行标示,以便于告知用户认证的原因
用户账号密码存放位置
虚拟账号:仅用于访问某服务时候用到的认证标识
存储:文件文件、SQL数据库、LDAP 轻量级目录访问协议
Basic认证配置步骤
(1)定义安全域
<Directory “ ”> Options None AllowOverride None AuthType Basic AuthName “String” AuthUserFile “/PATH/TO/HTTPD_USER_PASSWD_FILE” # AuthGroupFile “/PATH/TO/HTTPD_GROUP_FILE” #基于组来认证 Require user username1 username2... # Require group grpname1 grpname2 ... </Directory >
(2)账号和密码存储(文本文件)
使用命令完成密码文件的创建和用户管理
12、虚拟主机
通常情况下,一个服务器上只能跑一个网站,或者说一个进程只能跑一个网站。虚拟主机实现了一台机器上或者一个Web服务上为多个网站提供服务。
站点标示:Socket
IP相同,端口不同,易于实现,不实用
IP不同,端口均为默认端口,不实用,需要多个IP,成本很高
IP相同,端口相同,FQDN不同,在请求报文首部实现
虚拟主机的实现方式
基于IP为每个虚拟主机至少准备一个IP地址
基于port为每个虚拟主机至少一个独立的port
基于FQDN每个虚拟主机至少一个FQDN
虚拟主机的配置
注释DocumentRoot指令,禁用Main主机
配置语法
<VirtualHost IP:PORT> ServerName FQDN DocumentRoot “ “ //站点路径 </VirtualHost>
可用指令
ServerAlias 虚拟主机的别名,可多次使用
Errorlog 专用的错误日志
CustomLog 专用的自定义日志
<Directory “ ”>
…
</Directory> 对资源做访问控制
基于IP的虚拟主机示例:
<VirtualHost 172.16.100.6:80> ServerName www.a.com DocumentRoot "/www/a.com/htdocs" </VirtualHost> <VirtualHost 172.16.100.7:80> ServerName www.b.net DocumentRoot "/www/b.net/htdocs" </VirtualHost> <VirtualHost 172.16.100.8:80> ServerName www.c.org DocumentRoot "/www/c.org/htdocs" </VirtualHost>
基于端口的虚拟主机:
<VirtualHost 172.16.100.6:80> ServerName www.a.com DocumentRoot "/www/a.com/htdocs" </VirtualHost> <VirtualHost 172.16.100.6:808> ServerName www.b.net DocumentRoot "/www/b.net/htdocs" </VirtualHost> <VirtualHost 172.16.100.6:8080> ServerName www.c.org DocumentRoot "/www/c.org/htdocs" </VirtualHost>
基于FQDN的虚拟主机:
<VirtualHost 172.16.100.6:80> ServerName www.a.com DocumentRoot "/www/a.com/htdocs" </VirtualHost> <VirtualHost 172.16.100.6:80> ServerName www.b.net DocumentRoot "/www/b.net/htdocs" </VirtualHost> <VirtualHost 172.16.100.6:80> ServerName www.c.org DocumentRoot "/www/c.org/htdocs" </VirtualHost>
注意:如果是httpd-2.2,则使用基于FQDN的虚拟主机时,需要事先使用如下指令:
NameVirtualHost IP:PORT
13、status页面
Httpd状态页面开启 /etc/httpd/conf/httpd.conf开启status模块
启动状态访问页面:
httpd-2.2 <Location /server-status> SetHandler server-status Order allow,deny Allow from 172.16 </Location>
httpd-2.4 <Location /server-status> SetHandler server-status <RequireAll> Require ip 172.16 </RequireAll> </Location>
关于上述理论所做验证如下:
[root@localhost ~]#systemctl start httpd.service 在浏览器输入本机IP地址,显示欢迎页
此欢迎页基于/etc/httpd/conf.d中的welcome.conf 如不需欢迎页,可将welcome.conf改名,并重启服务 [root@localhost ~]#cd /etc/httpd/conf.d/ [root@localhost /etc/httpd/conf.d]#mv welcome.conf{,.bak} [root@localhost /etc/httpd/conf.d]#systemctl restart httpd.service [root@localhost /etc/httpd/conf.d]#cp /etc/issue /var/www/html/
如想访问8080端口,修改/etc/httpd/conf/http.conf文件中Listen即可
[root@localhost /etc/httpd/conf]#ss -tnl
添加端口配置
[root@localhost /etc/httpd/conf]#vim /etc/httpd/conf.d/port.conf
[root@localhost /etc/httpd/conf]#!sys systemctl restart httpd.service [root@localhost /etc/httpd/conf]#!ss
如果不想用此端口,将此文件删除即可 [root@localhost /etc/httpd/conf]#rm -f ../conf.d/port.conf [root@localhost /etc/httpd/conf]#!sys systemctl restart httpd.service [root@localhost /etc/httpd/conf]#!ss (可以看到10000端口已经被删除)
在没有主页情况下会显示默认页,添加主页后会显示主页
[root@localhost ~]#systemctl restart httpd.service
[root@localhost ~]#yum install -y telnet [root@localhost ~]#telnet 172.16.250.149 80 Trying 172.16.250.149... Connected to 172.16.250.149. Escape character is '^]'.
[root@localhost ~]#systemctl restart httpd.service [root@localhost ~]#telnet 172.16.250.149 Trying 172.16.250.149... root@localhost ~]#vim /etc/httpd/conf.d/keepalive.conf KeepAlive Off KeepAliveTimeout 30 MaxKeepAliveRequests 100
MPM
httpd2.2 CentOS6
[root@Rookie ~]#service httpd restart 停止 httpd: [确定] 正在启动 httpd:httpd.worker: apr_sockaddr_info_get() failed for Rookie.CN httpd.worker: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [确定] [root@Rookie ~]#ps aux root 2771 0.0 0.2 186264 4124 ? Ss 02:19 0:00 /usr/sbin/httpd.worker apache 2774 0.0 0.2 530524 5396 ? Sl 02:19 0:00 /usr/sbin/httpd.worker apache 2775 0.0 0.2 530524 5416 ? Sl 02:19 0:00 /usr/sbin/httpd.worker apache 2782 0.0 0.2 530524 5420 ? Sl 02:19 0:00 /usr/sbin/httpd.worker [root@Rookie ~]#vim /etc/sysconfig/httpd
[root@Rookie ~]#service httpd restart 停止 httpd: [确定] 正在启动 httpd:httpd.event: apr_sockaddr_info_get() failed for Rookie.CN httpd.event: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [确定] [root@Rookie ~]#ps aux root 2927 0.5 0.2 186200 4112 ? Ss 02:23 0:00 /usr/sbin/httpd.event apache 2930 0.0 0.2 530460 5384 ? Sl 02:23 0:00 /usr/sbin/httpd.event apache 2931 0.0 0.2 530460 5404 ? Sl 02:23 0:00 /usr/sbin/httpd.event apache 2932 0.0 0.2 530460 5388 ? Sl 02:23 0:00 /usr/sbin/httpd.event
http2.4 CentOS7 [root@localhost ~]#vim /etc/httpd/conf.modules.d/00-mpm.conf
[root@localhost ~]#systemctl restart httpd.service [root@localhost ~]#ps aux
DOS CentOS7
定义‘Main’ server的文档页面路径
更改服务器名称 CentOS6 [root@Rookie ~]#vim /etc/hosts
[root@Rookie ~]#service httpd restart
[root@Rookie ~]#service httpd restart
DocumentRoot
[root@localhost ~]#mkdir /data/web/www/ -pv
[root@localhost ~]#vim /etc/httpd/conf/httpd.conf
[root@localhost ~]#systemctl restart httpd.service
站点访问控制(准许) httpd2.4 CentOS7
[root@localhost ~]#vim /etc/httpd/conf/httpd.conf
[root@localhost ~]#systemctl restart httpd.service
httpd2.2 CentOS6 [root@Rookie ~]#mkdir /data/html -pv
[root@Rookie ~]#vim /etc/httpd/conf/httpd.conf
[root@Rookie ~]#service httpd restart
order和allow、deny 2.2 CentOS6
只准许172.16.0.125网段访问
开放172.16网段,屏蔽172.16.0.125
[root@Rookie ~]#service httpd reload 重新载入 httpd:
2.4 CentOS7 [root@localhost ~]#vim /etc/httpd/conf/httpd.conf
[root@localhost ~]#systemctl restart httpd.service
[root@localhost /etc/httpd/conf]#mkdir /data/web/www/images [root@localhost /etc/httpd/conf]#find /usr/share/ -iname "*.jpg" -exec cp {} /data/web/www/images/ \; 将/usr/share/下所有找到的图片放到/data/web/www/images/下 [root@localhost /etc/httpd/conf]#vim httpd.conf
[root@localhost /etc/httpd/conf]#systemctl restart httpd.service
[root@localhost /etc/httpd/conf]#systemctl restart httpd.service
[root@localhost /etc/httpd/conf]#vim httpd.conf
[root@localhost /etc/httpd/conf]#systemctl restart httpd.service
定义站点主页面
[root@localhost ~]#systemctl restart httpd.service
定义路径别名 httpd2.4
[root@localhost ~]#vim /etc/httpd/conf/httpd.conf
[root@localhost ~]#systemctl restart httpd.service
将Alias注释掉
日志设定
[root@localhost ~]#tail /var/log/httpd/error_log
访问日志
[root@localhost /etc/httpd/conf]#vim httpd.conf
基于用户的访问控制
[root@localhost /etc/httpd/conf]#htpasswd -c /tmp/test.users zhang New password: Re-type new password: Adding password for user zhang [root@localhost /etc/httpd/conf]#cat /tmp/test.users zhang:$apr1$MqD2EyV0$tFQ4IUw.V.e3EnGPolI5E/ [root@localhost /etc/httpd/conf]#htpasswd /tmp/test.users wang New password: Re-type new password: Adding password for user wang [root@localhost /etc/httpd/conf]#cat /tmp/test.users zhang:$apr1$MqD2EyV0$tFQ4IUw.V.e3EnGPolI5E/ wang:$apr1$d1AFoDa6$U8AwV4qan80HbN5hsdpKd0
只准许wang zhang 两个用户登录
[root@localhost /etc/httpd/conf]#!sys
准许所有合法用户登录
[root@localhost /etc/httpd/conf]#!sys systemctl restart httpd.service
创建用户账号和组账号文件,用户名为之前账号文件所包含的账号
基于IP的虚拟主机示例:
172.16.253.193 ilinux
172.16.253.199 iunix
[root@localhost ~]#systemctl httpd restart
基于端口的虚拟主机:
基于FQDN的虚拟主机:
注意:如果是httpd-2.2,则使用基于FQDN的虚拟主机时,
需要事先使用如下指令:NameVirtualHost IP:PORT
status页面
[root@localhost ~]#!sys systemctl restart httpd.service
原创文章,作者:Linux.rookie,如若转载,请注明出处:http://www.178linux.com/77806