环境:Apache2.2 + Centos 6.8 最近做网站需要用到https,像百度、京东那样,浏览器上有个绿色的小锁头,同时数据加密也是网站很大的保障。由于是临时测试的,所以在阿里云上面买了个赛门铁克的免费型的证书。(中间申请部分略过)证书最后颁发的时候,可以在列表页操作下载,进入下载页,选择Apache,然后可以按照上面的官方的文档配置,但是不需要这么做,刚开始弄这个的人,估计度娘谷歌了很久还是懵逼,因为最后在地址栏输入域名刷新的时候,却不是自己想要的效果。要这么来,保准你次次都行。咋们先要这么想:比如我手上有个一个域名www.#.com,那既然是要全站强制跳转https,那就要配两个虚拟主机,一个是监听80端口的,这个虚拟机只做监听和转发的工作,不用配置啥站点根目录。还有一个是监听443端口的,这个做真正的访问工作,除了需要配置原本没有ssl之前80虚拟机需要做的工作外,还要开启ssl引擎验证、指定证书位置、私钥(私钥都放自己的服务器上用来接收请求的时候解密数据用的;公钥是访问的时候,客户端会下载),看懂了上面的话,下面的配置就不成问题了。
#记得监听这个端口Listen 443#load这个ssl模块进来LoadModule ssl_module modules/mod_ssl.so ServerName www.#.com ServerAlias #.com RewriteEngine on RewriteRule ^(.*)?$ https://www.#.com$1 [R=301,L] ServerAdmin #@163.com DocumentRoot "/home/#/webroot" ServerName www.#.com #开启ssl引擎 SSLEngine on #写你证书的路径 SSLCertificateFile /etc/httpd/cert/public.pem #写你私钥的路径 SSLCertificateKeyFile /etc/httpd/cert/21427950260000000.key #设置站点访问规则 Options FollowSymLinks AllowOverride None Order allow,deny Allow from all #指定错误日志&访问日志 ErrorLog "logs/#.com-error_log" CustomLog "logs/#.com-access_log" common
其中要说明的是,在80虚拟机配置的最后一行,^(.*)? 和$1 这两东西代表了比如你访问了www.#.com/public/index/ ,那么这段url的/public/index/会被占位的$1变量都会照旧复制过来,[R=301,L]代表永久转发。其实现在好多人都一窝蜂的都去用nginx了,抗高并发比apache牛,占用内存也少,可以考虑从apache+tomcat转向nginx+tomcat了,apache只是情怀
【文章原创作者:韩国服务器 https://www.68idc.cn 欢迎留下您的宝贵建议】