安装
yum -y install httpd
相关文件目录
#主配置文件
/etc/httpd/conf/httpd.conf
#子配置文件
/etc/httpd/conf.d/*.conf
#模块路径、配置文件
/etc/httpd/modules
#httpd服务启动所需要加载的模块
/etc/httpd/conf.modules.d/*.conf
#存放PID文件,主进程ID
/etc/httpd/run
#日志目录
/var/log/httpd
#默认网页数据目录
/var/www/html
常用命令
#配置文件语法检查
httpd -t
#查看已加载模块
httpd -M
默认配置
ServerRoot "/etc/httpd" #指定httpd的工作目录
Listen 80 #监听80端口
Include conf.modules.d/*.conf #导入模块相关的配置文件
User apache #使用apache用户运行程序
Group apache #指定程序的用户组为apache
ServerAdmin root@localhost #指定管理员邮箱
ServerName www.example.com:80 #监听域名
<Directory /> #目录权限配置
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/html" #指定站点目录
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html"> #配置var/www/html目录权限
Options Indexes FollowSymLinks #Indexes:当该目录下没有 index.html 文件时,就显示目录结构。FollowSymLinks 决定是否可以通过符号连接跨越DocumentRoot。例如,尽管/ftp 不在/home/httpd/html 下面,但是我们仍然可以使用符号连接建立一个/home/httpd/html/ftp使得可以直接输入[http://mydomain.com/ftp](http://mydomain.com/ftp) 来访问这个目录。
AllowOverride None # 定义是否允许各个目录用目录中的.htaccess覆盖这里设定的Options。
Require all granted #允许所有请求
</Directory>
<IfModule dir_module> #判断模块是否已加载如果加载了就执行里面的内容 指定默认的网页
DirectoryIndex index.html
</IfModule>
<Files ".ht*"> #对访问文件进行配置
Require all denied #对这些文件进行权限设置,拒绝访问.ht开头的所有文件
</Files>
ErrorLog "logs/error_log" #错误日志文件
LogLevel warn #日志级别
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined #设置日志格式 combined是这个格式的名称
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined #要使用的日志格式
</IfModule>
<IfModule alias_module> #文档映射 有三种:Redirect外部重定向 Alias内部映射到其他位置 ScriptAlias脚本映射
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" #脚本路径映射
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8 #返回页面的编码
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf #导入子配置文件,使用 IncludeOptional 就算路径有错误也不会报错。
常用配置
网址重定向
cat /etc/httpd/conf.d/redirecttest.conf
#访问网站的/foo就会跳转到百度
<IfModule alias_module>
Redirect permanent /foo http://www.baidu.com
</IfModule>
将目录映射到其他位置
cat /etc/httpd/conf.d/aliastest.conf
<IfModule alias_module>
Alias /webpath /data/filesystem/image # 访问http://www.example.com/webpath 会访问到/data/filesystem/image目录下
</IfModule>
<Directory "/data/filesystem/image">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
多站点配置
cat /etc/httpd/conf.d/virthost.conf
<VirtualHost *:80> #虚拟主机位置可写ip,*代表所有ip
ServerName t1.test.com
DocumentRoot "/var/www/t1"
<Directory "/var/www/t1">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName t2.test.com
DocumentRoot "/var/www/t2"
<Directory "/var/www/t2">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
测试
[root@httpdtest conf.d]#curl -H 'host:t2.test.com' 127.0.0.1
t22222222
[root@httpdtest conf.d]#curl -H 'host:t1.test.com' 127.0.0.1
t1111111
Rewrite防盗链
<Directory "/var/www/t1">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://192.168.0.144/.*$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://192.168.0.144/other/nolink.png [R,NC,L] #R:跳转 NC:忽略大小写 L:如果匹配一次就不向后匹配
</Directory>
<Directory "/var/www/t1">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://192.168.0.144/.*$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ - [F] #强制禁止访问返回403
</Directory>
Rewrite域名跳转
<VirtualHost *:80>
ServerName t2.test.com
DocumentRoot "/var/www/t2"
<Directory "/var/www/t2">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^t2.test.com$
RewriteRule ^/(.*)$ https://baidu.com [R=301,L]
</VirtualHost>