Http服务器

xiaoxiao2021-03-01  396

补充:

FQDN:(Fully Qualified Domain Name)完全合格域名/全称域名,是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。

从全域名中包含的信息可以看出主机在域名树中的位置。DNS解析流程:首先查找本机HOSTS表,有的直接使用表中定义,没有查找网络连接中设置的DNS 服务器由他来解析。

1、curl命令:文件传输工具

curl -I :向服务器发送一个head请求,响应报文首部信息 curl -I http://www.baidu.com

2、一次完整的http的请求过程:

(1)当用户在浏览器输入一个URL,且回车,会先进行DNS解析请求 (2)客户端拿到DNS解析请求返回的IP之后,去请对应的服务器站点的资源 (3)服务器端判断是否接受请求,如果接收请求,会对请求报文进行解析,分析请求报文的请求头信息,分析请求头的请求资源 (4)服务器端对请求头的请求资源进行解析之后,构建响应头和响应体,组合为响应报文 (5)服务端发送响应报文给客户端,服务端在本地记录http对应的日志信息 (6)客户端解析响应报文

3、http服务器文件:

主配置文件:/etc/httpd/conf/httpd.conf

每一次修改配置文件之后,可以使用http -t检查配置文件是否错误

服务脚本文件:/etc/rc.d/init.d/httpd

脚本配置文件:/etc/sysconfig/httpd

日志文件 /var/log/httpd:

access_log:访问日志

error_log:错误日志

站点文档:/var/www/html

4、http配置文件的详细讲解:

MPM机制:

当httpd启动时候,可以使用 ps aux | awk '/httpd$/{print $11}' 命令查看当前httpd是以哪一种机制运行的,如果是/usr/sbin/httpd,那么就是以prefork模式运行的,如果是/usr/sbin/httpd.worker,那么就是以worker模式运行的,如果是/usr/sbin/httpd.event,那么就是以event模式运行的。

定义中心主机:

指定DocumentRoot(这是中心主机的站点根目录,中心主机的根站点目录可以更换)

例如:DocumentRoot "/var/www/html"

可以修改为其他的路径:DocumentRoot "/app/www"

日志:

错误日志:

(1)指定错误日志的路径

ErrorLog /logs/httpd/httpd_error_log

(2)指定错误日志的记录级别

LogLevel warn

创建虚拟主机:

<Location /server-info> SetHandler server-info AuthType Basic AuthName "请求输入你的用户名和密码" AuthUserFile "/etc/httpd/conf/.htpasswd" Require user yhy </Location>


创建虚拟主机详解:

(一)虚拟主机的分类:

1:IP相同,但端口不同

2:IP不同,但端口均为默认端口

3:FQDN不同(在请求报文首部有一个Host:www.baidu.com,在解析请求报文的时候,可以从这里知道请求了哪个虚拟机)

(二)三种不同的实现方案

1:基于IP:为每一个虚拟主机配置一个IP地址,编辑/etc/httpd/conf.d/virtual_machine.conf文件,添加如下配置

<VirtualHost 192.168.6.205:80> ServerName www.taobao.com DocumentRoot "/app/www/taobao" </VirtualHost> <VirtualHost 192.168.6.209:80> ServerName www.tianmao.com DocumentRoot "/app/www/tianmao" </VirtualHost> <VirtualHost 192.168.6.210:80> ServerName www.jd.com DocumentRoot "/app/www/jd" </VirtualHost>

访问的时候通过主机名访问

2:基于PORT:为每一个虚拟主机配置一个独立的PORT

# 注意这里使用到的端口需要提前声明

Listen 800 Listen 8000 <VirtualHost 192.168.6.205:80> ServerName www.taobao.com DocumentRoot "/app/www/taobao" </VirtualHost> <VirtualHost 192.168.6.209:800> ServerName www.tianmao.com DocumentRoot "/app/www/tianmao" </VirtualHost> <VirtualHost 192.168.6.210:8000> ServerName www.jd.com DocumentRoot "/app/www/jd" </VirtualHost>

3:基于FQDN:为每一个虚拟主机配置一个独立的FQDN(虚拟主机不要与中心主机混用,如果要使用虚拟主机,要禁用中心主机。禁用中心主机的方法:注释中心主机的DocumentRoot指令即可 )

# 注意:这里的NameVirtualHost表示所有的虚拟主机监听在同一个IP和端口上,根据不同的FQDN来识别访问了哪个虚拟主机

NameVirtualHost 192.168.6.205:80 <VirtualHost 192.168.6.205:80> DocumentRoot "/app/www/taobao" </VirtualHost> <VirtualHost 192.168.6.205:80> ServerName www.tianmao.com DocumentRoot "/app/www/tianmao" </VirtualHost> <VirtualHost 192.168.6.205:80> ServerName www.jd.com DocumentRoot "/app/www/jd" </VirtualHost>

