Apache+PHP+SSL+多域名配置
1. 环境说明
使用apache24,PHP7.0;
网站证书文件通过阿里云申请免费版;
操作系统环境:windows。
2. 阿里云域名及证书申请
证书申请过程略。注意下载apache类型的。
将证书文件解压后,放在合适位置。
注意域名解析,自行配置。
3. PHP配置
将PHP解压,这里解压到C盘根目录。
根据项目情况对PHP进行配置,这里不做说明。
4. Apache配置
将Apache解压,这里解压到C盘根目录。
将Apache加入系统服务:命令行进入apache的bin目录后,执行命令:httpd.exe -k install
修改配置文件,conf/httpd.conf。这里只列出关键片段。
根据apache位置修改serverroot
ServerRoot "c:/Apache24"
设置监听端口,这里监听8080端口。
实际上,https走443端口,这里只要不和其他程序冲突即可
Listen 8080
加载PHP模块,PHP7只有apache2.4版本的模块,没有2.2的;注意这里有引号
LoadModule php7_module "C:\PHP\php7apache2_4.dll"
配置 php.ini的路径,这里没有引号
PHPIniDir C:\PHP
设置默认处理文件类型提交到Apache服务器处理
AddType application/x-httpd-php .php
放开如下代码
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
设置错误日志
ErrorLog "d:/rclogs/error.log"
设置日志
CustomLog "d:/rclogs/access.log" common
加载ssl相关配置(这里直接修改原有ssl配置文件,也可新建)
Include conf/extra/httpd-ssl.conf
说明:根据实际情况启用模块。
5. SSL配置文件
在指定位置创建配置文件,这里直接修改httpd-ssl.conf。文件内容可参考下面。
Listen 443
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
这里根据实际路径修改
SSLSessionCache "shmcb:c:/Apache24/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
配置访问规则
这里根据实际路径修改,本例中website1下放置网站1的源代码
DocumentRoot "c:/Apache24/htdocs/website1"
ServerName 使用域名1替换
ServerAdmin site1@12222.com
ErrorLog "c:/Apache24/logs/error.log"
TransferLog "c:/Apache24/logs/access.log"
SSLEngine on
SSLCertificateFile "域名1证书路径/XXXXXX_public.crt"
SSLCertificateKeyFile "域名1证书路径/XXXXXX.key"
SSLCertificateChainFile "域名1证书路径/XXXXXX _chain.crt"
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "c:/Apache24/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
多个域名处理
这里根据实际路径修改,本例中website2下放置网站2的源代码
DocumentRoot "c:/Apache24/htdocs/website2"
ServerName使用域名2替换
ServerAdmin site2@qq.com
ErrorLog "c:/Apache24/logs/errorjm.log"
TransferLog "c:/Apache24/logs/accessjm.log"
SSLEngine on
SSLCertificateFile "域名2证书路径/XXXXXX_public.crt"
SSLCertificateKeyFile "域名2证书路径/XXXXXX.key"
SSLCertificateChainFile "域名2证书路径/XXXXXX_chain.crt"
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "c:/Apache24/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
6. 小结
配置完成后,浏览器地址栏输入域名1或域名2,进入对应的网站。
根据实际需要,PHP可能有其他配置。因为没有通用性,这里来未加说明。