您的当前位置:首页正文

如何配置Apache

2024-11-27 来源:个人技术集锦

1、什么是Apache

(1)世界使用最流行的Web服务器之一;

(2)可以在大多数计算机操作系统中运行;

(3)特点:简单、速度快、性能稳定,可做代理服务器;

(4)作用:在web访问时,定义的http://的协议方式(国内还有其他公司用的一些自主平台:京东(jfe);百度(nginx));

【注】可通过curl - I 域名 可查看一些域名的服务器类型

2、Apache的基本信息

用户:apache

服务名称:httpd

日志:/etc/httpd/logs

默认发布文件:index.html

默认端口:80(http);443(https)

3、Apache的安装和启用

3.1 安装的软件包: httpd.x86_64

3.2 Apache启用:systemctl start httpd

【注】若火墙中的http服务并未打开,则依旧无法访问。

           查看火墙信息:firewall-cmd --list-all

           查看可开启的服务:firewall-cmd --get-services

           永久开启http服务:firewall-cmd --permanent --add-service=htttp(https)

           刷新火墙设定,使设定生效:firewall-cmd --reload

4、Apache的基本配置

配置选项修改配置文件:/etc/httpd/conf/httpd.conf注意事项
端口修改Listen 8080

1. 此参数改变需要修改配置文件

2. 端口生效时需要selinux和火墙均允许此端口

firewall-cmd --permanent --add-port=8080/tcp

semanage port -l | grep http semanage port -a -t http_port_t -p tcp 8080

3. 修改完成后需要重启httpd服务

默认发布目录修改

DocumentRoot "/www/html"

<Directory "/www/html">      

  Require all granted

</Directory>

1.测试发布不成功可能会因为sselinuxs所设置的安全上下文有关,可进行如下设置:

semanange fcontext -a -t httpd_sys_content_t '/www(/.*)?'

restorecon -RvvF /www/

2. 修改完成后需要重启服务

默认发布文件修改DirectoryIndex index.html

【注】1. 查看当前http服务的端口号:netstat -antulpe | grep http

           2. index.html 文件内容为HTML语言,若读者有兴趣可自行学习,配置。

 

 

 

 

 

 

图 9 设置默认路径下的默认文件

 

图 10 访问默认路径下的结果

 

图 11 在默认路径下不存在默认文件

 

图 12 默认路径下不存在默认文件时的访问页面

 

5、Apache的访问控制

访问控制条件修改配置文件:/etc/httpd/conf/httpd.conf注意事项
基于客户端IP的访问

白名单:

<Directory "/var/www/html/westos">       

Order Deny,Allow       

Allow from 192.168.0.10       

Deny from All

</Directory>

1.根据order访问顺序可调整所跟的客户IP为黑名单或白名单

2. 这里只能进行IP的添加,不可用文件的形式进行传递

黑名单:

<Directory "/var/www/html/westos">      

Order Allow,Deny      

Allow from All       

Deny from 192.168.0.10

</Directory>
 

基于用户认证的访问

<Directory "/var/www/html/westos">       

AuthUserfile /etc/httpd/htpasswdfile 

AuthName "Please input your name and password"

AuthType basic

Require user admin  </Directory>

Require 后面所跟的参数可以限制用户的访问权限;

valid-user 允许所有用户通过认证

user username 允许对应的用户名可访问

生成认证文件:

htpasswd -cm /etc/httpd/htpasswdfile admin

若/etc/httpd/htpasswdfile存在,则添加用户时不要加-c参数否则会覆盖源文件内容

【注】在访问过程中,由于浏览器存在缓存,可能会影响实验想过,故在每次验证前,建议清楚浏览器的缓存。

图 13 设定ip访问方式的白名单
图 14 白名单访问结果

 

图 15 设定ip访问的黑名单

 

图16 黑名单下访问结果

 

 

图 17 设定用户访问权限

 

图 18 设定访问用户名单和密码

 

图 19 访问时根据要求输入用户及密码

 

图 20 当输入错误的用户或密码时,取消输入结果

6、Apache的虚拟主机服务

为了使不同的网页信息,在同一站点下,故可使用虚拟的主机服务,在同一站点下,给不同网页分配不同的配置也页,从而达到目的。

6.1 为了效果明显我们建立以下素材:

mkdir -p /var/www/test.com/{news,wenku}

echo "wenku's page" > /var/www/test.com/wenku/index.html

echo "news's page" > /var/www/test.com/news/index.html

echo "default's page" > /var/www/html/index.html

图 21 设置不同站的访问页面

6.2 虚拟站点的配置设置

(2)编写Virtualhost文件内容:

文件设置配置结果

<Virtualhost _default_:80>

    Documentroot "/var/www/html"

    Customlog logs/default.log combined

</Virtualhost>

配置默认登录界面

 

<Virtualhost *:80>

    Servername wenku.test.com

    Documentroot "/var/www/test.com/wenku"

    Customlog logs/wenku.logs combinded

</Virtualhost>

配置域名访问为wenku.test.com的页面

