Linux之APACHE

一、安装 apache

安装 apache 软件包:
yum install httpd
启动 apache 服务:
systemctl start httpd;systemctl enable httpd
查看监听端口:
netstat -antlupe | grep httpd
tcp6 0 0 :::80 ::? LISTEN 0 109623 4034/httpd
实验:

[root@node1 ~]# yum install httpd
[root@node1 ~]# systemctl start httpd
[root@node1 ~]# netstat -antlupe | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      0          39867      1391/httpd          
[root@node1 ~]# systemctl stop firewalld

二、指定默认发布目录及文件

[root@node1 ~]# cd /var/www/html  #默认发布目录
[root@node1 html]# ls
[root@node1 html]# vim index.html  #默认发布文件

文件内容:
这里写图片描述
浏览器测试:
这里写图片描述

1、修改访问端口

默认端口是80,修改访问端口为8011

[root@node1 html]# vim /etc/httpd/conf/httpd.conf

这里写图片描述这里写图片描述

[root@node1 html]# systemctl restart httpd
[root@node1 html]# systemctl restart httpd
[root@node1 html]# netstat -antlupe | grep httpd
tcp6       0      0 :::8011                 :::*                    LISTEN      0          42108      1501/httpd  

浏览器测试:
直接输入ip时默认端口为80,不能查看到内容,输入ip:8011时可以查看到内容
这里写图片描述
这里写图片描述

2、修改默认发布目录
[root@node1 html]# vim /etc/httpd/conf/httpd.conf
修改端口为80
[root@node1 html]# systemctl restart httpd
[root@node1 html]# mkdir /haha/html -p  #建立目录/haha和之下的/html
[root@node1 html]# cd /haha/html
[root@node1 html]# vim index.html  #编辑默认发布文件

文件内容如图:
这里写图片描述

[root@node1 html]# vim /etc/httpd/conf/httpd.conf  #编辑发布文件

内容如下:
这里写图片描述

[root@node1 html]# systemctl restart httpd

在浏览器测试:
这里写图片描述

3、修改默认发布文件
[root@node1 html]# vim ying.html

文件内容如下:
这里写图片描述

[root@node1 html]# vim /etc/httpd/conf/httpd.conf  #修改默认访问文件

文件内容如下:
这里写图片描述

[root@node1 html]# systemctl restart httpd

在浏览器测试:
这里写图片描述

4、添加发布目录及文件
[root@node1 html]# mkdir linux/
[root@node1 html]# ls
index.html  linux  ying.html
[root@node1 html]# cd linux
[root@node1 linux]# vim index.html

文件内容如下:
这里写图片描述

[root@node1 linux]# vim /etc/httpd/conf/httpd.conf  #将/haha/html下的目录/linux也设置为可访问的目录以及里面的文件

文件内容如下:
这里写图片描述

[root@node1 linux]# systemctl restart httpd

浏览器测试:
这里写图片描述这里写图片描述

三、访问控制

[root@node1 ~]# systemctl start httpd
[root@node1 ~]# systemctl stop firewalld
1、基于ip的访问控制
[root@node1 ~]# cd /var/www/html
[root@node1 html]# ls
index.html
[root@node1 html]# mkdir haha
[root@node1 html]# cd haha/
[root@node1 haha]# vim index.html

文件内容如下:
这里写图片描述

[root@node1 haha]# vim /etc/httpd/conf/httpd.conf

这里写图片描述
内容解释:先访问禁止ip再访问允许名单,Deny from All 表示禁止所有访问,Allow from 172.25.254.169 表示172.25.254.169在白名单里面可以访问

[root@node1 ~]# systemctl restart httpd

在浏览器测试:
这里写图片描述

2、基于用户的访问控制
[root@node1 ~]# cd /etc/httpd
[root@node1 httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@node1 httpd]# htpasswd -cm apacheuser user1   #创建apache用户user1,c表示建立文件,m表示建立,当文件apacheuser存在时不可以加 -c ,因为新建立的会覆盖文件的内容
New password: 
Re-type new password: 
Adding password for user user1
[root@node1 httpd]# htpasswd -m apacheuser user2
New password: 
Re-type new password: 
Adding password for user user2
[root@node1 httpd]# cat apacheuser
user1:$apr1$ve/yuYgI$dFmjxH125uUfO/8jl47Pr.
user2:$apr1$tVxiI7Nx$rNlcH8bWF43zySCfGLfw10
[root@node1 httpd]# vim /etc/httpd/conf/httpd.conf

