Closed Dev-Wiki closed 2 years ago
查看了 install.php代码:
public function isSecure(): bool
{
return (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && !strcasecmp('https', $_SERVER['HTTP_X_FORWARDED_PROTO']))
|| (!empty($_SERVER['HTTP_X_FORWARDED_PORT']) && 443 == $_SERVER['HTTP_X_FORWARDED_PORT'])
|| (!empty($_SERVER['HTTPS']) && 'off' != strtolower($_SERVER['HTTPS']))
|| (!empty($_SERVER['SERVER_PORT']) && 443 == $_SERVER['SERVER_PORT'])
|| (defined('__TYPECHO_SECURE__') && __TYPECHO_SECURE__);
}
应该是不符合上述条件, 我修改nginx转发如下:
plugin_host_header_rewrite = blog.devwiki.net
plugin_header_X-From-Where = frp
plugin_header_X_FORWARDED_PROTO= https
plugin_header_X_FORWARDED_PORT= 443
测试仍旧不行
<head>
<meta charset="<?php _e('UTF-8'); ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title><?php _e('Typecho 安装程序'); ?></title>
<link rel="stylesheet" type="text/css" href="<?php $options->adminStaticUrl('css', 'normalize.css') ?>" />
<link rel="stylesheet" type="text/css" href="<?php $options->adminStaticUrl('css', 'grid.css') ?>" />
<link rel="stylesheet" type="text/css" href="<?php $options->adminStaticUrl('css', 'style.css') ?>" />
<link rel="stylesheet" type="text/css" href="<?php $options->adminStaticUrl('css', 'install.css') ?>" />
<script src="<?php $options->adminStaticUrl('js', 'jquery.js'); ?>"></script>
</head>
从代码看这里计算 adminStaticUrl 的 scheme 返回了 http 而非 https, 最后落到上面的函数那里, 我这里没环境无法调试
这个应该属于https变量判断的问题,你可以放一个phpinfo文件看看这些变量是否传递过来了。
这个应该属于https变量判断的问题,你可以放一个phpinfo文件看看这些变量是否传递过来了。
我本地docker测试也是不行, 配置如下:
version: '3'
services:
typecho-server:
image: joyqi/typecho:nightly-php7.4-apache
volumes:
- ./:/app/usr
environment:
TIMEZONE: Asia/Shanghai
MEMORY_LIMIT: 100m
MAX_POST_BODY: 50m
TYPECHO_SITE_URL: https://blog.devwiki.net
ports:
- "80:80"
- "4443:443"
同时 host 修改为:
127.0.0.1 blog.devwiki.net
使用 http://blog.devwiki.net/install.php 能打开页面, 但是使用https 无法打开页面.
这个应该属于https变量判断的问题,你可以放一个phpinfo文件看看这些变量是否传递过来了。
我改了下 header, 下划线 改为 连字符 能识别了
plugin_header_X-From-Where = frp
plugin_header_X_FORWARDED_PROTO= https
plugin_header_X-FORWARDED-PROTO= https
plugin_header_X_FORWARDED_PORT= 443
plugin_header_X-FORWARDED-PORT= 443
frp配置修改 解决此问题
docker配置:
绑定了域名, 使用 https 访问界面如下:
![Uploading image.png…]()
使用 http 访问正常