900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > linux中apache配置 虚拟主机设置及https配置

linux中apache配置 虚拟主机设置及https配置

时间:2020-05-15 08:32:21

相关推荐

linux中apache配置 虚拟主机设置及https配置

apache:企业常用的web服务。用来提供http://(超文本传输协议)

Apache HTTP Server(简称Apache),是一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

一、apache部署安装

[root@dns ~]# yum install httpd -y ##安装apache软件

[root@dns ~]# yum install httpd-manual -y ##安装apache手册

[root@dns ~]# systemctl start httpd ##打开服务

[root@dns ~]# systemctl enable httpd

[root@dns ~]# firewall-cmd --permanent --add-service=http ###打开加强性火墙的http服务

[root@dns ~]# firewall-cmd --reload

[root@dns ~]# cd /var/www/html/ ###apache的根目录,默认发布文件位置

[root@dns html]# vim /var/www/html/index.html ###apache默认发布文件

##h1字体设置

测试:网页浏览 172.25.254.128 显示/var/www/html/index.html 内容

二、apache信息及更改

1. 更改默认发布文件

原文件: /var/www/html/index.html

默认发布文件是访问apache时没有指定文件名称时默认访问的文件

这个文件可以有多个,有访问顺序

[root@dns html]# vim /etc/httpd/conf/httpd.conf ##修改主配置文件

164 DirectoryIndex test.html index.html ##在164行添加test.html;默认先访问test.html,没有时再访问index.html

[root@dns html]# systemctl restart httpd.service

[root@dns html]# vim /www/html/test.html

测试:网页浏览 172.25.254.128 显示/var/www/html/test.html 内容

2.更改默认发布目录

原目录:/var/www/html/

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

[root@dns html]# mkdir -p /westos/html

[root@dns html]# ls -Zd /var/www/html/ ###查看与httpd服务匹配的文件安全上下文

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

[root@dns html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?' ##更改/westos及他下面所有文件的安全上下文

[root@dns html]# restorecon -FvvR /westos/ ###重新加载安全上下文

[root@dns html]# systemctl restart httpd.service

[root@dns html]# vim /westos/html/index.html

[root@dns html]# rm -fr test.html

测试:网页浏览 172.25.254.128 显示 /westos/html/index.html 内容

3.更改服务端口

默认端口为80

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

##将监听端口更改为8090

[root@dns html]# systemctl restart httpd.service

[root@dns html]# firewall-cmd --permanent --add-port=8090/tcp ###打开加强性火墙的8090端口

[root@dns html]# firewall-cmd --reload

[root@dns html]# netstat -antlupe | grep httpd ##查询httpd监听端口

测试:网页浏览 172.25.254.128:8090

四、apache的虚拟主机(一个IP做多个服务器)

虚拟主机允许您从一个 httpd 服务器同时为多个网站提供服务。在本节中 , 我们将了解基于名称的虚拟主机其中多个主机名都指向同一个 IP 地址 , 但是 Web 服务器根据用于到达站点的主机名提供具有不同内容的不同网站。

1)恢复

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

[root@dns html]# systemctl restart httpd.service

2)主站点及默认站点

[root@dns html]# vim /etc/httpd/conf.d/adefault.conf ##配置默认文件

[root@dns html]# vim /westos/html/index.html

[root@dns html]# systemctl restart httpd.service

3)指定的子站点

[root@dns html]# mkdir -p /var/www/virtual//music##建立虚拟机主机默认发布的目录

[root@dns html]# mkdir -p /var/www/virtual//news

[root@dns html]# vim /var/www/virtual//music/index.html ##建立虚拟机主机默认发布的文件

vim /var/www/virtual//news/index.html

[root@dns conf.d]# vim /etc/httpd/conf.d/news.conf

[root@dns conf.d]# cp music.conf news.conf

[root@dns conf.d]# vim news.conf

[root@dns html]# systemctl restart httpd.service

检测:在浏览器主机上做本地解析

[root@foundation68 ~] #vim /etc/hosts ##在访问主机进行域名解析

四、访问控制

Apache 无格式文件用户身份验证,在此配置中 , 用户账户和密码存储在本地 .htpasswd 文件中。

处于安全原因 , 该文件不能保存在网站的 DocumentRoot 中 ,而应保存在 Web 服务器不提供服务的一些目录中。

[root@dns html]# mkdir /var/www/html/westos

[root@dns html]# vim /var/www/html/westos/index.html

1. 设置允许、禁止名单

[root@dns conf.d]# vim /etc/httpd/conf/httpd.conf ##修改主配置文件时要将之前添加进去的所有内容都删除,再将注释的内容还原

###允许除68外的所有