文件内容如下:
这里写图片描述
文件中如果添加 Require valid-user 代表允许文件apahceuser中的所有用户访问

[root@node1 httpd]# systemctl restart httpd

在浏览器测试,输入ip时会跳出用户登录页面:
这里写图片描述
输入用户名及密码,user1可以访问,user2禁止访问:
这里写图片描述

四、apache 的虚拟主机

[root@node1 ~]# cd /etc/httpd
[root@node1 httpd]# ls
apacheuser  conf  conf.d  conf.modules.d  logs  modules  run
[root@node1 httpd]# cd conf.d
[root@node1 conf.d]# vim default.conf  #default表示没有指定

文件内容如下:
这里写图片描述

[root@node1 conf.d]# mkdir /var/www/virtual/haha.com/news -p  #建立属于news的专属文件
[root@node1 conf.d]# mkdir /var/www/virtual/haha.com/music -p  #建立属于music的专属文件
[root@node1 conf.d]# vim /var/www/virtual/haha.com/news/index.html  #编辑news的默认访问文件

文件内容如下:
这里写图片描述

[root@node1 conf.d]# vim /var/www/virtual/haha.com/music/index.html  #编辑news的默认访问文件

文件内容如下:
这里写图片描述

[root@node1 conf.d]# vim news.conf   #编辑news的配置文件

文件内容如下:
这里写图片描述

[root@node1 conf.d]# vim music.conf  #编辑music的配置文件

文件内容如下:
这里写图片描述

[root@node1 conf.d]# systemctl restart httpd

在客户端测试:

[root@node2 ~]# vim /etc/hosts

添加内容如下:
这里写图片描述
打开客户端浏览器测试,浏览器输入网址对应内容不同:
这里写图片描述这里写图片描述这里写图片描述

五、自定义自签名证书

如果加密的通信非常重要,而经过验证的身份不重要,管理员可以通过生成 self-signed certificate 来避免与认证机构进行交互所带来的复杂性。
使用 genkey 实用程序(通过 crypto-utils 软件包分发),生成自签名证书及其关联的私钥。为了简化起见,genkey 将在“正确”的位置( etc/pki/tls 目录)创建证书及其关联的密钥。相应地,必须以授权用户(root)身份运行该实用程序。

[root@node1 ~]# yum install mod_ssl -y
[root@node1 ~]# yum install crypto-utils -y
[root@node1 ~]# cd /etc/httpd/conf.d/
[root@node1 conf.d]# genkey www.haha.com   #执行完该命令,会跳转到如下页面,手动生成证书秘钥

这里写图片描述这里写图片描述这里写图片描述这里写图片描述
生成密钥时不选CA认证:
这里写图片描述
这里写图片描述
填写证书内容:
这里写图片描述

output will be written to /etc/pki/tls/certs/www.haha.com.crt  
output key written to /etc/pki/tls/private/www.haha.com.key
#图形配置完毕后,终端会显示内容有这两行内容,分别是秘钥和证书
[root@node1 conf.d]# vim /etc/httpd/conf.d/ssl.conf  #修改文件中的秘钥及证书

这里写图片描述

[root@node1 conf.d]# systemctl restart httpd

浏览器测试:
输入https://www.haha.com显示如下页面:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
注意:
当密钥生成错误时,进入目录/etc/pki/tls/serts删除证书,然后进入目录cd …/private/删除密钥,重新生成密钥后还是不能下载证书则进行Edit–>Advanced–>View…–>删除本机证书后即可下载。

六、网页重写

[root@node1 ~]# cd /etc/httpd
[root@node1 httpd]# ls
apacheuser  conf  conf.d  conf.modules.d  logs  modules  run
[root@node1 httpd]# cd conf.d
[root@node1 conf.d]# ls
autoindex.conf  music.conf  README    ssl.conf.rpmsave  userdir.conf
default.conf    news.conf   ssl.conf  tmprequest        welcome.conf
[root@node1 conf.d]# cp news.conf login.conf
[root@node1 conf.d]# vim login.conf

文件内容如下(443虚拟主机):
这里写图片描述
其中^(/.*)$ 客户主机在浏览器写入的字符。%{HTTP_HOST}$1 客户主机在浏览器里面写入的内容去掉http:以外的内容。[redirect=301] 表示临时转换,只有在访问的时侯转换。

