Linux服务之httpd基本配置详解

一、基本介绍

1、版本

httpd-1.3

httpd-2.0

httpd-2.2

httpd-2.4

目前为止最新的版本是httpd-2.4.6,但是这里我用的是系统自带的RPM包安装的httpd-2.2.15版本的,最新版本配置可能会有所不同

2、模型:

高度模块化:DSO

MPM:Multipath Processing Module #多处理模块

prefork:一次一个进程响应一个请求

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

event:基于事件驱动,一个进程响应多个请求

3、安装

这里就直接rpm包安装了,光盘上就有软件包

yum install httpd

4、httpd安装完后的基本信息

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

运行目录:/etc/httpd/

配置文件:/etc/httpd/conf

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

扩展配置:/etc/httpd/conf.d/*.conf

socket:http:80/tcp,https:443/tcp

网页文件目录(DocumentRoot):/var/www/html

CGI:/var/www/cgi-bin/

默认主页面文件:/var/www/html/index.html

5、主配置文件结构

全局配置:对主服务器或虚拟主机都有效,且有些功能是服务器自身工作属性;

主服务器配置:主站属性

虚拟服务器:虚拟主机及属性定义

6、测试配置和查看的命令

所使用的

service httpd configtest #测试配置文件有没有语法错误

httpd -t #同上

httpd -l #当前服务器所使用的模型及开启模块

httpd -D DUMP_MODULES #当前服务器支持的模块

service httpd reload #重新加载配置文件

service httpd restart #重启httpd服务

注意:修改配置文件后要重新加载配置文件,修改服务器监听端口后要重启服务

二、基本配置

温馨提示:配置httpd的工作属性时,指令不区分大小写,但有约定俗成的习惯:单词的首字母大写;指令的值很有可能区分大小写;有些指令可以重复使用多次;

1、配置监听的端口:

Listen [IP:]PORT

例如:Listen 172.16.3.1:80

2、配置所选用的MPM的属性

安装完默认使用prefork模型

StartServers 8 #服务启动后默认开启的进程数

MinSpareServers 5 #最少空闲进程数

MaxSpareServers 20 #最多空闲进程数

ServerLimit 256 #每个进程允许开启最多的子进程数

MaxClients 256 #每个进程最多用户链接数

MaxRequestsPerChild 4000 #长连接时每个用户最多请求数

worker模型:要支持worker模型需要配置/etc/sysconfig/httpd,开启以下行:

HTTPD=/usr/sbin/httpd.worker

StartServers 4 #服务启动默认开启的进程数

MaxClients 300 #最多同时客户连接数

MinSpareThreads 25 #最少空闲进程数

MaxSpareThreads 75 #最好空闲进程数

ThreadsPerChild 25 #每个进程开启的线程数

MaxRequestsPerChild 0

3、配置服务器支持keep-alived(长连接)

KeepAlive {On|Off} #是否支持长连接

KeepAliveTimeout 2 #长连接超时时间

MaxKeepAliveRequests 50 #超时时间内允许请求的次数

4、配置加载模块

# 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

5、配置网站根目录

DocumentRoot "/var/www/html" #指定网站的主目录

#容器内定义站点的访问权限

#容器内限定用户的访问方法

6、配置页面文件的访问属性

Options

Indexes #是否允许索引页面文件,建议关闭

FollowSymLinks #是否跟随软连接文件

SymLinksifOwnerMatch #跟随符号链接,只允许访问运行apache的用户有属主权限的文件

ExecCGI: #是否允许执行CGI脚本;

All

None

7、基于客户端访问控制

系统默认允许所有人访问

Order #定义allow和deny那个为默认法则;写在后面的为默认法则:写在前面的指令没有显示定义的即受后面的指令控制:

Order allow,deny

Allow from all #所有人可以访问

配置允许172.16.0.0/16访问,但不允许172.16.3.1访问

Order allow,deny

Deny from 172.16.3.1 #禁用一个IP访问

Allow from 172.16.0.0/16 #允许一个网段访问

8、userdir个人站点

# UserDir is disabled by default since it can confirm the presence

# of a username on the system (depending on home directory

# permissions).

#

#UserDir disabled #注释此项

#

# To enable requests to /~user/ to serve the user's public_html

# directory, remove the "UserDir disabled" line above, and uncomment

# the following line instead:

#

UserDir public_html #开启此项

重新加载配置文件后用:http://HOST/~username/

例如:http://172.16.3.1/~centos/

9、定义默认主页

1DirectoryIndex index.php index.jsp index.html

10、配置日志功能

日志有两类:访问日志(格式自定义)、错误日志

错误日志:

ErrorLog "/path/to/error_log_file"

访问日志:

CustomLog "/path/to/custom_log_file" logformat

日志格式:{combined|common|agent}

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

%h #主机名

%l #

%u #用户名

%t #请求到达的时间

%r #请求报文的起始行,方法

%s #

%b #响应报文的大小

%{Foobar}i #显示从发那个站点跳转过来

%{User-Agent}i #用户代理

11、支持的字符集

1AddDefaultCharset UTF-8

12、路径别名

可以隐藏网站的真实目录,

Alias /test/ "/www/test/" #配置别名

#可以给别名目录定义访问权限

Options None

AllowOverride None

Order allow,deny

Allow from 172.16.0.0/16

13、脚本路径别名

调用服务器上的脚本程序,但不希望脚本放在网站的目录下

ScriptAlias /cgi-bin/ "/www/cgi-bin/" #定义cgi脚本路径别名

# vi /wwww/cgi-bin/test.sh #写一个测试脚本

#!/bin/bash

#cat << EOF

Content-Type:text/html

#这里要有一个空行否则可能会测试不成功

The hostname is: `hostname`. #输出当前系统的主机名 The timeis: `date`. #显示时间

EOF

测试:显示的是脚本执行后的结果

14、基于用户访问控制

当你的网站或者站点的某个路径只想让你授权的用户访问时,就可以使用基于用户的访问控制

这里使用htpasswd命令建立用户帐号文件

htpasswd

-c #第一次使用-c创建新文件,不是第一次不要使用此选项

-m #用户密码使用MD5加密后存放

-s #用户密码使用SHA加密后存放

-p #用户密码不加密

-d #禁用一个账户

-e #启用一个账户

例如:

# htpasswd -c -m /etc/httpd/conf/.htpass tom

命令 选项 生成的用户文件路径及文件名 用户名

# htpasswd -m /etc/httpd/conf/.htpass jerry

# 再次添加用户时就不要使用-c选项了,否则会覆盖之前内容先生成

(1)建立用户帐号文件

# htpasswd -c -m /etc/httpd/conf/.htpass tom

(2)修改主配置文件

# vi /etc/httpd/conf/httpd.con

DocumentRoot "/www/html" #此时网站根目录就是/www/html

Optins Indexes

AllowOverride AuthConfig

AuthName "Oaly for employees." #登录提示信息,可自定义

AuthType Basic #认证方式

AuthUserFile /etc/httpd/conf/.htpass #用户帐号文件

Require valid-user #允许的用户

Require 指定可以访问的用户,可以指定单个用户,直接写用户名就可以了,用户名可以写多个用空格分开,也可以指定所有用户就用 valid-user

15、配置虚拟主机

(1)注释主服务器,添加虚拟主机

# DocumentRoot "/www/html" #注释主服务器

NameVirtualHost 172.16.3.1:80 #开启虚拟主机

DocumentRoot /www/web1 #虚拟主机的网站根目录

ServerName web1.lyd.com #主机名

DocumentRoot /www/web2

ServerName web2.lyd.com

(2)给虚拟主机提供测试文件

mkdir /www/web{1,2}

echo web1.lyd.com > /www/web1/index.html

echo web2.lyd.com > /www/web2/index.html

(3)配置完后用 httpd -t 测试配置文件有没有错误

(4)重启服务 service httpd restart

(5)验证,修改验证客户端的hosts文件,

windows客户端

开始-->运行-->输入"c:\windows\system32\drivers\etc\hosts"用记事本打开并添加以下行

172.16.3.1web1.lyd.com

172.16.3.1web2.lyd.com

16、配置支持https

(1)安装httpd支持ssl模块

yum install mod_ssl -y

(2)自建CA

#cd /etc/pki/CA

# (umask 077; openssl genrsa -out private/cakey.pem 2048)

#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

(3)生成私钥

cd /etc/httpd/conf/

mkdir ssl

cd ssl

(umask 077; openssl genrsa -out httpd.key 1024)

(4)生成证书申请

1openssl req -new -key httpd.key -out httpd.csr

(5)ca签署证书

1openssl ca -in httpd.csr -out httpd.crt -days 365

(6)修改httpd的ssl配置文件

vi /etc/httpd/conf.d/ssl.conf

DocumentRoot "/www/web1"

ServerName www.lyd.com

SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key

(7)将ca证书导入到客户端可信任证书服务器,并验证

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装Apache服务器及其主要配置文件指令及含义 安装Apache服务器可以使用操作系统自带的包管理器进行安装,或者从Apache官网下载源代码编译安装。以下以CentOS系统为例: ```bash # 使用yum安装Apache sudo yum install httpd # 安装完成后,启动Apache服务 sudo systemctl start httpd # 检查Apache服务是否启动成功 sudo systemctl status httpd # 停止Apache服务 sudo systemctl stop httpd ``` 主要配置文件及其含义: - httpd.conf:Apache的主配置文件,包含全局配置和主服务器配置。 - httpd-vhosts.conf:虚拟主机配置文件,用于配置多个虚拟主机。 - httpd.conf和httpd-vhosts.conf的默认位置在CentOS系统中为/etc/httpd/conf/。 2. 配置Apache服务器、启动Apache服务器、设置httpd.conf文件的全局环境,设置httpd.conf文件的主服务器环境,并测试从其他主机登录该服务器 - 配置Apache服务器:可以通过修改httpd.conf文件来进行配置,常见的配置包括端口号、日志路径、文档根目录等。 - 启动Apache服务器:使用systemctl命令启动Apache服务。 - 设置httpd.conf文件的全局环境:在httpd.conf文件中可以设置全局的配置,例如ServerRoot、Listen、User、Group等。 - 设置httpd.conf文件的主服务器环境:在httpd.conf文件中可以设置主服务器配置,例如DocumentRoot、DirectoryIndex、ErrorLog、CustomLog等。 - 测试从其他主机登录该服务器:在其他主机上使用浏览器访问Apache服务器的IP地址或域名即可测试。 以下是一些常见的httpd.conf配置示例: ```apache # 设置Apache运行的用户和组 User apache Group apache # 设置Apache监听的端口号 Listen 80 # 设置Apache的根目录 ServerRoot "/etc/httpd" # 设置Apache的日志路径 ErrorLog "logs/error_log" CustomLog "logs/access_log" combined # 设置主服务器 ServerAdmin [email protected] DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> ``` 3. 利用Apache创建一个虚拟主机站点,要求配置主机IP地址为192.168.200.1,站点根目录为/var/www/myhttpd,使用IP地址和域名都能访问到该站点 在httpd-vhosts.conf文件中添加以下内容: ```apache <VirtualHost 192.168.200.1:80> ServerAdmin [email protected] DocumentRoot /var/www/myhttpd ServerName 192.168.200.1 ServerAlias example.com ErrorLog /var/log/httpd/myhttpd-error_log CustomLog /var/log/httpd/myhttpd-access_log common <Directory "/var/www/myhttpd"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> ``` 然后将域名解析到192.168.200.1,即可通过IP地址和域名都能访问到该站点。 4. 创建一个带有密码验证的Web站点,设定用户名为user1,密码为123456,并尝试用 在Apache的主服务器配置中添加以下内容: ```apache # 设置密码文件的路径 AuthUserFile /etc/httpd/.htpasswd # 设置密码验证的类型和名称 AuthType Basic AuthName "Restricted Content" # 限制访问的目录 <Directory "/var/www/html/protected"> AuthUserFile /etc/httpd/.htpasswd AuthType Basic AuthName "Restricted Content" Require valid-user </Directory> ``` 然后使用htpasswd命令生成密码文件: ```bash sudo htpasswd -c /etc/httpd/.htpasswd user1 ``` 输入密码后,即可创建一个带有密码验证的Web站点。访问该站点时,需要输入用户名和密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值