注:Order Allow,deny ##顺序,先读谁;后读的会覆盖先读的

[root@dns conf.d]# systemctl restart httpd.service

测试:真机68网页浏览:172.25.254.128/westos :用虚拟机网页浏览:http://172.25.254.128/westos :

[root@dns conf.d]# vim /etc/httpd/conf/httpd.conf

###禁止除68外的所有

[root@dns conf.d]# systemctl restart httpd.service

测试:真机68网页浏览:172.25.254.128/westos :用虚拟机网页浏览:http://172.25.254.128/westos :

2.加密访问

[root@dns html]# mkdir /var/www/virtual//music/html/admin/

[root@dns admin]# vim /var/www/virtual//music/html/admin/index.html

[root@dns conf.d]# cd /etc/httpd/

[root@dns httpd]# htpasswd -cm /etc/httpd/userpass admin ##c创建;m指定文件;用户名

[root@dns httpd]# htpasswd -muserpass tom ##取消c,否则覆盖了admin用户

[root@dns httpd]# cat /etc/httpd/userpass ##查看apache的用户

admin:$apr1$Audn1L2O$rfbIN2fRXIs8t8G9is2W5.

tom:$apr1$zaJD2jc8$jJdijeiEeS4C9eAskUmv6/

[root@dns httpd]# vim /etc/httpd/conf/httpd.conf

注: AuthUserFile "/etc/httpd/userpass" ###认证文件

AuthName "Please input username and password" ##用户访问时提示语句

AuthType basic ##认证类型:基础认证

# Require vaild-user ##/etc/httpd/userpass文件的所有人都可访问

Require user admin ##只有admin用户可输入密码访问

[root@dns httpd]# systemctl restart httpd.service

检测:浏览器上 /admin

<shift> + <ctrl> + <delete>##登陆一次后,再访问时不提供;此操作可清楚缓存好的密码

五、apache支持语言

1.php ##语言

[root@dns httpd]# vim /var/www/html/index.php ####在默认发布目录下建立文件作为php测试页

[root@dns httpd]# yum install php -y

[root@dns httpd]# systemctl restart httpd.service

测试:浏览器上 http://172.25.254.128/index.php

2.cgi ##通用网关接口

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

因此 , 在 Web 服务器级别和 SELinux 策略级别 , 都存在用于限制 CGI 脚本使用的设置.

[root@dns httpd]# mkdir /var/www/html/cgi

[root@dns conf.d]# semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?' ##更改安全上下文,与apache服务可匹配

[root@dns conf.d]# restorecon -RvvF /var/www/html/cgi/ ###刷新

[root@dns conf.d]# vim /var/www/html/cgi/index.cgi ##写cgi脚本

##显示时间

[root@dns httpd]# chmod +x /var/www/html/cgi/index.cgi ##给脚本执行权限

[root@dns conf.d]# vim /etc/httpd/conf.d/adefault.conf

注:

<Directory "/var/www/html/cgi"> ##指定目录

Options +ExecCGI ###目录中的所有cgi脚本都要执行

AddHandler cgi-script .cgi ###包含cgi-script字样及以.cgi结尾的都是cgi脚本

[root@dns conf.d]# systemctl restart httpd.service

测试:浏览器上 172.25.254.128/cgi/index.cgi

六、https

本来浏览器直接 可访问;但https:// 不可访问;因为无法直接加载证书(无网络认可)

http传输是明文的;https传输方式是加密传输,客户端把数据传给服务端是带锁的。

1.制作apache访问证书

如果加密的通信非常重要 , 而经过验证的身份不重要 , 管理员可以通过生成 self-signed certificate 来避免与认证机构进行交互

所带来的复杂性。使用 genkey 实用程序 ( 通过 crypto-utils 软件包分发 ),生成自签名证书及其关联的私钥。为了简化起见 ,genkey 将在“正确”的位置 (/etc/pki/tls 目录 ) 创建证书及其关联的密钥。相应地 , 必须以授权用户 (root) 身份运行该实用程序。

1)下载mod-ssl协议

mod-ssl是一种以openss的工具箱为基础,专门为apache提供密码保护,ssl(安全套接层)和tls(传输套接层)安全的协议

[root@dns conf.d]# yum install mod_ssl -y

[root@dns conf.d]# firewall-cmd --permanent --add-service=https ###在加强性火墙上打开https服务

[root@dns conf.d]# firewall-cmd --reload ###重新加载

[root@dns conf.d]# netstat -antlupe | grep httpd ###443加密端口打开

tcp6 0 0 :::443 :::* LISTEN 0 136071 16345/httpd

tcp6 0 0 :::80 :::* LISTEN 0 136059 16345/httpd

2)下载crypto-utils