<VirtualHost *:80>

    ServerName news.test.com

    DocumentRoot "/var/www/test.com/news"

    CustomLog logs/news.log combined </VirtualHost>
 

配置域名访问为news.test.com的页面

【注】日志的存放路径在上述配置文件中写的是相对路径,因为路径在主配置文件中已经写过。

图 22 进行不同站点虚拟主机的配置

 

(3)内容测试:在客户主机中输入所要访问的IP,若需要通过域名访问,可在/etc/hosts的本地解析中添加解析:

图23 访问默认站点时

 

图24 访问wenku.tes.com

 

图 25 访问news.test.com

【例】192.168.1.10 www.test.com wenku.test.ocm news.test.com

图 26 设置本地解析地址

 

7、Apache支持的语言

默认HTML
常用php,cgi

HTML:可直接使用

【例】vim  /var/httpd/index.html(php的测试页)

                     <?php

                               phpinfo();

                     ?>

图 27 安装php语言支持包

 

图 28 编写php测试页

 

图 29 默认显示php测试界面

测试页(/var/www/html/cgidir)内容:

#!/usr/bin/perl

print "Content-type: text/html\n\n";

print `date`;

配置文件(/etc/httpd/conf.d/vhost.conf)内容:
 <Directory "/var/www/html/cgidir">

         Options +ExecCGI

         AddHandler cgi-script .cgi

</Directory>

图 30 编写cgi语言测试文件

 

图 31 cdi语言测试结果

8、Apache的加密访问

rhel7中,可以通过genkey,来直接生成证书;

【例】genkey IP(站点)

安装软件:mod_ssl.x86_64,crypto-utils

图 32 软件包的安装

 

图 33 证书基本信息阐述

 

图 34 选择证书加密大小

 

图 35 证书制作的过程

 

图 36 是否通过CA认证

 

图 37 编写证书基本信息

 

生成之后,可同伙https://进行访问,并查看证书。

rhel8中,需要通过openssl服务生成证书。

【例】采用工具openssl产生密钥,并对证书进行签密

(1)安装mod_ssl软件包;

(2)产生密钥:openssl genrsa -out /etc/pki/tls/private/www.test.com.key 2048(genrsa:以rsa的方式加密,-out:输出密钥到文件***,2048:加密长度);

(3)生成证书签密文件:openssl req -new -key /etc/pki/tls/private/www.test.com.key -out /etc/pki/tls/certs/www.test.com.csr(根据新的密产生证书);

图 38 生成密钥和证书

(4)证书生成:openssl x509 -req -days 365 -in /etc/pki/tls/certs/www.test.com.csr -signkey /etc/pki/tls/private/www.test.com.key -out /etc/pki/tls/certs/www.test.com.crt(-req:证书请求,-days:加密有效天数;-in:加载密签名称,-signkey:加密的密钥)

图 39 用x509对密钥用证书加密

(5)修改ssl.conf(对所有网页均生效):

SSLCertificateFile /etc/pki/tls/certs/www.test.com.crt

SSLCertificateKeyFile /etc/pki/tls/private/www.test.com.key

<VirtualHost *:443>

        ServerName login.test.com

        DocumentRoot "/www/test.com/login"

        CustomLog logs/login.log combined

        SSLEngine on

        SSLCertificateFile /etc/pki/tls/certs/www.test.com.crt

        SSLCertificateKeyFile /etc/pki/tls/private/www.test.com.key

</VirtualHost>

图 40 修改加密认证页面

【注】因为加密是443端口,所以需要设定端口为443;此时在访问特定页面时需要手动添加https的服务;

图 41 设定火墙服务

(7)将手动添加转化为自动转化

<VirtualHost *:80>

        ServerName login.test.com

        RewriteEngine on

        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1

</VirtualHost>

图 42 网页加密
图 43 查看加密证书为我们所设定的信息

9、Squid+Apache

(1)Squid正向代理(代理主机<翻墙>)

实验环境:设定单网卡主机不可上网;双网卡主机可以上网;

图 44 设定网络环境

步骤:

<1> 在双网卡主机中安装squid服务;

图 45 查看squid环境

<2>编辑squid的配置文件(/etc/squid/squid.conf):http_access allow all;cache_dir ufs /var/spoll/squid 100 16 256;

图 46 修改squid配置文件

<3>启动squide服务,设定火墙允许squid端口工作(firewall-cmd --add-port=3218/tcp)

图 47 修改火墙设定

<4>在当网卡主机中的浏览器中,选择NetWork Proxy;输入双网卡中可连接的主机IP和端口,即可在浏览器中上网。

图 48 修改浏览器访问方式

 

图 49 在单网卡主机测试

(2)Squid反向代理(缓存网页)

实验环境:在192.168.1.10 中安装Apace服务(交互界面);在192.168.1.200 中安装Squid (负责上网) ;

步骤:

图 50 设定squid为缓存器

<2>  重启squid服务:ystemctl restart squid;

<3> 在网页中访问192.168.1.100即可看到192.168.1.10的配置也页内容。

图 51 测试实验结果

 

显示全文