当前位置: 首页 > 工具软件 > Apache Tcl > 使用案例 >

apache

宗项禹
2023-12-01

我们经常要浏览网页,提供这样的服务是apache。提供apache服务的软件是httpd服务。

​Apache支持許多特性,大部分通过编译的模块实现。這些特性從伺服器端的程式語言支援到身份認證方案。一些通用的语言接口支持Perl,Python,Tcl和PHP。流行的认证模块包括mod_access,mod_auth和mod_digest。其他的例子有SSL和TLS支持(mod_ssl),代理服务器(proxy)模块,很有用的URL重写(由mod_rewrite实现),定制日志文件(mod_log_config),以及过滤支持(mod_include和mod_ext_filter)。Apache日志可以通过网页浏览器使用免费的脚本AWStats或Visitors来进行分析。

​apache的服务配置是非常有讲究的,我们首先来提供服务,包括Perl、Python、PHP。最后在提供服务的基础上要实现它的安全性。

基本配置:
yum install httpd -y
vim /etc/httpd/conf/httpd.conf

Listen 80                  
##监听端口

Include conf.modules.d/*.conf    
##加载的配置文件

User apache
Group apache
##启动服务后转换的身份,在启动服务时通常以root身份,然后转换身份,这样增加系统安全

ServerAdmin root@localhost
##管理员的邮箱

<Directory />
    AllowOverride none
    Require all denied
</Directory>
##对根目录的一个权限的设置

DocumentRoot "/ppp/html"   ##网页文件存放的目录

<Directory "/ppp/html">
#    Require all granted
    AuthUserFile /etc/httpd/conf/authfile  
    AuthName "write your host and password" 
    AuthType basic
    Require valid-user        
#   Require User ppp1
</Directory>
##参数解释:
AuthName:认证描述,填写的内容会出现在认证窗口的提示信息中。
AuthType:认证类型,在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几种认证类型,如:MD5。
AuthUserFile:指定一个包含用户名和密码的文本文件,每行对应一个用户。
AuthGroupFile:指定包含用户组清单和这些组的成员清单的文本文件。组的成员之间用空格分开,如:managers:user1 user2。
require:指定哪些用户或组才能被授权访问,如:
require user user1 user2 (只有用户user1和user2可以访问)
require group managers (只有组managers中成员可以访问)
require valid-user (在AuthUserFile指定的文件中任何用户都可以访问)

<IfModule dir_module>
    DirectoryIndex ppp.html index.html   ##默认Web站点
</IfModule>

<Files ".ht*">
    Require all denied
</Files>
##控制不让web上的用户来查看.htpasswd和.htaccess这两个文件

IncludeOptional conf.d/*.conf

关闭防火墙;或者开启允许httpd服务通过(之前的博客有写)
cd /var/www/html/
若selinux开启,则进行下面配置
[root@localhost ~]# ls -ldZ
dr-xr-x—. root root system_u:object_r:admin_home_t:s0 .
[root@localhost ~]# ls -dlZ /var/www/html/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
semanage fcontext -a -t httpd_sys_content_t ‘/ppp(/.*)?’
restorecon -RvvF /ppp/

添加证书:

cd /etc/httpd/conf
htpasswd -cm authfile ppp1 -p
htpasswd -m authfile ppp2 -p -c create
##第一次创建要加上-c,第二次不能加,不然密码会被覆盖

cat authfile

ppp2:$apr1$CyPmzo8h$JaJ.Y6S0RoshO3GahnwwX1
ppp1:$apr1$EbN8ovIl$tWG.aP4Bue6P6no4uoW41

一台服务器上浏览不同网页:
添加虚拟主机,虚拟主机不能与Main Server主服务器共存,当启用了虚拟主机之后,Main Server就不能使用了
[root@localhost conf]# mkdir /var/www/ppp/abc.ppp.com -p
[root@localhost conf]# mkdir /var/www/ppp/game.ppp.com -p
[root@localhost conf]# vim /var/www/ppp/game.ppp.com/index.html

<h1>game</h1>

[root@localhost conf]# vim /var/www/ppp/abc.ppp.com/index.html

<h1>abc</h1>

cd /etc/httpd/conf.d/
vim default.conf

<VirtualHost _default_:80>
    DocumentRoot "/var/www/html"
    CustomLog "logs/default.log" combined 
    ServerName www.ppp.com
</VirtualHost>

vim abc.conf

ualHost *:80>
    ServerName abc.ppp.com
    DocumentRoot /var/www/ppp/abc.ppp.com
    CustomLog "logs/abc.log" combined 
</VirtualHost>
<Directory "/var/www/ppp/abc.ppp.com">
    Require all granted
</Directory>

vim game.conf

ualHost *:80>
    ServerName game.ppp.com
    DocumentRoot /var/www/ppp/game.ppp.com
    CustomLog "logs/game.log" combined 
</VirtualHost>
<Directory "/var/www/ppp/game.ppp.com">
    Require all granted
</Directory>

systemctl restart httpd.service

在浏览器浏览的主机上
vim /etc/hosts
添加IP 和 域名

https

yum install mod_ssl.x86_64 -y

会在/etc/httpd/conf.d下生成ssl.conf文件;netstat -anptle | grep http可以看到443端口开启

yum install crypto-utils.x86_64 -y ##证书模块
genkey www.ppp.com ##创建证书
cd /etc/httpd/conf.d
vim ssl.conf

SSLCertificateFile /etc/pki/tls/certs/www.ppp.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.ppp.com.key
###修改刚才创建的证书和key

systemctl restart httpd.service

就可以通过证书进行访问了,访问的目录默认是/var/www/html下的文件
那么如何修改默认目录,访问到指定文件?

mkdir /var/www/ppp/login.ppp.com -p
vim /var/www/ppp/login.ppp.com/index.html

<h1>login!!!!</h1>

cp news.conf login.conf 此时还在/etc/httpd/conf.d下
vim login.conf

<VirtualHost *:443>
        ServerName  login.ppp.com
        DocumentRoot "/p/login.ppp.com"
        CustomLog  "logs/login.log" combined ##生成的日志文件合并
        SSLEngine on   
        SSLCertificateFile /etc/pki/tls/certs/www.ppp.com.crt
        SSLCertificateKeyFile /etc/pki/tls/private/www.ppp.com.key
</VirtualHost>
<Directory "/p/login.ppp.com">
        Require all granted
</Directory>

systemctl restart httpd.service
这样访问网页就可以看到‘login!!!’
一般都是输入网址直接跳转到https认证,怎么完成?
vim login.conf

<Virtualhost *:80>
        ServerName login.ppp.com
        RewriteEngine on  ##更换引擎
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</Virtualhost>

添加上面几行即可,之后重起服务

^ (/.*)$ 客户主机在地址栏中写入的所有字符,不包含换行符
https://   定向成访问的协议
%{HTTP_HOST} 客户请求主机
$1 表示^ (/.*)$的值
[redirect=301] 临时重定向 302 永久重定向

apache除了html还可以用php cgi python ; jsp,asp需要用中间件tomcat jboss

 类似资料: