[bug]1.0正式版端口转发问题

Bug,需求以及想法
回复
8car
帖子: 9
注册时间: 2012年 7月 1日 13:56
联系:

[bug]1.0正式版端口转发问题

帖子 8car »

环境是 LLMP,内网端口80被占用了,因此用的8080做的内网web端口。为保证外网正确访问,做了8080到80端口的转发。0.9版的时候一切都没有问题。1.0版就出现问题了。访问网站时会自动加上8080端口,手动删除端口号能正常访问,但网站内所有链接都自动加上了端口号。无法正常访问。
头像
ClayMore
帖子: 2481
注册时间: 2007年 11月 29日 02:55
来自: Sleeping Forest
联系:

Re: [bug]1.0正式版端口转发问题

帖子 ClayMore »

有个探测端口的类


__________________
阿里百秀Alibaixiu主题 v5.6 For Typecho http://xiu.160.me/
8car
帖子: 9
注册时间: 2012年 7月 1日 13:56
联系:

Re: [bug]1.0正式版端口转发问题

帖子 8car »

请问这个怎么处理呢?0.9的一切正常
xiaomao
帖子: 3
注册时间: 2015年 3月 18日 08:39

Re: [bug]1.0正式版端口转发问题

帖子 xiaomao »

参考这个吧。也是端口问题
http://blog.jiujiudeliwu.com/archives/37/
头像
ClayMore
帖子: 2481
注册时间: 2007年 11月 29日 02:55
来自: Sleeping Forest
联系:

Re: [bug]1.0正式版端口转发问题

帖子 ClayMore »

阿里云ACE公测,把博客搬上来了。

大概流程:

上传文件,修改数据库配置文件,导入数据库,成功访问~

不过还是有些小问题的。

==============问题1:无法登录后台======================

症状:

登录后台后还是显示登录页面。
原因:

Typecho1.0有个安全模块。根据提交的地址生成TOKEN。但是获取的时候出了点问题,ACE默认好象不是80端口,导致获取到的URL类似http://www.xxx.com:/....导致生成的TOKEN不一致。
解决办法:

修改 /var/Typecho/Request.php 文件 222 行:

. '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']);
//. (in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT']);

注释223行。在222行结尾添加 ;
===========问题2:官方的ACE伪静态有问题,页面文件无法访问=======
症状:

http://www.xx.com/abc.html格式的地址显示404错误
原因:

ACE的伪静态规则,貌似对.html文件没有效果,要单独写一条正对HTML文件的。
解决方法:

用下面的伪静态规则(app.yaml):
tryuri:
- path: /
script: /index.php

rewrite:
- url: ^/index.php/(.*)$
script: /index.php?$1
- url: ^/(.+\.html)$
script: /index.php?$1 last
#配置完以后。记得重启应用(阿里云后台重启)~
#这个伪静态也不是太完美,好象页面文件不能评论- -先这样吧,以后在研究,初步线索是伪静态的锅

解决方法2:
或者不用.html后缀,但是页面文件还是无法评论- -囧~
评论可以了~
无法评论是我的页面静态地址有问题:/page/{slug}/
这样写就好了:/{slug}/

=======吐槽



__________________
阿里百秀Alibaixiu主题 v5.6 For Typecho http://xiu.160.me/
knight1394
帖子: 1
注册时间: 2015年 10月 15日 17:53

Re: [bug]1.0正式版端口转发问题

帖子 knight1394 »

编辑 /var/www/html/var/Typecho/Request.php 223行

222 . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])
223 . (in_array($_SERVER['SERVER_PORT'], array(80, 443, 要过滤的端口)) ? '' : ':' . $_SERVER['SERVER_PORT']);

例如转发的端口是8080 (8080→80)作如下修改:

222 . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])
223 . (in_array($_SERVER['SERVER_PORT'], array(80, 443, 8080)) ? '' : ':' . $_SERVER['SERVER_PORT']);
回复