Apache 之三 - 启用 HTTPS
关于 Apache 安装部分,请参考:在 ubuntu 22.04 中,通过源码编译安装 LAMP 中的 Apache 服务
关于 Apache 虚拟主机的配置,请参考:Apache 之一 - 虚拟主机
为了演示效果,我这里又重新租用了一台非大陆的服务器,将之前所有的安装配置又重新做了一次
注意:以下操作都在 root 用户下执行
域名证书申请
由于我们之前已经解析好了域名 apache.xxxxu.com
,所以我们只需要借助 腾讯云 去申请免费 1 年的 SSL 证书即可!具体申请过程这里不做演示。
证书申请好后,找到 apache 版本的下载到服务器的指定目录,然后解压到 /usr/local/ssl/
目录下
Apache 主配置文件
1.编辑 apache 主配置文件 /usr/local/apache2/conf/httpd.conf
,找到 #LoadModule ssl_module modules/mod_ssl.so
和 #Include conf/extra/httpd-ssl.conf
,将前面的 #
号去掉,启用 SSL 支持:
1 | # 加载 SSL 模块 |
2.编辑 /usr/local/apache2/conf/extra/httpd-ssl.conf
文件,将默认的 HTTPS 虚拟主机配置注释掉,只保留如下内容:
1 | Listen 443 |
SSL 配置
1.编辑 apache 虚拟主机配置文件 /usr/local/apache2/conf/extra/httpd-vhosts.conf
, 在 基于单域名的虚拟主机配置
的虚拟主机配置下面添加如下虚拟主机配置:
1 | ## 基于单域名的虚拟主机配置 |
注意: 在配置强制跳转时, AllowOverride
参数的值不能为 autoconfig
,否则服务器日志会报 RewriteEngine not allowed here
的错。同时,前端页面也会出现无法访问,报 500 Internal Server Error
的错误。所以,在这里我们需要将 AllowOverride
参数的值修改为 all
2.配置完成后。保存退出!执行 apache 配置检查命令,并重启 apache 服务:
1 | apachectl -t && apachectl restart |
3.打开浏览器,输入: https://apache.xxxxu.com
,如图:
强制 HTTP 跳转到 HTTPS
1.编辑 apache 主配置文件 /usr/local/apache2/conf/httpd.conf
,找到 #LoadModule rewrite_module modules/mod_rewrite.so
并将前面的 #
号去掉,表示启用重写模块:
1 | sed -i 's@#LoadModule rewrite_module modules/mod_rewrite.so@LoadModule rewrite_module modules/mod_rewrite.so@' /usr/local/apache2/conf/httpd.conf |
2.在虚拟主机定义的 DocumentRoot
目录 /data/websites/apache/site03
下新建 .htaccess
文件,内容为:
1 | cat << 'EOF' > /data/websites/apache/site03/.htaccess |
或者:
1 | cat << 'EOF' > /data/websites/apache/site03/.htaccess |
3.打开浏览器,输入域名 http://apache.xxxxu.com
看能否自动跳转到 https://apahe.xxxxu.com
(这里无法截图演示)
注意:配置 HTTP 强制跳转 HTTPS, 必须配置 2 个虚拟主机,一个为 80 端口,一个为 443 端口,二者缺一不可!