Linux-Apache(HTTP、HTTPS)

概念

Apache:【Apache HTTP Server】是Apache软件基金会的一个开放源码的网页服务器软件,可以在大多数电脑操作系统中运行。由于其跨平台和安全性,被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中
httpd :【Apache Hypertext Transfer Protocol Server】apache软件管理服务

主配置文件httpd.conf

路径:/etc/httpd/conf/httpd.conf

  1. 修改默认发布目录
DocumentRoot "/test/hello"
#指定发布目录路径
<Directory "/test/hello">
    Require all granted
#设置访问权限
</Directory>
  1. 修改默认发布文件
<IfModule dir_module>
    DirectoryIndex hello.html index.html
#先访问hello.html文件,访问失败后访问index.html
</IfModule>
  1. 修改默认端口
Listen 8080
#设置监听端口

apache 虚拟机

服务器设置

  1. 设置子配置文件
mkdir /etc/httpd/conf/vhost.conf
#添加新子配置文件vhost.conf在子配置文件目录中
#注意子配置文件均以*.conf结尾

<VirtualHost _default_:80>
#设置没有指定地址时,默认访问
        DocumentRoot /var/www/html
#默认访问路径
        CustomLog logs/default.log combined
#日志记载地址,方式为混合记录
</VirtualHost>

<VirtualHost *:80>
#设置本机IP地址指定地址,端口为80
#可设不同IP地址和不同端口
        ServerName news.hello.org
#访问域名news.hello.org
        DocumentRoot /test/hello/news/
#访问地址为news.hello.org的访问文件路径
        CustomLog logs/news.log combined

</VirtualHost>

<VirtualHost *:80>
        ServerName music.hello.org
        DocumentRoot /test/hello/music/
#访问地址为music.hello.org的访问文件路径
        CustomLog logs/music.log combined
</VirtualHost>

<Directory /test/hello>
#配置访问/test/hello文件地址的访问权限
        Require all granted
</Directory>
~             
  1. 添加虚机指定文件的index.html
mkdir -p /test/hello/news /test/hello/music
vim /test/hello/news/index.html
news page
vim /test/hello/music/index.html
music page
vim /var/www/http/index.html
default page

客户端访问

  1. 客户端访问需设置hosts文件
vim /etc/hosts
服务器IP地址 www.hello.org news.hello.org music.hello.org 
  1. 浏览器打开指定域即可浏览
    www.hello.org 显示default page
    news.hello.org 显示news page
    music.hello.org 显示music page

访问控制

  1. 基于IP的访问控制
<Directory /test/hello/music>
        Order allow,deny			#列表读取顺序,后读取的列表会覆盖先读取列表的重复部分
        Allow from all
        Deny from 172.25.254.101
</Directory>
#黑名单控制方式
<Directory /test/hello/music>
        Order deny,allow
        Allow from 172.25.254.101
        Deny from all
</Directory>
#白名单控制方式
  1. 基于用户的访问控制
  • 生成用户密钥
htpasswd -cm /etc/httpd/.htpassfile admin
New password: 
Re-type new password: 
Adding password for user admin
#创建新用户admin,第一次建立时使用-cm
cat /etc/httpd/.htpassfile 
admin:$apr1$QuY4ln5K$oriKyn5K97hrvjADN/sq.1

htpasswd -m /etc/httpd/.htpassfile admin1
New password: 
Re-type new password: 
Adding password for user admin1
#第二次建立时使用-m,若使用-cm会覆盖之前信息
cat /etc/httpd/.htpassfile 
admin:$apr1$QuY4ln5K$oriKyn5K97hrvjADN/sq.1
admin1:$apr1$m3vv2bj.$WUTLXLZdnGCAXchdJ7ncw0
  • 修改子配置文件vhost
<Directory /test/hello/music>
        AuthUserFile    /etc/httpd/.htpassfile
        AuthType        basic
        AuthName        "Pleasa input username and password!"
        Require         valid-user 
</Directory>
#添加htpassfile 名单中所有人
<Directory /test/hello/music>
        AuthUserFile    /etc/httpd/.htpassfile
        AuthType        basic
        AuthName        "Pleasa input username and password!"
		Require user    admin
