http 高级配置 虚拟主机,https 编译安装

目录

  • http 高级配置 虚拟主机,https 编译安装

    • http 重定向 https

      • HSTS
      • HSTS preload list
    • http 自带的工具程序
    • httpd的压力测试工具
    • 实现状态页
    • 反向代理功能
    • 虚拟主机
      • 配置格式
      • 基于IP的虚拟主机配置
      • 基于端口的虚拟主机配置
      • 基于FQDN(主机头)的虚拟主机
    • 搭建Https
      • 创建CA服务器
      • 为服务器申请证书
      • web服务器安装ssl 模块

http 高级配置 虚拟主机,https 编译安装

http 重定向 https

将http请求转发至https的URL,防止客户在访问网站的时候,使用http协议头,而不使用https。造成不安全的连接。但是这个方法存在一个问题,因为他的连接步骤是这个样子的。而且他不存在记录一说,用户每次使用http来访问,他都会重定向一次。

重定向
Redirect [status] URL-path URL

status状态:
Permanent:Returns a permanent redirect status (301) indicating thatthe resource has moved permanently
Temp:Returns a temporary redirect status (302). This is the default

配置示例:

vim /etc/httpd/conf.d/redirect.conf
Redirect temp / https://www.magedu.com/

HSTS

HSTS:HTTP Strict Transport Security
服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将所有HTTP访问请求在内部做307跳转到HTTPS。而无需任何网络过程。这样的话,只有第一次访问,才会是使用http协议,后面都自动默认https协议

实现HSTS示例:

vim /etc/httpd/conf.d/redirect.conf
Header always set Strict-Transport-Security "max-age=31536000"
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]

HSTS preload list

是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表。当你的网址加入该列表后,使用浏览器访问该网站,只会使用https协议。

http 自带的工具程序

htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具
apachectl:httpd自带的服务控制脚本,支持start和stop
rotatelogs:日志滚动工具
access.log -->
access.log, access.1.log -->
access.log, acccess.1.log, access.2.log

httpd的压力测试工具

httpd的压力测试工具

  • ab, webbench, http_load, seige
  • Jmeter 开源
  • Loadrunner 商业,有相关认证
  • tcpcopy:网易,复制生产环境中的真实请求,并将之保存

ab [OPTIONS] URL,来自httpd-tools包

  • -n:总请求数
  • -c:模拟的并行数
  • -k:以持久连接模式测试
  • ulimit –n # 调整能打开的文件数

实现状态页

#vim /etc/httpd/conf.d/test.conf
<Location "/status">
    SetHandler server-status
    Require all granted
</Location>

反向代理功能

启用反向代理

特定URL反向代理

示例:

<VirtualHost *>
ServerName www.magedu.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>

虚拟主机

在一个物理服务上,搭建多个web站点,根据用户的访问。返回不同的站点

站点标识: socket

  • IP相同,但端口不同
  • IP不同,但端口均为默认端口
  • FQDN不同: 请求报文中首部 Host: www.magedu.com

有三种实现方案:

  • 基于ip:为每个虚拟主机准备至少一个ip地址
  • 基于port:为每个虚拟主机使用至少一个独立的port
  • 基于FQDN:为每个虚拟主机使用至少一个FQDN

注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可

配置格式

<VirtualHost IP:PORT>
    ServerName FQDN
    DocumentRoot “/path"
</VirtualHost>
建议:上述配置存放在独立的配置文件中,不要写在http.conf中,方便管理

其它可用指令:
ServerAlias:虚拟主机的别名;可多次使用
ErrorLog: 错误日志
CustomLog:访问日志
<Directory “/path"> </Directory>
Alias

基于IP的虚拟主机配置

#给网卡添加多个地址
ip a add 192.168.30.11/24 dev eth0
ip a add 192.168.30.22/24 dev eth0
ip a add 192.168.30.33/24 dev eth0

<VirtualHost 192.168.30.11>
    #虚拟主机的别名;可多次使用,目前是不起作用的
    ServerName www.a.com
    #指定根目录
    DocumentRoot "/data/website1"
    #错误日志
    ErrorLog "logs/a.com-error_log"
    #访问日志
    TransferLog "logs/a.com-access_log"
</VirtualHost>

<VirtualHost 192.168.30.22>
    #虚拟主机的别名;可多次使用,目前是不起作用的
    ServerName www.b.com
    #指定根目录
    DocumentRoot "/data/website2"
    #错误日志
    ErrorLog "logs/b.com-error_log"
    #访问日志
    TransferLog "logs/b.com-access_log"