[root@node1 conf.d]# mkdir -p /var/www/virtual/haha.com/login/
[root@node1 conf.d]# vim /var/www/virtual/haha.com/login/index.html

文件内容如下:
这里写图片描述

[root@node1 conf.d]# systemctl restart httpd

在客户主机测试:

[root@node2 ~]# vim /etc/hosts

添加内容如下:
这里写图片描述
在客户主机浏览器输入login.haha.com直接会跳转成https://www.haha.com,会显示如下页面,接下来的步骤和上文自签名证书中下载证书的步骤一样
这里写图片描述
下载完证书即可看到访问文件的内容
这里写图片描述

七、php语言支持

[root@node1 ~]# cd /var/www/html
[root@node1 html]# yum install php -y   #下载php 
[root@node1 html]# vim index.php  #编写默认访问文件

文件内容如下:
这里写图片描述

[root@node1 html]# vim /etc/httpd/conf/httpd.conf  #修改默认首先访问index.php

文件内容如下:
这里写图片描述

[root@node1 html]# systemctl restart httpd

在浏览器测试,可以看到php页面:
这里写图片描述

八、CGI

通用网关接口(CGI)是网站上放置动态内容的最筒单的方法。CGI 脚本可用于许多目的,但是谨慎控制使用哪个 CGI 脚本以及允许谁添加和运行这些脚本十分重要。编写质量差的 CGI 脚本可能为外部攻击者提供了破坏网站及其内容安全性的途径。困此,在 Web 服务器级别和 SELinux 策略级别,都存在用于限制 CGI 脚本使用的设置

[root@node1 ~]# cd /var/www/html
[root@node1 html]# ls
cgi  haha  index.html  index.php
[root@node1 html]# vim cgi/index.cgi

文件内容如下:
这里写图片描述

[root@node1 html]# chmod +x cgi/index.cgi  #加可执行权限
[root@node1 html]# ./cgi/index.cgi  #该默认访问文件是打印此刻时间
Content-type: text/html

Wed May 30 09:26:44 EDT 2018
[root@node1 html]# vim /etc/httpd/conf.d/default.conf

文件内容如下:

这里写图片描述

[root@node1 html]# systemctl restart httpd

在浏览器测试:
这里写图片描述

九、正向代理

代理主机(可上网主机):

[root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0  #添加网关、dns

文件添加内容如下:
这里写图片描述

[root@node1 ~]# systemctl restart network
[root@node1 ~]# yum install squid -y
[root@node1 ~]# vim /etc/squid/squid.conf

文件内容如下:
这里写图片描述
3128端口是Squid HTTP代理服务器的默认端口。

[root@node1 ~]# systemctl restart squid
[root@node1 ~]# ping 172.25.254.69  #可以ping通172.25.254.69
PING 172.25.254.69 (172.25.254.69) 56(84) bytes of data.
64 bytes from 172.25.254.69: icmp_seq=1 ttl=64 time=0.059 ms
64 bytes from 172.25.254.69: icmp_seq=2 ttl=64 time=0.142 ms
^C
--- 172.25.254.69 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.059/0.100/0.142/0.042 ms
[root@node1 ~]# ping www.baidu.com  #可以ping通百度
PING www.a.shifen.com (183.232.231.173) 56(84) bytes of data.
64 bytes from 183.232.231.173: icmp_seq=1 ttl=51 time=67.5 ms
64 bytes from 183.232.231.173: icmp_seq=2 ttl=51 time=82.5 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 2 received, 33% packet loss, time 2002ms
rtt min/avg/max/mdev = 67.520/75.048/82.576/7.528 ms

在客户主机浏览器测试:
打开浏览器打开Preferences显示如下页面:
这里写图片描述
这里写图片描述
设置完访问代理后访问网页,是可以访问的,在这里以访问百度为例
这里写图片描述

##十、反向代理
主机apache:

[root@node1 ~]# yum install httpd
[root@node1 ~]# systemctl start httpd

主机squid:

[root@localhost ~]# yum install squid
[root@localhost ~]# vim /etc/squid/squid.conf

文件内容如下:
这里写图片描述
文中60行内容表示当访问80端口时从172.25.254.169这个主机缓存东西,0代表没有候补端口,proxy-only表示仅允许缓存
客户主机:
在浏览器访问squid主机和apache主机,显示内容一样,则表示反向代理配置完成
这里写图片描述这里写图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值