手机版

Apache配置多个虚拟主机和多个https服务的方法

2019-09-29 阅读 :

最近闲来无事,研究了一下apache在设置多个虚拟主机的同时添加多个https的服务

事实上apache在配置虚拟主机的时候,我们配置httpd-vhosts.conf这个文件(我已经将注释去除掉了,如果你的apache版本在2.2.x以上你大可放心的覆盖,也可以运行,不过你需要修改下hosts文件)  

  1. NameVirtualHost *:80
  2. <VirtualHost abc.com:80>
  3. DocumentRoot "D:\abc"
  4. ServerName abc.com
  5. <Directory "D:\abc>
  6. AllowOverride All
  7. Order Allow,Deny
  8. Allow from all
  9. </Directory>
  10. </VirtualHost>
  11. <VirtualHost xyz.com:80>
  12. DocumentRoot "D:\xyz"
  13. ServerName xyz.com
  14. <Directory "D:\xyz>
  15. AllowOverride All
  16. Order Allow,Deny
  17. Allow from all
  18. </Directory>
  19. </VirtualHost>
  20. <VirtualHost jx.com:80>
  21. DocumentRoot "D:\jx"
  22. ServerName jx.com
  23. <Directory "D:\jx>
  24. AllowOverride All
  25. Order Allow,Deny
  26. Allow from all
  27. </Directory>
  28. </VirtualHost>

一般的配置也可以可以达到目的了,服务器上面我们大可不必修改hosts文件,只需要将ServerName改成你的域名就成,当然你的域名必须做好解析到本台服务器上。

好了,虚拟主机的配置过程是十分简单的,下来再看如何配置多个https服务。

首先请确保你下载的apache是支持openssl的,如果没有那么就不要往下看了。(点我下载apache)

我们修改httpd.conf文件中的ssl设置项搜索这两行,请一行一行的搜

 
  1. #LoadModule ssl_module modules/mod_ssl.so
  2. #Include conf/extra/httpd-ssl.conf

将前面的“#”号删除掉。OK保存

下面我们再来生成证书,这里的教程我是以windows操作系统来演示的。

1、运行cmd,进入httpd的bin目录

cd C:\Program Files\Apache Software Foundation\Apache2.2\bin

2、如果你安装apache有openssl的话 那么在这个bin目录下会有一个openssl.exe的文件,我们来生成证书
  1. set openssl_conf=./openssl.cnf
  2. openssl genrsa 4096 -des3 > server.key
  3. openssl req -new -key server.key > server.csr

在第二步需要设置相关参数,下面我列出来
  1. Country Name (2 letter code) [AU]:CN #国家代码 建议CN
  2. State or Province Name (full name) [Some-State]:GUANGXI #所在省份
  3. Locality Name (eg, city) []:NANNING #城市
  4. Organization Name (eg, company) [Internet Widgits Pty Ltd]:YOURCOMP #你的公司名
  5. Organizational Unit Name (eg, section) []:HELLO #组织或机构
  6. Common Name (e.g. server FQDN or YOUR name) []:abc.com #申请证书的域名 重要
  7. Email Address []:admin@abc.com #管理员邮箱
  8. Please enter the following 'extra' attributes
  9. to be sent with your certificate request
  10. A challenge password []:123456 #交换密钥
  11. An optional company name []:abc.com #和你申请的域名一致就行了

再生成证书
  1. #生成证书的有效期
  2. openssl req -x509 -days 365 -key server.key -in server.csr > server.crt

你再看bin目录下面是不是有这三个文件了

crt