</VirtualHost>

<VirtualHost 192.168.30.33>
    #虚拟主机的别名;可多次使用,目前是不起作用的
    ServerName www.c.com
    #指定根目录
    DocumentRoot "/data/website3"
    #错误日志
    ErrorLog "logs/c.com-error_log"
    #访问日志
    TransferLog "logs/c.com-access_log"
</VirtualHost>

基于端口的虚拟主机配置

vim /etc/http/conf.d/vhost.conf

mkdir /data/website{1,2,3} -pv

echo www.a.com > /data/website1/index.html
echo www.b.com > /data/website2/index.html
echo www.c.com > /data/website3/index.html

多个网站就要使用多个不同的端口绑定

listen 81
listen 82
listen 83

创建虚拟主机
#要绑定的IP和端口号
<VirtualHost *:81>
    #虚拟主机的别名;可多次使用,目前是不起作用的
    ServerName www.a.com
    #指定根目录
    DocumentRoot "/data/website1"
    #错误日志
    ErrorLog "logs/a.com-error_log"
    #访问日志
    TransferLog "logs/a.com-access_log"
</VirtualHost>

#要分权限,配合虚拟主机目录使用
<Directory "/data">
    Require all granted
</Directory>

将上述配置修改三份,对应上面的创建目录
建议:上述配置存放在独立的配置文件中,如果是在centos7 分配虚拟主机,一定要给目录权限!!!否则无法访问!!!一定要给目录权限!!!否则无法访问!!!

基于FQDN(主机头)的虚拟主机

靠主机头的HOST地址来区分,根据不同的主机头,来返回不同的网站
根据虚拟主机中定义的ServerName


<VirtualHost *:80>
    #这就是指定的访问主机头
    ServerName www.a.com
    #指定根目录
    DocumentRoot "/data/website1"
    #错误日志
    ErrorLog "logs/a.com-error_log"
    #访问日志
    TransferLog "logs/a.com-access_log"
</VirtualHost>

<VirtualHost *:80>
    #这就是指定的访问主机头
    ServerName www.b.com
    #指定根目录
    DocumentRoot "/data/website2"
    #错误日志
    ErrorLog "logs/b.com-error_log"
    #访问日志
    TransferLog "logs/b.com-access_log"
</VirtualHost>

<VirtualHost *:80>
    #这就是指定的访问主机头
    ServerName www.c.com
    #指定根目录
    DocumentRoot "/data/website3"
    #错误日志
    ErrorLog "logs/c.com-error_log"
    #访问日志
    TransferLog "logs/c.com-access_log"
</VirtualHost>

centos 6 上实现的时候有一点差别,如果要实现基于名称(主机头)的虚拟主机,要加上NameVirtualHost 这一行,否则无法实现。
centos 6 上实现的时候有一点差别,如果要实现基于名称(主机头)的虚拟主机,要加上NameVirtualHost 这一行,否则无法实现。
centos 6 上实现的时候有一点差别,如果要实现基于名称(主机头)的虚拟主机,要加上NameVirtualHost 这一行,否则无法实现。

这样就表示客户端 访问www.a.com就返回 a.com,访问b.com就返回b.com,访问c.com就返回c.com
在浏览器敲网址的时候,比如www.a.com ,他不仅仅是DNS解析,还会向服务器发送 HOST : www.a.com 的标记
如果是按网络地址(IP地址)来访问,那么是返回虚拟主机中的第一个,第一个就属于默认网站。

搭建Https

https = http + ssl

创建CA服务器


 cd /etc/pki/CA

 #生成CA私钥
 (umask 077; openssl genrsa -out pirvate/cakey.pem 2048) 

#创建自签名证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

echo 01 > serial
touch index.txt

为服务器申请证书


cd /etc/httpd/
mkdir certs
cd certs

 #生成私钥
(umask 077;openssl genrsa -out httpd.key 2048)

#生成证书签署请求
openssl req -new -key httpd.key -out httpd.csr -days 3655 

#签名
openssl ca -in httpd.csr -out httpd.crt -days 3655

web服务器安装ssl 模块

yum install mod_ssl 

安装后会在/etc/pki/tls 下生成该包的一个私钥,一个自签名证书。
所以如果不自己搭建CA,是可以直接使用的

配置mod_ssl配置文件 ,在安装这个模块后,这个文件会自己生成
vim /etc/httpd/conf.d/ssl.conf 

#修改成我们自己的CA

#指定证书
SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt
#指定私钥
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key
#指定CA的路径 默认该行是注释状态的
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem

