前言
- Apache 2.4.39
- phpStudy 8.1.1.2
- tomcat 8.0 的项目
准备
-
在
httpd.conf
配置文件中加载 Http 反向代理用到的模块LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_http_module modules/mod_proxy_http.so
-
确保引入vhost文件。
phpStudy 8.1.1.2
中,在httpd.conf
配置文件中,有下面这段配置:# Virtual hosts Include conf/vhosts/*.conf
- 该配置表示
conf/vhosts
目录下,以.conf
后缀结尾的配置文件,会被apahce加载。 - 如果没有该段配置,或者该段配置被注释掉,则添加上该段配置。
- 该配置表示
Apache 配置 Https 的好处
在 Tomcat 中启用 Https也可以的(参考这里)。
服务器上肯定是多个应用共用一台。多个应用共用一台服务器时,就会涉及到端口冲突。比如,你也想用443端口,我也想用443端口,怎么办呢?就需要 Apache 配置反向代理。
Apache 配置 Https 反向代理
(Apache 配置 Https 反向代理 和 Apache 配置 Http 反向代理是一样的)
- 将正式放在指定位置。
将证书放在apache的安装目录/conf/ssl
目录。比如:C:\phpstudy_pro\Extensions\Apache2.4.39\conf\ssl
。 - 将证书文件按照规律进行命名。
私钥文件:域名.key。比如:weixin.xxx.com.key
。
公钥文件:域名.crt。比如:weixin.xxx.com.crt
。
证书链文件:域名chain.crt。比如:weixin.xxx.comchain.crt
。 - 创建网站。
- 在
conf/vhosts
目录下找到虚拟主机(VirtualHost
)配置文件weixin.xxx.com_443.conf
。修改该配置文件为如下:
<VirtualHost *:443>
# server name
ServerName weixin.xxx.com:443
# document root
DocumentRoot "C:/phpstudy_pro/WWW/weixin.xxx.com"
<Directory "C:/phpstudy_pro/WWW/weixin.xxx.com">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
DirectoryIndex index.html
</Directory>
# SSL
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/ssl/weixin.xxx.com.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/weixin.xxx.com.key"
SSLCertificateChainFile "${SRVROOT}/conf/ssl/weixin.xxx.comchain.crt"
# log
CustomLog "${SRVROOT}/logs/weixin.xxx.com_ssl.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ProxyRequests off
ProxyPass /office ajp://localhost:9013/office
ProxyPassReverse /office ajp://localhost:9013/office
ProxyPass /officeapi http://localhost:9020/officeapi
ProxyPassReverse /officeapi http://localhost:9020/officeapi
# error
ErrorDocument 400 /error/400.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
ErrorDocument 501 /error/501.html
ErrorDocument 502 /error/502.html
ErrorDocument 503 /error/503.html
ErrorDocument 504 /error/504.html
ErrorDocument 505 /error/505.html
ErrorDocument 506 /error/506.html
ErrorDocument 507 /error/507.html
ErrorDocument 510 /error/510.html
</virtualhost>
注:
-
${SRVROOT}
为apache的安装目录。比如:C:\phpstudy_pro\Extensions\Apache2.4.39
。 - apache 反向代理 tomcat 时,使用 ajp 协议优于 http 协议(参考 AJP 与HTTP 比较和分析)。
- 当通过浏览器访问
https://weixin.xxx.com/office
时,Apache 将调用http://localhost:9010/office
得到的结果返回给浏览器 - 当通过浏览器访问
https://weixin.xxx.com/officeapi
时,Apache 将调用http://localhost:9020/officeapi
得到的结果返回给浏览器 - 当通过浏览器访问
https://weixin.xxx.com/images/default/head.jpg
时,Apache 将调用C:/phpstudy_pro/WWW/test/images/default/head.jpg
返回给浏览器。如果C:/phpstudy_pro/WWW/test/images/default/head.jpg
文件不存在,将会触发404错误,将C:/phpstudy_pro/WWW/test/error/404.html
返回给浏览器。
- 重启apache。
- 测试一下。
- 检查证书按照是否完整
访问这个网址进行检查:https://www.myssl.cn/tools/check-server-cert.html
检查结果:
Apache 配置 Http 自动跳转 Https
- 在
weixin.xxx.com.conf
配置文件中添加虚拟主机(VirtualHost
)。
<VirtualHost *:80>
# server name
ServerName weixin.xxx.com
# document root
DocumentRoot "C:/phpstudy_pro/WWW/test"
<Directory "C:/phpstudy_pro/WWW/test">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
DirectoryIndex index.html
</Directory>
# log
# use default
# error
ErrorDocument 400 /error/400.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
ErrorDocument 501 /error/501.html
ErrorDocument 502 /error/502.html
ErrorDocument 503 /error/503.html
ErrorDocument 504 /error/504.html
ErrorDocument 505 /error/505.html
ErrorDocument 506 /error/506.html
ErrorDocument 507 /error/507.html
ErrorDocument 510 /error/510.html
# http redirect to https
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</VirtualHost>
参考
- 【SSL】openssl 提取 PKCS 证书库中的公钥、私钥、证书、密钥
- apache ProxyPass指令详解
- 设置Apache下HTTPS 自动跳转为 HTTP
- Apache Rewrite规则详解
- Apache配置HTTPS功能
- Apache配置正向代理与反向代理
- AJP与HTTP比较和分析
- Tomcat的HTTP和AJP连接器
- https://blog.csdn.net/tjmljw/article/details/84369413