前言
一、Apache的作用
Apache HTTP Server(简称Apache,音译为阿帕奇)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。 在web被访问时通常使用http://(超文本传输协议)的方式。
二、Apache的安装及启用
实验环境: 配置两台可以互相通信的主机 172.25.30.30 172.25.30.130 搭建好网络仓库,安装Apache,火墙设置。
dnf install httpd -y
systemctl enable --now http #开启服务并设定服务开机启动
firewall-cmd --permanent --add-service=http #在火墙中永久开启http访问
firewall-cmd --reload #刷新火墙使设定生效
firewall-cmd --list-all #查看火墙信息
systemctl restart httpd
三、Apache的基本信息
服务名称:httpd
配置文件: /etc/httpd/conf/httpd.conf (主配置文件) /etc/httpd/conf.d/*.conf (子配置文件)
默认发布目录: //var/www/html
默认发布文件: index.html
默认端口:80(http) 443 (https)
用户:apache 日志: /etc/httpd/logs
四、Apache的基本配置
1.端口修改
进入主配置文件,修改端口为8080,添加端口到火墙,重启服务。
vim /etc/httpd/conf/httpd.conf
修改之后,建议改回80,避免影响后续实验。 重启httpd服务比较慢的情况下,可以进行地址解析/etc/hosts。
2.默认发布文件
在默认发布目录/var/www/html下新建发布文件内容,进入主配置文件,默认发布文件为index.html 添加新文件westos.html(在主配置文件中可以存在两个发布文件,在前面的为默认发布文件,即westos.html为默认发布文件),重启服务后,可以在浏览器访问到westos.html中内容。
vim /etc/httpd/conf/httpd.conf
3.默认发布目录
[root@hahaha ~]# mkdir /westos_apache ##新建发布目录
[root@hahaha ~]# vim /westos_apache/index.html ##编辑发布目录文件
[root@hahaha ~]# cat /westos_apache/index.html
westos_apache
[root@hahaha ~]# semanage fcontext -a -t httpd_sys_content_t '/westos_apache(/.*)?' ##修改安全上下文
[root@hahaha ~]# restorecon -RvvF /westos_apache/ ##读取安全上下文
Relabeled /westos_apache from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
Relabeled /westos_apache/index.html from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
[root@hahaha ~]#vim /etc/httpd/conf/httpd.conf
[root@hahaha ~]# systemctl restart httpd
六、Apache的访问控制
实验素材:
1.基于客户端ip的访问控制
ip白名单 拒绝除了130所有人访问
ip黑名单
注释去掉
2.基于用户认证的访问控制(用户名和密码)
切换到/etc/httpd设定允许访问的用户和密码,第二个用户创建时加-c参数否则会覆盖源文件内容。
<Directory "/var/www/html/westos">
AuthUserFile /etc/httpd/.htpasswd ##指定认证文件
AuthName "Please input username and passwd" ##认证提示语
AuthType basic ##认证类型
Require user admin ##允许通过的认证用户 2选1
Require valid-user ##允许所有用户通过认证 2选1
htpasswd -cm /etc/httpd/htpasswdfile admin ##生成认证文件
#admin1用户访问失败
注: 使用Shift+Ctrl+Delete清理浏览器历史记录和缓存,才能使用新用户登录。 使用admin1登陆会弹出新的登陆框提醒重新输入 配置文件里允许.htpasswd里的所有用户访问,再次使用admin1用户可以登陆。
七、Apache的虚拟主机
创建多层目录,将内容分别导入发布目录中。 编辑子配置文件
在浏览器所在主机上编写域名解析文件,在哪打开浏览器就在哪里解析域名. vim /etc/hosts 访问成功
八、Apache的语言支持
apche支持的三种语言: html(默认)php cgi
1.wsgi
在浏览器所在主机编辑域名解析文件/etc/hosts
2.php
3.cgi
./index.cgi ##查看命令是否可以运行
##此时浏览器打不开cgi/index.cgi,只能看见源代码,因为不能被识别
如果确认无错,检查selinux,更改为permissive
九、Apache的加密访问
我们在访问浏览器如www.taobao.com时,页面会自动跳转以https方式进行访问,https服务相比于http多了加密功能,其服务页面基本都具有登录入口。一般来说,用户用浏览器访问服务器时,会在自己的客户主机中输入用户名和密码,输入完成后通过网络传输给服务器进行验证。为了保证用户名和密码的安全性,在传输前浏览器会对用户名和密码等传输数据使用一些技术手段进行加密,同时为了保证传输数据的不可伪造性,还会生成相应的证书;当服务器接收到客户主机传输来的数据后会先对用户证书进行校验,校验通过后使用服务器内部存储的私钥对用户的加密数据进行解密,进行用户验证。
安装加密插件mod_ssl,这一插件为Apache提供了证书、密钥生成、校验等功能,插件安装完成后可以看到httpd服务子配置文件目录/etc/httpd/conf.d下多出了ssl的配置文件,接着重启httpd服务,此时Apache拥有了SSL加密组件.
在防火墙中永久开启https访问,重启火墙,此时在浏览器中访问https://172.25.30.130弹出安全警告页面
浏览器警告该网页证书未通过CA机构验证,接受风险继续访问,点击网址前的锁的标志查看该网页默认证书的详细信息,可以看到证书中多处信息未知。
创建/etc/httpd/tls,通过命令重新生成密钥和证书:发送请求,新建密钥文件并使用rsa对其进行加密,输出密钥文件到/etc/httpd/tls;生成证书文件,其格式为x509,证书有效期为365天,输出证书文件到/etc/httpd/tls/westos.org.crt
需要输入内容分别为国家、省、市、机构名称、单位名称、域名,邮箱
mkdir /etc/httpd/tls
openssl req --newkey rsa:2048 -nodes -sha256 -keyout /etc/httpd/tls/westos.org.key -x509 -days 365 -out /etc/httpd/tls/westos.org.crt ##证书设定
///
依次输入: CN-->Shaanxi-->Xi'an-->WESTOS-->Linux-->www.westos.org-->admin@westos.org
///
**注释:**
############
-req ##请求 x509 ##证书格式
--newkey rsa:2048 -nodes ##生成私钥
-sha256 -keyout /etc/httpd/tls/westos.org.key ##生成证书签名文件
-x509 -days 365 -out /etc/httpd/tls/westos.org.crt ##生成证书
############
在/etc/httpd/tls中查看生成的密钥和认证,在httpd的共享位置/var/www目录中建立login目录,在该目录下编写其发布文件index.html,编写虚拟主机配置文件件/etc/httpd/vhost.conf如下,重启httpd服务
ls /etc/httpd/tls/
mkdir /var/www/vhost/westos.org/login
vim /var/www/vhost/westos.org/login/index.html
///
login.westos.org
///
vim /etc/httpd/conf.d/vhosts.conf
///
<VirtualHost *:443>
ServerName login.westos.org
DocumentRoot /var/www/vhost/westos.org/login
Customlog logs/login.log combined
SSLEngine on
SSLCertificateFile /etc/httpd/tls/westos.org.crt
SSLCertificateKeyFile /etc/httpd/tls/westos.org.key
</VirtualHost>
///
systemctl restart httpd
注释
############
^(/.*)$ ##客户地址栏中输入的地址
%{HTTP_HOST} ##客户主机
$1 ##RewriteRule后面根的第一串字符的值
############
做域名解析在可以做访问浏览器的主机 vim /etc/hosts
172.25.30.130 www.westos.org music.westos.org news.westos.org map.westos.org wsgi.westos.org login.westos.org
十、Squid+Apache
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid主要设计用于在Unix一类系统运行。除了HTTP外,对于FTP与HTTPS的支援也相当好,在3.0 测试版中也支援了IPv6。 1、squid正向代理 实验环境: westosa–客户端,不能上网 westosb–代理主机,可以连接westosa,设定可以上网 通过网络软件仓库下载软件时,真机火墙需要关闭,但是在westosa主机做测试时需要westosb主机可以上网,此时真机火墙需要打开,所以可以提前下载好软件再开始做实验,避免麻烦
###westosb
dnf install squid -y
###westosa(172.25.254.130)
dnf install firefox -y
###真机
firewall-cmd --add-masquerade ##地址伪装功能打开,此时需要开启真机火墙
###westosb(172.25.254.230)
#网关与IP设定
vim /etc/sysconfig/network-scripts/ifcfg-westosb
///
BOOTPROTO=none
IPADDR=172.25.254.230
PREFIX=24
NAME=westosb
DEVICE=ens3
ONBOOT=yes
GATEWAY=172.25.254.30 ##此处网关ip为真机ip
DNS1=114.114.114.114
///
nmcli connection reload
nmcli connection show
ifconfig
route -n ##查看网关
cat /etc/resolv.conf ##查看DNS
ping www.baidu.com ##查看网络是否畅通
#代理主机网络设定成功
设定代理服务
###westosb
dnf install squid -y ##下载squid代理服务器,此时需要关闭真机火墙才能下载
systemctl status squid.service
vim /etc/squid/squid.conf ##squid配置文件
///
http_access allow all ##http访问控制模块,允许所有人访问
cache_dir ufs /var/spool/squid 100 16 256 ##添加磁盘缓存目录
///
systemctl restart squid.service
netstat -antlupe | grep squid ##查看端口
systemctl start firewalld.service ##开启火墙
firewall-cmd --permanent --add-service=squid ##将squid加入火墙自启程序
firewall-cmd --reload
firewall-cmd --list-all
#配置文件修改
###westosa(172.25.254.130)
dnf install firefox -y ##真机火墙需要关闭
##firefox
右上角的三条杠
-->preperences
-->General
-->Network Settings
-->Settings
-->选择Manual proxy configuration
-->勾选Use this proxy server for all protocols
-->HTTP Proxy写入westosb的ip(172.25.254.230)
-->Port3128 ##squid默认端口
-->OK
-->www.baidu.com ##第一次访问慢是因为代理要做缓存,真机火墙需要打开
注:此时在shell中ping不通百度,因为是通过代理,所以westosa本机仍不可以上网. 2、squid反向代理 CDN代理加速,总部服务器向各地分出分部做代理,即缓存服务器,用于提高客户访问速度。 CDN的全称是Content DeliveryNetwork,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。 简单的来说,就是把原服务器上数据复制到其他服务器上,用户访问时,那台服务器近访问到的就是那台服务器上的数据。CDN加速优点是成本低,速度快。适合访问量比较大的网站。 westosa(客户端)
dnf install httpd.x86_64 -y ##下载apache
systemctl enable --now httpd ##开启apache
systemctl start firewalld.service ##开启火墙
firewall-cmd --permanent --add-service=http ##将apache加入火墙自启
firewall-cmd --reload
echo 172.25.254.130 > /var/www/html/index.html ##编辑客户端发布文件
westosb(代理服务器)
vim /etc/squid/squid.conf
///
http_port 80 vhost vport ##虚拟端口80,允许虚拟主机访问
cache_peer 172.25.254.130 parent 80 0 proxy-only ##从westosa的80端口缓存数据,将其作为父级服务器,0表示没有备份主机用于数据保护,proxy-only表示只作为代理服务器
///
systemctl restart squid.service
firewall-cmd --permanent --add-service=http ##在系统火墙中永久开启http,使westosa 的apache服务可以通过火墙,但westosb本机不需要apache服务
firewall-cmd --reload
真机测试 测试 #浏览器
172.25.254.130-->index.html(172.25.254.130)
172.25.254.230-->130的数据(172.25.254.130)
通过反向代理也显示westosa主机的发布文件 注:此时在westosa主机的浏览器访问,不能被访问到,因为配置文件中端口发生改变,将端口改为80,则可以访问。
代入企业-代理-个人的关系,此处的客户端应该指的是企业总部服务器,因为代理服务器是总部服务器的代理,所以称之为反向代理。
|