重启服务
service httpd restart

注意:ssl会话只能基于IP创建,这意味着如果服务器仅有一个IP,那么仅为一个虚拟主机提供https服务

原文地址:https://www.cnblogs.com/ddz-linux/p/10699410.html

时间: 2024-10-25 08:00:04

http 高级配置 虚拟主机,https 编译安装的相关文章

马哥教育第二十一天httpd高级配置详解、编译安装

1.httpd.conf配置文件                 ★设置默认字符集                         AddDefaultCharset ★CGI脚本路径                         ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"指定cgi路径别名                               bash写CGI脚本:                                  所有

centos7编译安装apache后添加用户认证和配置虚拟主机

编译安装apache后的目录文件:/usr/local/apache2 1:用户认证 主配置目录:/usr/local/apache2/conf/ 1)建立目录并设置用户认证: Alias  /1.php/ "/usr/local/apache2/htdocs/1.php" <Directory"/usr/local/apache2/htdocs/"> AllowOverride None Options None Order allow,deny De

apache安装、配置虚拟主机、配置日志

apache的安装与配置 安装 01)下载httpd-2.2.27.tar.gz 02)解压:tar xf httpd-2.2.27.tar.gz 然后进入解压的文件查看INSTALL和RAEDME 03)直接make会出错,然后进行编译(也会有问题,这时候yum -y install zlib zlib-devel即可解决),然后进行编译: ./configure --prefix=/application/apache2.2.27 \   安装路径 --enable-deflate \   

基于httpd-2.2和httpd-2.4配置虚拟主机web站点,并提供https服务(二)

使用httpd-2.2和httpd-2.4实现 > 1.建立httpd服务,要求: > 1) 提供两个基于名称的虚拟主机www1, www2:要求每个虚拟主机都有单独的错误日志和访问日志: > 2) 通过www1的/server-status提供状态信息,且仅允许172.16.0.1主机访问: > 3) www2不允许192.168.1.0/24网络中任意主机访问: > 2.为上面的第2)个虚拟主机提供https服务. > 二.基于httpd-2.4配置虚拟主机web站

基于httpd-2.4配置虚拟主机web站点,并提供https服务(二)

使用httpd-2.2和httpd-2.4实现 > 1.建立httpd服务,要求: > 1) 提供两个基于名称的虚拟主机www1, www2:要求每个虚拟主机都有单独的错误日志和访问日志: > 2) 通过www1的/server-status提供状态信息,且仅允许172.16.0.1主机访问: > 3) www2不允许192.168.1.0/24网络中任意主机访问: > 2.为上面的第2)个虚拟主机提供https服务. > 基于httpd-2.4配置虚拟主机web站点,

laravel基础①安装、配置虚拟主机

一.laravel有四种安装方法 1.用composer从资源库里面下载,同时自动安装依赖库,命令行输入: composer create-proiect laravel/laravel=5.1.33 项目名称 2.手动下载laravel本身,然后用composer下载安装依赖库 下载laravel 再到项目目录下 执行composer install 3.打包下载别人安装压缩好的laravel本身和依赖库 不需要安装composer 4.用laravel安装下载器,自动帮你安装,但是严重不推荐

mac 安装apache 配置虚拟主机

来源:http://blog.csdn.net/qianling3439/article/details/29410381 启动Apache 打开“终端(terminal)”,输入 sudo apachectl -v,(可能需要输入机器秘密).如下显示Apache的版本 接着输入 sudo apachectl start,这样Apache就启动了.打开Safari浏览器地址栏输入 “http://localhost”,可以看到内容为“It works!”的页面.其位于“/Library(资源库)

使用nginx进行反向代理(配置虚拟主机)

需求:使用不同的域名.访问相同的ip,获取到不同的端口服务器 (Linux服务器) 安装nginx需要的环境(有可能安装上的) nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装 yum install gcc-c++ PCRE PCRE(PerlCompatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表

Centos 7搭建Nginx网站服务器及配置虚拟主机

Nginx专为性能优化而开发,其最大的优点就是它的稳定性和低系统资源消耗,以及对http并发连接的高处理能力,单台物理服务器可支持20000~50000个并发请求,正是如此,大量提供社交网络.新闻资讯.电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供web服务,目前中国大陆使用nginx网站用户有:新浪.网易.腾讯,另外知名的微网志Plurk也使用nginx. Nginx是一个很牛的高性能Web和反向代理服务器,它具有有很多非常优越的特性: 高并发连接:官方测试能支撑5万并发连接,在实际生