crypto-utils提供纯java的加密API,用来简化公私钥和证书储存、对称和非对称加密方法的封装

[root@dns conf.d]# yum install crypto-utils -y

3)生成自签名证书及关联密钥

[root@dns conf.d]# genkey

存放位置>选择密钥大小(1024)>等待(开发者)、去random取数据(敲击apache服务器)>给CA颁布证书(no,因收费)>是否给证书加密(不选)>填信息

4)[root@dns conf.d]# vim /etc/httpd/conf.d/ssl.conf ##查看安装证书及其私钥

101 SSLCertificateFile /etc/pki/tls/certs/.crt ###证书地址

108 SSLCertificateKeyFile /etc/pki/tls/private/.key ###钥匙地址

[root@dns conf.d]# systemctl restart httpd.service

5)浏览器中https:// I understand risks > 下载证书 > 完成

##可以看到看到网址前面有一个小锁

2.设定https虚拟主机并设定网页重写

1)[root@dns conf.d]# mkdir -p /var/www/virtual//login

2)[root@dns conf.d]# vim /var/www/virtual//login/index.html

login 's page

3)[root@dns conf.d]# vim /etc/httpd/conf.d/login.conf

注:

<VirtualHost *:80>##设置访问80端口时自动跳转到443端口访问页面

ServerName

RewriteEngine on##网页重启功能开启

RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] 中:

^(/.*)$ ##客户主机在浏览器中输入的所有字符

https:// ##强制客户加密访问

%{HTTP_HOST} ##客户请求信息

$1 ##表示^(/.*)$的值

[redirect=301] ##临时重写,只转换

[redirect=301] ##永久重写,所有输入都转换到加密访问

[root@dns conf.d]# systemctl restart httpd.service

测试:浏览器上搜 可直接重启到

七、squid代理(翻墙)

squid可以做代理也可以做缓存。squid不仅可以做正向代理,又可以做反向代理。

正向代理,squid后面是客户端,客户端上网要通过Squid去上;反向代理,squid后面是服务器,服务器返回给用户数据需要走squid。

1.正向代理:客户已知代理主机,主动指定 ##此操作,主机68为代理,128为客户,服务端为某网站

[代理]

[root@foundation68 ~]# yum install squid.x86_64 -y

[root@foundation68 ~]# vim /etc/squid/squid.conf

注:http_access allow all ##代理接口3128允许所有人访问

http_port 3128

cache_dir ufs /var/spool/squid 100 16 256 ##代理取数据存放目录,此目录有16的一级目录,每个一级目录下有256个子目录

[root@foundation68 ~]# systemctl restart squid.service

[客户]

[root@dns mysqladmin]# ping ##网不通

[root@dns mysqladmin]# firefox & ##打开虚拟机浏览器

Edit----perferences---设置--网络---connecyion(建立)---manual---真机ip、端口---use---可进入网站

注意:此时虚拟机是不可以上网的,但它可把请求发给代理,代理将数据缓存到/var/spool/squid目录,虚拟机通过看代理主机的3128端口获取信息,进入网页

还原:

[root@foundation68 ~]# rpm -e squid

[root@foundation68 ~]# rm -fr /etc/squid/squid.conf.rpmsave

2.反向解析:企业服务端指定客户访问代理,客户并不知道

eg:腾讯的web机制------------------------------ 本次实验

总服务端有几台服务器(轮询)为缓解压力------- 128主机、112主机

代理,每个省份都有------------------------- desktop:228主机

客户访问腾讯实际到达代理的80端口----------- 68主机做客户访问

[总服务端]:有apache服务

[代理]:无apache服务,有80端口

[root@mm ~]# yum install squid.x86_64 -y ##安装服务

帮助手册: /usr/share/doc/squid-3.3.8/squid.conf.documented

[root@mm ~]# vim /etc/squid/squid.conf

56 http_access allow all

59 http_port 80 vhost vport ##80 虚拟域 虚拟端口

60 cache_peer 172.25.254.128 parent 80 0 proxy-only round-robin weight=2 name=web1

##缓存 代理主机 父级(服务) 端口 当代理挂了不通知 代理 调用 权重 代替此行所有

61 cache_peer 172.25.254.112 parent 80 3130 proxy-only round-robin name=web2 ##0 不通知;3130通知其他,要挂了

62 cache_peer_domain web1 web2 ##访问时,轮叫web1、web2

64 cache_dir ufs /var/spool/squid 100 16 256

[root@mm ~]# systemctl restart squid

[root@mm ~]# systemctl stop firewalld.service

[客户]:有apache服务

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

172.25.254.228

浏览器: 轮询:权重决定了访问两次128主机,一次112主机

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。