ngnix修改80端口为8080,并解决改端口后typecho的小bug

lnmp+typecho,莫名80不能访问了(神奇的是4G直接可以访问,宽带不能访问,宽带梯子后也不能访问),其他服务都正常,你懂的,所以修改为8080试试:

一、修改vhost端口

lnmp默认安装好后,通过lnmp vhost add添加的主机的端口为80,但是莫名80无法访问了,

cd /usr/local/nginx/conf/vhost
ls
vi XXXXX.conf

listen 80; 改为 listen 8080;

重启lnmp

lnmp restart

二、ngnix默认端口

记不记得当初安装lnmp后有个成功页面,用ip访问就能看到,因为80被封也看不到,想看到可以修改ngnix默认端口

vi  /usr/local/nginx/conf/nginx.conf

找到

server
{
    listen 80 default_server;
    #listen [::]:80 default_server ipv6only=on;
    server_name _;
    index index.html index.htm index.php;
    root  /home/wwwroot/default;

listen 80 改为 listen 8080直接ip:8080试试

三、修改完第一项后,typecho可以访问,但是管理页面和点开文章都无法访问,检查发现链接都变成了XXXX:8080:8080,无辜多出一个8080,所以搜了搜,找到原因。bug 出现的原因就是 var/Typecho/Request.php 文件里getUrlPrefix 这个函数没考虑到除了80和443端口其他的情况,发现不是80或443端口就自动加上了SERVER_PORT,反倒画蛇添足了……
打开文件

cd /home/wwwroot
ls
cd xxxxxxx
vi var/Typecho/Request.php

找到

public static function getUrlPrefix()
{
    if (empty(self::$_urlPrefix)) {
        self::$_urlPrefix = (self::isSecure() ? 'https' : 'http') 
            . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])
            . (in_array($_SERVER['SERVER_PORT'], array(80, 443)) ? '' : ':' . $_SERVER['SERVER_PORT']);
    }

找到80,443后面添加,8080即可

参考以下文章
https://zhidao.baidu.com/question/586312891.html
http://blog.sina.com.cn/s/blog_3dbc1c820102zrta.html
https://0x0d.im/archives/solve-typecho-port-bug.html

标签: none

添加新评论

18luck 365bet 888zhenren aomenduchang aomenjinshayule baijiale bbin beplay bet007 betvictor betway bifa bst hg0088 bwin fenghuangyule jinbobao lebaijia long8 manbet quanxunwang shenbotaiyangcheng tengbohui ule vwin w88 wellbet WilliamHill yulepingtai laohuji