创建 HTTPS 服务

我们建议您使用 Nginx 反向代理的方案来创建 HTTPS 服务,这并不会画蛇添足,在多数情况下会更加方便,比如:绑定多域名、静态资源请求处理、以后可能添加的重定向规则、负载均衡等等,都可以通过 Nginx 完成,同时并不影响常驻内存运行,这也是两种最通用的办法之一。

通过 Nginx 创建 https 服务

若您使用宝塔等集成环境,可以先创建站点,再编辑站点的(Nginx)配置文件。

bash 复制代码
server {
  # 监听 443(这行不能少)
  listen 443;
  server_name 站点域名.com;

  # SSL 相关配置开始,部分集成环境能可视化配置证书,所以若已存在则不再需要手动配置,主要是证书和秘钥路径 <<<
  # 证书文件路径(绝对路径)
  ssl_certificate /etc/ssl/server.pem;
  # 证书秘钥文件路径(绝对路径)
  ssl_certificate_key /etc/ssl/server.key;
  ssl_session_timeout 5m;
  ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  # SSL 相关配置结束 >>>

  # 以下配置和 thinkphp 的伪静态规则冲突,请去除伪静态规则
  # 反向代理配置开始,部分集成环境能可视化配置反向代理,所以若已存在则不再需要手动配置 <<<
  location / {
    # 若有自定义 http 服务端口,请注意修改
    proxy_pass http://127.0.0.1:8000;
    proxy_http_version 1.1;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Connection "Upgrade";
  }
  # 反向代理配置结束 >>>
}

通过系统内配置创建 https 服务

  1. 需要 PHP 已经安装了 openssl 扩展
  2. 已经申请了证书(pem/crt 文件及 key 文件)放在了 /etc/ssl 目录(示例路径,可自定义,程序有访问权限即可)
  3. 找到 config/worker_http.php 配置文件,做如下配置
  4. 完成配置后,您必需使用 SSL 证书对应的域名访问站点,不可通过 ip 访问,不可通过 http 访问
php 复制代码
return [
    // Worker的参数(支持所有配置项)
    'option'       => [
        // 以上略,请增加以下配置项,设置 transport 开启 ssl
        'transport' => 'ssl',
    ],

    // socket 上下文选项,可配置SSL证书等
    'context'      => [
        'ssl' => [
            'local_cert'        => '/etc/ssl/server.pem', // 也可以是 crt 文件
            'local_pk'          => '/etc/ssl/server.key',
            'verify_peer'       => false,
            'allow_self_signed' => false, // 如果是自签名证书需要开启此选项
        ]
    ],
];