(三)虚拟主机配置方式

<VirtualHost *:80> DocumentRoot /app/www ServerName www.yhyblog.cn

# 除了以上两个指令,在虚拟主机中还可以有以下几个指令

ServerAlias :虚拟主机的别名,可多次使用

ErrorLog:自定义虚拟主机的错误日志

CustomLog:自定义虚拟主机的访问日志

<Directory "/app/www"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost>

示例配置如下:

<VirtualHost *:80> DocumentRoot /app/www ServerName www.uplooking.com ServerAlias www.yhyblog.cn ErrorLog /logs/uplooking_error_log CustomLog /logs/uplooking_access_log combined <Directory "/app/www"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost>

(四):每一个虚拟主机里面都可以指定错误路径连接和访问日志路径,和Directory访问控制机制

5、httpd安装:

(1)rpm包安装:

yum install -y httpd

(2)编译安装:

1、安装工具:

yum groupinstall -y "development tools" "server platform development" yum install -y pcre-devel

2、安装依赖包组:(centos6)

apr-1.5.2.tar、apr-util-1.5.4.tar、httpd-2.4.25.tar

1)解压三个包

2)编译安装apr-1.5.2.tar

tar xf apr-1.5.2.tar cd apr-1.5.2.tar ./configure --prefix=/usr/local/apr/ make && make install【只要是编译安装就必须进行这一步】

3)编译安装apr-util-1.5.4.tar

tar xf apr-util-1.5.4.tar cd apr-util-1.5.4 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make && make install

4)编译安装 httpd-2.4.25.tar

tar xf httpd-2.4.25.tar cd httpd-2.4.25/ ./configure --prefix=/usr/local/apache-2.4 --sysconfdir=/etc/httpd-2.4 --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-mpm=prefork make && make install

3、编译安装(centos7)

安装包组:

yum groupinstall -y "Development tools" "Server Platform Development"

安装依赖:

yum install pcre-devel apr-devel apr-util-devel openssl-devel

解压当地文件:

tar xf httpd-2.4.25.tar cd httpd-2.4.25

配置安装信息:

./configure --prefix=/usr/local/apache-2.4 --sysconfdir=/etc/httpd-2.4 --enable-so --enable-ssl --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-zlib --with-pcre --with-apr=/usr --with-apr-util=/usr --with-mpm=prefork

编译安装:

make && make install

制作软连接,便于版本控制:

ln -sv /usr/local/apache-2.4 /usr/local/apache

因为自带的Apache服务控制脚本:apachectl脚本在/usr/local/apache-2.4/bin/目录下,可以将这个目录添加到环境变量中,编辑 vi /etc/profile.d/httpd.sh , 添加export PATH=/usr/local/apache/bin/:$PATH,那么启动的时候,就可以直接使用apachectl start

vi /etc/profile.d/httpd.sh export PATH=/usr/local/apache/bin/:$PATH

vi /etc/profile.d/httpd.sh文件,添加如下代码

vi /etc/profile.d/httpd.sh export PATH=/usr/local/apache/bin/:$PATH . /etc/profile.d/httpd.sh

6、编译安装httpd(centos7)详解

主配置文件:/etc/httpd-2.4/httpd.conf

配置虚拟主机:

虚拟机基于IP的访问控制,位于<VirtualHost> </VirtualHost> 允许所有的主机访问: Require all granted 拒绝所有的主机访问: Require all deny 控制某特定的IP访问: Require ip IPADDR:授权指定的IP访问 Require not ip IPADDR:拒绝 控制特定的主机访问: Require host HOSHNAME:授权指定的来源的主句访问 Require not host HOSHNAME:拒绝

注意:如果允许所有的主机访问,但是拒绝192.168.10.2这台主机访问,要在<Directory>中加上一个容器,例如

<RequireAll> Require all granted Require not ip 192.168.10.2 </RequireAll>

(3)基于FQDN的虚拟主机不再需要NameVirtualHost指令

# www.a.com 虚拟机 <VirtualHost *:80> ServerName www.a.com DocumentRoot "/apps/www/a" <Directory "/apps/www/a"> Options None AllowOverride None Require all granted </Directory> </VirtualHost> # www.b.com 虚拟机 <VirtualHost *:80> ServerName www.b.com DocumentRoot "/apps/www/b" <Directory "/apps/www/b"> Options None AllowOverride None Require all granted </Directory> </VirtualHost>

千万注意:对于httpd-2.4版本来说,任意目录下的页面只有被显示授权才能被访问

转载请注明原文地址: https://www.6miu.com/read-3097151.html

最新回复(0)