</Directory>
#添加名单中个别用户:admin

其他关联配置

PHP配置方式

  • 安装php软件
yum install php -y
  • php的测试页面
vim /var/www/html/index.php
<?php
        phpinfo()
#php信息界面
?>
  • 重其httpd服务,登陆页面访问
systemctl restart httpd
  • 客户端浏览器测试:www.hello.org/index.php

CGI配置方式

  • 安装httpd的帮助手册
 yum install -y httpd-manual.noarch
#浏览器浏览帮助手册:www.hello.org/manual,可查看cgi相关配置具体指导
  • CGI文件
mkdir /test/hello/cgi
#建立文件夹
vim /test/hello/cgi/date.cgi
#创建cgi文件
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
#文件内容
chmod a+x /test/hello/cgi/date.cgi 
#修改文件权限
  • 修改虚机文件
vim /etc/httpd/conf.d/vhost.conf 
<VirtualHost *:80>
        ServerName cgi.hello.org
        DocumentRoot /test/hello/cgi/
        CustomLog logs/cgi.log combined
</VirtualHost>
#添加访问虚拟机
<Directory /test/hello/cgi/>
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory>
#添加访问cgi文件指定规则
  • 访问cgi显示时间
    浏览器:cgi.hello.org/date.cgi

WSGI配置

  • 安装wsgi软件
yum install -y mod_wsgi.x86_64
  • 修改虚机文件
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
        ServerName wsgi.hello.org
        DocumentRoot /test/hello/wsgi/
        CustomLog logs/wsgi.log combined
        WSGIScriptAlias /DATE /test/hello/cgi/date.wsgi
		#脚本别名,访问使用/DATE
</VirtualHost>
#添加在指定虚机中
  • wsgi文件
vim /test/hello/wsgi/date.wsgi
#!/usr/bin/env python
import time
def application (environ, start_response):
  response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
  status = '200 OK'
  response_headers = [('Content-Type', 'text/plain'),
                      ('Content-Length', '1'),
                      ('Content-Length', str(len(response_body)))]
  start_response(status, response_headers)
  return [response_body]
  • 访问wsgi显示时间
    浏览器:wsgi.hello.org/date.wsgi

HTTPS

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

添加ssl层

  1. 安装加密传输插件
yum install -y mod_ssl 
  1. 安装加密软件
yum install -y crypto-utils
  1. 生成密钥
genkey www.hello.org
#生成密钥与证书
#第一步 next
#第二步 根据个人需求选择,推荐选择1024
#第三步 等待
#第四步 由于关联本机randomdata,所以要在真机中进行键盘输入,直到进度条读完
#第五步 认证请求,本次为测试选择no
#第六步 选择Next
#第七步 重要填写内区域,根据提示填写
完成后会提示生成文件*.crt和*.key
  1. 修改ssl配置文件
vim /etc/httpd/conf.d/ssl.conf
101 SSLCertificateFile /etc/pki/tls/certs/www.hello.org.crt
109 SSLCertificateKeyFile /etc/pki/tls/private/www.hello.org.key

网页重写,强制指定网页为https

  1. 设置重写使用的网页
mkdir /test/hello/login
vim /test/hello/login/index.html
https login page
  1. 设置重写规则
vim /etc/httpd/conf.d/vhost.conf 
<VirtualHost *:443>
#设置加密传输使用的端口号
        ServerName login.hello.org
		#加密传输的域名
        DocumentRoot /test/hello/login/
		#访问文件路径
        CustomLog logs/login.log combined
        #日志文件
        SSLEngine on
		#加密引擎开启
        SSLCertificateFile /etc/pki/tls/certs/www.hello.org.crt
		#加密公钥文件
        SSLCertificateKeyFile /etc/pki/tls/private/www.hello.org.key
		#加密私钥文件
</VirtualHost>
<VirtualHost *:80>
        ServerName login.hello.org
        RewriteEngine On
		#重写引擎开启
        RewriteRule ^(/.*)$  https://%{HTTP_HOST}$1
		#重写地址转换
		#^(/.*)$ 浏览器中地址栏说有内容
		#%{HTTP_HOST} 客户请求主机
		#“$1”表示^(/.*)$的值
</VirtualHost>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值