文章目录
前言
curl -I 可以查看网站部署的服务器(如果没有隐藏的的话)
可以看出主流服务器有:apache和nginx
- nginx 轻量级的web服务器,异步非阻塞模式,速度快
- apache 重量级的web服务器,访问方式是同步阻塞模式,访问更加稳定
一、实验环境准备
本实验使用apache服务器,需要在一台虚拟机上部署apache服务
这里准备server3虚拟机做实验,并安装apache服务
1)安装虚拟机
2) 配置IP:172.25.254.3 ,DNS,网关(主要保证连上真机的网络)
3)配置本地仓库或网络仓库
4)安装apache(httpd)服务
5)防火墙允许http服务
这五步有问题的可以参考我的其他博客。
配置好网络可以使用curl -I工具查看其他网站的服务区引擎
二、Apache基本设置
具体步骤及命令:
- dnf search apache ##搜索apache的软件包
- dnf install httpd.x86_64 ##安装apache软件
- systemctl enable --now httpd ##启动apache服务
- firewall-cmd --list-all ##查看火墙允许的服务有哪些
- firewall-cmd --permanent --add-service=http ##火墙添加http服务
- firewall-cmd --permanent --add-service=https##添加https服务
- firewall-cmd --reload ##重新加载火墙,让服务生效
- /var/www/html ##apache的默认发布目录
- /var/www/html/index.html ##apache默认发布文件(自己写内容)
- /etc/httpd/conf/httpd.conf ##apache主配置文件
- /etc/httpd/conf.d/ ##子配置目录
- /etc/httpd/conf.d/autoindex.conf ##子配置文件,会自动加载apache的程序
- netstat -antlupe | grep httpd ##查看httpd的接口,默认80
- ##https默认端口443
- apache ##程序开启默认用户
- /etc/httpd/logs/* ##apache日志
- httpd_sys_content_t ##默认安全上下文
安装apache服务
开机自启动命令:systemctl enable --now httpd
防火墙允许http服务
浏览器输入IP地址,可以看到apache测试页面即环境配置成功
6)apache默认发布目录为: /var/www/html,安装apache后,会在/var下自动生成该目录
7)更改字号,更多书写格式参考html语言书写格式!
三、Apache配置文件的修改及部署优化方案
3.1 配置文件路径
vim /etc/httpd/conf/httpd.conf
3.2 修改端口号
(1)不设置selinux情况
1)修改80端口为8080端口
2重启服务
3检查火墙有无开启8080端口,没有的话开启该端口
(2)设置selinux情况
selinux默认是不允许乱用系统端口的
- 端口号改称6666 #发现不允许登陆
- semanage port -l | grep http #过滤一下http端口号
- http_port_t #系统可用端口号
- http_cache_port_t #系统缓存端口号
- semanage port -a -t http_port_t -p tcp 6666 #添加端口号
- #a 添加 t安全上下文 p 是协议
- systemctl restart httpd #重启服务,网页还是访问不到
- firewall-cmd --permanent --add-port=6666/tcp #防火墙允许
- firewall-cmd --reload #重载防火墙
被浏览器墙了
使用curl 可以看到,浏览器可能设置有问题。
3.3 修改默认发布目录
已将端口换回80
- mkdir -p /westos/html ##建立个测试文件夹
- cd /westos/html
- vim index.html 写入<h1>westos html</h1> ##在新建的文件夹下写入测试文件
- 下面是对/westos进行安全上下文的编写(selinux=disabled可以不用设置)
- ls -Zd /westos ##察看是否编写了安全上下文
- semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
- restorecon -RvvF /westos
- 下面是修改配置文件并授权
- vim /etc/httpd/conf/httpd.conf
- 修改内容DocumentRoot "/westos/html" ##修改后发现没有权限访问
- <Directory "/westos/html">
- Require all granted
- </Directory> ##需要进行文件授权
- systemctl restart httpd ##重启服务
修改安全上下文,重要!
重启httpd,依然无法访问
这里是因为还没有授权,加个授权操作
成功访问。
3.3 修改默认发布文件
3.4 常见错误解决
3.4.1 默认发布目录出错(配置出错)
- tail /etc/httpd/logs/error_log ##查看此配置文件
3.4.2 查看语法错误
- tail /var/log/messages ##查看语法错误(会提示你第几行出错)
四、Apache虚拟主机(一个ip发多个站点)
4.1建立实验需要文件及内容
- mkdir -p /var/www/virtual/westos.org/{music,news}
- touch /var/www/virtual/westos.org/music/index.html
- touch /var/www/virtual/westos.org/news/index.html
- echo "music's page" >/var/www/westos.com/wenku/index.html
- echo "news's page" > /var/www/westos.com/news/index.html
4.2在子配置目录下书写子配置文件
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost _default_:80>
DocumentRoot "/var/www/html" #默认目录
CustomLog logs/default.log combined #指定日志生成目录, 日之类型为 混合型
</VirtualHost>
<VirtualHost *:80>
ServerName wenku.westos.com
DocumentRoot "/var/www/virtual/haojin.com/wenku"
CustomLog logs/wenku.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName news.westos.com
DocumentRoot "/var/www/virtual/haojin.com/news"
CustomLog logs/news.log combined
</VirtualHost>
4.3本地dns解析认证
- /etc/hosts 编辑文件写入以下内容
- 172.25.254.3 www.haojin.com news.haojin.com music.haojin.com
4.4实验截图
1)测试文件
2)配置子配置文件
之所以系统可以访问该子目录,原因在于主配置目录的最后一句话!
子配置文件内容
- 编辑本地dns解析文件
vim /etc/hosts
注意:这里一定是你的物理机,因为浏览器在你的物理机上
4)物理机 浏览器测试
五、Apache访问控制
5.1 apache帮助文档
dnf search httpd-manual
dnf install httpd-manual.noarch -y
systemctl restart httpd
也可以百度中文版。
5.2 基于ip的访问控制(指定ip黑白名单)
依然是对子配置文件进行修改测试
- DocumentRoot “/var/www/html”
##指定默认目录,这里就默认了,修改的话还要做selinux,这块可以看3.3内容
- <Directory "/var/www/html">
- Order Allow,Deny ##决定执行顺序。Allow先执行,Deny后执行。
- Allow from xxx.xxx.xxx.xxx
- Deny from xxx.xxx.xxx.xxx
- </Directory>
##以上是配置文件的写法
5.3 用户认证的访问控制(必须用户登陆)
5.3.1 创建登陆用户
- htpasswd -cm /etc/httpd/.htpasswd admin ##创建用户,用户名随意
- htpasswd -m /etc/httpd/.httpasswd haojin ##添加用户
- cat /etc/httpd/.htpasswd ##查看用户
以上是创建文件夹和用户的过程,c创建,m添加。添加成功后查看用户。
再建立用户如果加c会覆盖原来内容!!!!!!!
5.3.2 更改配置文件
- 修改配置文件然后重启。下面是配置文件添加内容。
- vim /etc/httpd/conf/httpd.conf
- DocumentRoot "/var/www/html"
- <Directory “/var/www/html”>
- AuthUserfile "/etc/httpd/.htpasswd" ##导入文件
- AuthName "Please input username and password" ##提示语
- AuthType basic ##设置为基本配置
- Require user admin ##只允许admin用户登陆
- Require valid-user ##允许所有用户登陆。这俩个只能写一个
- </Directory>
1)所有可登
2)修改为admin可登
3)输入admin及密码登陆成功
六、Apache支持语言介绍
6.1 html
默认的语言是html,不需要安装
6.2 php
PHP是一种服务器端的,嵌入HTML的脚本语言
超文本预处理器,是一种通用的开源脚本语言
dnf install php -y ##首先安装php服务
vim /var/www/html/westos.php ## 写一个php文件
<?php
phpinfo(); ##文件内容
?>
6.3 perl语言
6.3.1 CGI解释
CGI 通用网关接口: 是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程,是网站上放置动态内容的最简单的方法。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的 静态 超媒体文档变成一个完整的新的交互式媒体。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。编程语言Perl是一个广泛被用来编写CGI程序的语言,但CGI程序可以用任何脚本语言或者完全独立编程语言实现,只要此语言可以在这个系统上运行。
CGI脚本可用于许多目的,但是谨慎控制使用哪个CGI脚本以及允许谁添加和运行这些脚本十分重要。编写质量差的CGI脚本可能为外部攻击者提供了破坏网站及内容安全性的途径。故,在web服务器级别和SELinux策略级别,都存在用于限制CGI脚本使用的设置。
特点:一般每次的CGI请求都需要新生成一个程序的副本来运行,这样大的工作量会很快将服务器压垮!因此一些更有效的技术像mod_perl,可以让脚本解释器直接作为模块集成在Web服务器(例如:Apache)中,这样就能避免重复载入和初始化解释器。
6.3.2 CGI作用图示
6.3.3 CGI脚本
1)可以查看apche帮助文档5.1
2)将文档粘贴到我之前创建好的目录中
vim /var/www/html/cgi/first.cgi
`` = $() 优先执行
3)给/var/www/html/cgi/目录设置安全上下文,否则selinux不允许访问
4)给文件加可执行权限并看执行结果
4)浏览器浏览事与愿违,直接给我明文显示了,想让他显示时间的
5)配置httpd子配置文件,解决问题
重启服务,时间可以显示
6.4 wsgi语言(python语言)
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。
1)先安装软件,才能支持该语言
2)编辑测试文件
3)编辑子配置文件
七、Apache加密访问(https)
7.1安装加密插件
默认不支持https,需要安装插件mod_ssl
dnf install mod_ssl -y ##安装加密插件,安装后可以查到https的443端口
netstat -antlupe | grep http ##查看是否有80和443端口,分别对应http和https
1)安装
2)查看有配置文件
3)重启httpd服务并查看有没有多443端口
4)防火墙开启443端口
之前已经开启过了https,这里加上443也没问题,https默认端口是443端口。
7.2 临时证书的添加与删除
1)安装过mod_ssl插件重启后,用https访问我们的服务器会被警告,因为未被认证
2)查看证书方法
3)添加认证,让我们可以访问自己的服务器
点击高级,同意,便相当于加了个证书
查看添加的证书
4)删除证书
5)baidu的证书
7.3 生成自己的证书
7.3.1生成证书
生成证书步骤
dnf search crypto #搜索工具
dnf install
openssl genrsa -out /etc/pki/tls/private/www.westos.org.key
##生成密钥
openssl req -new -key /etc/pki/tls/private/www.westos.org.key -out /etc/pki/tls/certs/www.westos.org.csr
##生成证书签名文件
openssl x509 -req -days 365 -in /etc/pki/tls/certs/www.westos.org.csr -signkey /etc/pki/tls/private/www.westos.org.key -out /etc/pki/tls/certs/www.westos.org.crt
##生成证书
-x509 ##证书格式
-req ##请求
-in ##加载签证名称
-signken /etc/pki/tls/private/www.wesos.org.key
7.3.2 修改ssl配置文件,让证书生效
自己的证书生成
7.4 做个加密网站
7.4.1配置好网站
- vim /etc/httpd/conf.d/vhost
2)给主机配置dns解析
3)只有输入https开头才可以访问加密,不然就是默认http访问,很不方便
7.4.2 http自动转https
做个重写规则,目的是把默认80端口访问转到443端口
参数写错了
查看修改文件
访问成功
八、Squid正向代理(翻墙)
通过代理可以查看有代理服务的主机的网页内容,但是需要通过代理的这台主机没有网。这就是vpn原理。
8.1 实验环境准备
首先需要俩台主机,一台真机(要求可以上网),一台虚拟机
8.2真机配置如下:
- 真机联网,然后下载squid服务,dnf install squid -y
- 安装完成后修改squid配置文件
- http_access deny all 改成 http_access allow all 允许所有人通过这台主机代理
- http_potr 3128 查看代理端口
- cachr_dir ufs /var/spool/squid 100 16 256 打开缓存文件,100M大小,16个文件夹,每一个文件夹下有256个二级文件夹
在火墙和selinux打开的情况下,需要进行如下操作
- firewall-cmd --permanent --add-port=3128/tcp
- firewall-cmd --reload
8.3 虚拟机配置
- ping www.baidu.com ##测试网络是否通畅,发现不通
- 浏览器设置网络配置,即network setting
- 打开Manual proxy configuration
- 设置HTP Proxy 网址写成主机ip,端口是squid代理端口
- Use this proxy server for all protocols 前面点对勾,全部允许
8.4测试
- ping www.baidu.com ping 不通
- 登陆浏览器然后可以查看网页内容。www.baidu.com www.taobao.com都可以查看
九、Squid反向代理(加速)
9.1 实验环境
两台虚拟机
110主机作为客户端,搭载有apache服务
150主机作为代理服务器,只有squid代理软件
配置150代理服务器的配置文件
vim /etc/squid/squid.conf
内容如下:
http_access allow all
http_port 80 vhost vport
cache_peer 192.168.1.110 parent 80 0 proxy-only
cache ufs /var/spool/squid 100 16 256
这里文章就结束了,内容蛮多,加油!!!