Apache用户认证、域名跳转 、Apache访问日志

本文详细介绍Apache服务器的配置方法,包括用户认证、虚拟主机设置、URL重写规则及日志记录等核心功能。通过实例演示如何进行Apache的高级配置,如使用.htpasswd文件进行基本认证,利用Rewrite模块实现域名跳转和URL美化,以及调整日志记录格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apache用户认证

用户认证

修改虚拟主机配置文件

 /usr/local/apache2/conf/extra/httpd-vhosts.conf

在配置文件中加入如下配置:


#因为是针对目录,所以使用<Directory>,后面跟目录
<Directory  /data/wwwroot/111.com>
#表示开启认证
	AllowOverride AuthConfig
#提示信息,可自定义
	AuthName "111.com user"
#认证类型,使用Basic即可
	AuthType  Basic
#认证密码文件位置
	AuthUserFile  /data/wwwroot/.htpasswd
#指定需要认证的用户为全部可用用户
	require valid-user
</Directory>

增加配置文件

<Directory  /data/wwwroot/111.com>
     AllowOverride AuthConfig
     AuthName "111.com user"
     AuthType  Basic
     AuthUserFile  /data/wwwroot/.htpasswd
     require valid-user
</Directory>

创建用户密码文件

创建密码文件可以使用Apache自带的htpasswd命令

/usr/local/apache2.4/bin/htpasswd -c -m /data/wwwroot/.htpasswd  jiangshan
  • /data/wwwroot/.hrpasswd :文件路径
  • jiangshan :用户名
  • c:为了创建文件以及第一个用户,文件存在或创建第二个用户时不需要使用
  • m: 这里是列表文本m:表示密码使用MD5加密

检查、重载配置文件

[root@jiangshan~]# /usr/local/apache2.4/bin/apachectl  -t
Syntax OK
[root@jiangshan~]# /usr/local/apache2.4/bin/apachectl  graceful

curl测试

curl -x127.0.0.1 :80 -ujiangshan:844878355  -I aaa.com
curl使用-u跟用户:密码可以直接认证,状态码为200

####文件认证

修改虚拟主机配置文件

 /usr/local/apache2/conf/extra/httpd-vhosts.conf

在配置文件中加入如下配置:

#因为是针对文件,所以使用<FilesMatch>,后面跟文件
<Directory  /data/wwwroot/111.com>
#表示开启认证
	AllowOverride AuthConfig
#提示信息,可自定义
	AuthName "111.com user"
#认证类型,使用Basic即可
	AuthType  Basic
#认证密码文件位置
	AuthUserFile  /data/wwwroot/.htpasswd
#指定需要认证的用户为全部可用用户
	require valid-user
</Directory>

创建用户密码文件

/usr/local/apache2.4/bin/htpasswd  -m /data/wwwroot/.htpasswd  jiangshan

检查重载配置文件并测试

[root[@jiangshan](https://my.oschina.net/u/2359274) ~]# /usr/local/apache2.4/bin/apachectl  -t
Syntax OK
[root[@jiangshan](https://my.oschina.net/u/2359274) ~]# /usr/local/apache2.4/bin/apachectl  graceful

Apache使用\匹配目录,使用\匹配文件。但是,需要注意的是直接使用\的话,只能匹配网站根目录下的文件。如果需要匹配非根目录下的文件,有一下两种方法。

  • 直接使用\,后面个文件

  • 先使用\指定非根目录,再使用\匹配文件

域名跳转

Apache Rewrite的主要功能

  • 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等

2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接在httpd.conf下书写。配置步骤如下:

  • 去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewrite.so"前面的"#"号;
  • 然后再在httpd.conf中书写如下规则:
RewriteEngine on 
#当访问任何以t_开头,以.html结尾的文件时,将$1用与(.*)匹配的字符替换后,访问相应的test.php页面 
RewriteRule ^/t_(.*).html$ /test.php?id=$1 

另一种是针对apache服务器下的某一目录的配置,此种配置的Rewrite规则需在此目录下建立一个.htaccess文件来书写。配置步骤如下:

  • 去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewrite.so"前面的"#"号;
  • 修改httpd.conf文件中的"AllowOverride None"为"AllowOverride all",同时最好将Options也置为"all",否则可能会出问题。
  • 在目录中建立.htaccess文件,并用记事本打开,书写如下规则:
RewriteEngine on 
RewriteRule ^/t_(.*).html$ /test.php?id=$1 

Apache Rewrite规则的书写

RewriteEngine on 
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1 
RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R] 
RewriteEngine on 
#当我们访问的地址不是以www.163.com开头的,那么执行下一条规则 
RewriteCond %{HTTP_HOST} !^www.163.com [NC] 
RewriteRule ^/(.*) http://www.163.com/ [L] 

Apache Rewrite规则修正符

  • R 强制外部重定向
  • F 禁用URL,返回403HTTP状态码。
  • G 强制URL为GONE,返回410HTTP状态码。
  • P 强制使用代理转发。
  • L 表明当前规则是最后一条规则,停止分析以后规则的重写。
  • N 重新从第一条规则开始运行重写过程。
  • C 与下一条规则关联

如果规则匹配则正常处理,以下修正符无效

  • T=MIME-type(force MIME type) 强制MIME类型
  • NS 只用于不是内部子请求
  • NC 不区分大小写
  • QSA 追加请求字符串
  • NE 不在输出转义特殊字符 %3d$1 等价于 =$1
修改虚拟主机配置文件

虚拟主机配置文件

/usr/local/apache2/conf/extra/httpd-vhosts.conf

在对应的虚拟主机配置文件中加入

#使用mod_rewrite.c模块 <IfModule mod_rewrite.c> #表示模块引擎打开 RewriteEngine on #设置主域名,!表示取反,不是该域名的都执行下面的规则 RewriteCond %{HTTP_HOST} !^111.com$ #规则,设置跳转后域名与跳转状态 RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule>

检查mod_rewrite.c模块是否加载
检查是否加载

[root@jiangshan111.com]# /usr/local/apache2.4/bin/apachectl -M |grep "rewrite" rewrite_module (shared)


未加载如何解决

编辑Apache主配置文件httpd.conf,找到”rewrite_module“所在行,取消注释


检查重载配置文件

[root@allen1 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@allen1 111.com]# /usr/local/apache2.4/bin/apachectl graceful


- 使用curl测试,测试结果为301

- 301为永久跳转,302为临时跳转


### Apache访问日志

[资料](https://www.phpsong.com/339.html)

访问日志记录用户的每一个请求

vim /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined LogFormat "%h %l %u %t "%r" %>s %b" common

 把虚拟主机配置文件改成如下:

<VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com ServerAlias 123.com CustomLog "logs/123.com-access_log" combined </VirtualHost>

 重新加载配置文件 

-t,graceful

curl -x127.0.0.1:80 -I 123.com tail /usr/local/apache2.4/logs/123.com-access_log

###拓展
[apache虚拟主机开启php的短标签 ](http://www.aminglinux.com/bbs/thread-5370-1-1.html)

转载于:https://my.oschina.net/jiangshanlinux/blog/1498474

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值