如果有了,OK我们的证书生成完毕。现在就开始配置https了,进入conf/extra文件夹中,找到一个httpd-ssl.conf的文件用文本工具打开它

  1. Listen 443
  2. #需要加上这段虚拟主机
  3. NameVirtualHost *:443
  4. AddType application/x-x509-ca-cert .crt
  5. AddType application/x-pkcs7-crl .crl
  6. SSLPassPhraseDialog builtin
  7. #请注意修改你的apache安装路径对应的log
  8. SSLSessionCache "shmcb:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)"
  9. SSLSessionCacheTimeout 300
  10. SSLMutex default
  11. #去除原来的*:443
  12. <VirtualHost xyz.com:443>
  13. DocumentRoot "d:/xyz_ssl"
  14. ServerName xyz.com:443
  15. SSLEngine on
  16. #最关键就是这里,我们上面生成的证书在这里就用到了,注意路径是否能够找到你的证书
  17. #我这里有两个https所以为了方便你会看到这里是另外一个证书 xyz.com的证书
  18. SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/xyz_cret/server.crt"
  19. SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/xyz_cret/server.key"
  20. <Directory "d:/xyz_ssl">
  21. Options -Indexes FollowSymLinks
  22. AllowOverride All
  23. Order allow,deny
  24. Allow from all
  25. </Directory>
  26. </VirtualHost>
  27. <VirtualHost abc.com:443>
  28. DocumentRoot "d:/abc_ssl"
  29. ServerName abc.com:443
  30. SSLEngine on
  31. #我这里有两个https所以为了方便你会看到这里是另外一个证书 abc.com的证书
  32. SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/abc_cret/server.crt"
  33. SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/abc_cret/server.key"
  34. <Directory "d:/abc_ssl">
  35. Options -Indexes FollowSymLinks
  36. AllowOverride All
  37. Order allow,deny
  38. Allow from all
  39. </Directory>
  40. </VirtualHost>

我已经把注释都删掉了,如果不出什么意外的话,将你的证书路径找对就可以运行,请注意上面的中文注释!!!

好了,重启apache服务,我们来看下效果。

crt1

搞定!

本文标题:Apache配置多个虚拟主机和多个https服务的方法 - 服务器教程_服务器技术_服务器知识_vps教程
本文地址:https://www.helloaliyun.com/tutorial/1062.html

相关文章

  • 阿里云服务器ECS实例Linux操作系统须知

    阿里云服务器ECS实例Linux操作系统须知 不要修改Linux实例默认的/etc/issue文件内容。否则,根据实例创建的自定义镜像的系统发行版本无法被正确识别,使用该镜像创建的实例无法正常启动。 不要随意更改根目录所在分区下...

    2019-11-19 服务器教程
  • 阿里云服务器ECS实例Windows操作系统须知

    阿里云服务器ECS实例Windows操作系统须知 不要停止Windows系统自带的AliyunService服务或自带的shutdownmon.exe进程,停止后可能会影响控制台正常关机或者重启。 不要修改域控制器的hostname。 不建议从域控制器的虚拟...

    2019-11-19 服务器教程
  • 关于阿里云服务器ECS实例的操作须知

    为了保证阿里云服务器ECS实例的正常运行,在使用阿里云服务器ECS实例之前,请您务必认真阅读以下注意事项。操作须知 创建ECS实例后,您拥有实例的管理员权限,阿里云没有权限登录您的实例。 禁止使用ECS实例做流量穿透服务。...

    2019-11-19 服务器教程
  • 什么是可用区(Zone)?

    可用区(Zone)可用区是指在同一地域内,电力和网络互相独立的物理区域。同一可用区内实例之间的网络延时更小。在同一地域内可用区与可用区之间内网互通,可用区之间能做到故障隔离。是否将实例放在同一可用区内,主要取决于对...

    2019-11-18 服务器教程
  • 购买阿里云服务器在选择地域时需要考虑哪些因素?

    购买阿里云服务器在选择地域时,您需要考虑以下几个因素: 地理位置 请根据您以及您目标用户所在的地理位置选择地域。 中国大陆 一般情况下建议选择和您目标用户所在地域最为接近的数据中心,可以进一步提升用户访问速...

    2019-11-18 服务器教程
你可能感兴趣