猫窝私语 — Makumo's Blog

玛酷猫的温馨小窝,记录生活点点滴滴。

@玛酷猫5年前

01/3
23:01
WordPress 建站日志

小窝加装泛域名SSL证书

(本来打算写在上篇的,篇幅有点长,干脆拆成两篇好了)
书接上回,话说随着chrome的版本更新,所有的http访问的网站都会在网址前面标一个大大的不安全,这都9102年了,不给网站弄的SSL证书也太不像话了。免费证书哪家强,当然是选择Let’s Encrypt,而且今年去年年中的时候已经支持泛域名的证书,B格更高,同时也推出了新的申请方式,相对于以前单个域名的申请,方便很多。

首先要下载acme.sh,安装成功后断开重新连接下终端,要不会后续的命令提示找不到

curl https://get.acme.sh | sh

由于acme.sh可以自动配置DNS,这就需要获取到域名的API,我的域名是使用DNSPOD解析的,这里就用DNSPOD做例子,其他的请参考官方指南。登录DNSPOD,在控制台——用户中心——安全设置里面,启用API Token,创建新的API Token,这里一定要保存好Token,因为这个是只显示一次,关掉后就没法获取完整,只能删掉重新建,同时记下Token对应的ID,然后运行下面命令,等待120秒验证,屏幕上会显示倒计时,如果一切正常的话,屏幕会显示申请成功并显示4个证书文件的路径。

export DP_Id='ID数字'
export DP_Key='Token字符串'
acme.sh --issue -d makumo.com -d *.makumo.com --dns dns_dp

然后打开站点的Nginx的配置文件,添加相关的配置,例如:

server 
    {
        listen 443 http2 ssl;
        server_name makumo.com;
        index index.html index.php;
        root  站点目录;
        ssl_certificate /root/.acme.sh/makumo.com/fullchain.cer;
        ssl_certificate_key /root/.acme.sh/makumo.com/makumo.com.key;
        ssl_trusted_certificate  /root/.acme.sh/makumo.com/ca.cer;
        include proxy-pass-php.conf;
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }
        location ~ /\.
        {
            deny all;
        }
}

proxy-pass-php.conf文件即为上一篇中的关于转发到Apache的部分.

nginx -s reload

重新加载Nginx配置文件就能使用https访问站点,这时候还会存在几个问题,站点中图片、脚本、样式还是使用的http来引入,在浏览器中会报出错误,后台无法进入,浏览器会显示过多的重定向,网络里面会看到一堆的302重定向,搜了下,绝大部分都会说在Wordpress配置文件中添加开启SSL的配置,如下:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

但是我这么设置后,前台没问题了,后台还是无法进入,虽然不报过多的重定向,直接报403错误了。
搜素了半天,还在有更简便的解决方案,安装插件really-simple-ssl,一次性解决各种恶心的问题。
另外,由于站点使用七牛作为图片的CDN缓存,站点切换为https后也需要将七牛的CDN改成https模式,在七牛的后台添加下证书(之前申请证书的4个文件,fullchain.cer是证书,域名.key就是对应的密钥),关联域名开启SSL就好了,这也是泛域名证书的方便之处,不用再次申请单域名证书了。七牛的https是收费的,看了下,0.28元/G,之前还有赠送的10元余额。应该能用段时间。

小窝加装泛域名SSL证书

@玛酷猫5年前

01/3
22:08
建站日志

小窝迁移升级

今天忽然收到阿里云的提示,个人的云服务器要到期了,连忙登录上去准备续费,一看价格,我勒个擦,8XX,当初买的时候才3XX,去年续费的时候5XX,这涨的也太快了,看了下新购,同样配置同一地区也才5XX,算了算了,还是重新购买台好了,虽然要重新配环境迁移网站麻烦点,谁让咱穷呢。

下单付款,等会就开通,ssh连上去,先配置下环境,之前那台服务器用的lnmp一键包,当初菜鸟一只啥都不会。现在基本了解了后,一键包方便是方便,但是问题也不少,首先就是文件的安装位置都变了,配置文件也和默认的不太一样,详细配置的时候各种别扭,其次就是带着一些不用的软件,还有就是版本升级的问题。所以还是自己配好了,好在CentOS配置起来比较简单,几行命令就好了。服务结构还是像往常那样,Nginx跑静态文件和代理,Apache跑PHP7,预配NodeJS和Ruby,平时做简单的调试用,通过Nginx转发访问

# 安装nginx
yum install nginx
# 由于yum源没有php7,所以要更换
yum install epel-release
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 安装php7.2以及相关扩展
yum install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml
# 安装mariadb
yum install mariadb mariadb-server
# 设置mariadb密码,需要先运行mariadb服务
mysql_secure_installation

新建站点和相关配置就不多说了,有几点要注意下,
1、httpd的默认配置文件里面,所有请求会全部拒绝,要删掉或者注释掉

<Directory />
    Options FollowSymLinks
    AllowOverride none
    Require all denied
</Directory>

2、站点的目录用户组要调整成为apache:apache

httpd服务的端口调整为88,在Nginx站点配置的时候,添加相关的配置说明,如下例子

location /
{
    try_files $uri @apache;
}
location @apache
{
    internal;
    proxy_pass http://127.0.0.1:88;
    include proxy.conf;
}

location ~ [^/]\.php(/|$)
{
    proxy_pass http://127.0.0.1:88;
    include proxy.conf;
}

proxy.conf里面存放一些代理设置

proxy_connect_timeout 300s;
proxy_send_timeout   900;
proxy_read_timeout   900;
proxy_buffer_size    32k;
proxy_buffers     4 32k;
proxy_busy_buffers_size 64k;
proxy_redirect     off;
proxy_hide_header  Vary;
proxy_set_header   Accept-Encoding '';
proxy_set_header   Host   $http_host;
proxy_set_header   Referer $http_referer;
proxy_set_header   Cookie $http_cookie;
proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header   X-Forwarded-Proto $scheme;

最后迁移站点文件、还原数据库,启动各服务并设置随系统启动,测试没问题后将域名切换过来就ok了。

systemctl enable nginx.service
systemctl enable httpd.service
systemctl enable maridb.service
systemctl start nginx.service
systemctl start httpd.service
systemctl start maridb.service

顺便一提的是本次迁移也干掉的www,www是个很奇怪的历史遗留的问题,这是个二级域名,可能很多人认为方便呀,直接ctrl+enter就自动补全了,可是最早的IE浏览器直接ctrl+enter的话补全的是www.xxx.cn.co而并不是www.xxx.com,方便无从谈起,直到后续大量的国产带壳浏览器的出现才修正过来,况且那时候.net域名还是很流行的,还有不少.cn的域名,而且大部分人都不会直接打域名来访问网站,基本上都是打开百度搜索网站,要不就是收藏夹或者聚合网址来上网。所以www就是多余的,去掉后网址还精简一些。虽然去掉www会影响搜索引擎的搜录,好在小窝文章本来就不多,写的也是断断续续的,大部分都是方便自己以后查找用的,也不在乎那点收录了。

小窝迁移升级

@玛酷猫15年前

06/18
22:33
游戏人生 建站日志

小窝升级到WordPress 2.8

11号WP更新到2.8版本,本来想同步更新的,可是最近天气比较热,人也比较懒,工作了一天回家后也懒得动了。。。很长一段时间没有写东西了,晚上也就是看看电视剧、打打游戏就睡觉了。看着天气预报天天雷阵雨,也没见一滴雨下下来。前几天的一场风暴,全省受灾人数就超过了百万。天气越来越变化无常了。。。

山口山换东家停服了,各地玩家都在搞活动纪念,本来想借这个机会写点东西,想想自己也AFK几个月了,WLK迟迟不开,也提不起兴趣写东西了,虽然现在网易很高调的在做宣传,等到开得那一天才知道两者谁优谁劣,之前的一切猜想和辩论都没有什么意义。等开WLk以后在慢慢写我的小德的成长经历吧。

前段时间泡在网上,偶然看到了最终幻想X成功模拟的消息(其实是去年的消息。。。自从前年GBA坏了后很少上模拟论坛了),还是中文版的,挂了2天把他DOWN了下来,幸好自己刚配的新机子,全程跑起来很流畅,要是之前的老机子想都不用想。目前卡在该死的陆行鸟比赛那,恶心的操作达到0秒一下还真难。。。yuna的舞姿还是很漂漂的,还有那穿婚纱的样子,虽然有那煞风景的Seymour。

Yuna

Yuna

这几天在玩《模拟人生3》,总体感觉比2好玩些,虽然物品少了一些,社区无缝连接,没事干就跑别人家去转转,参考下他们的房屋结构,目前正在赚钱努力设计自己的房子中。。。

哦,对了,最后顺便给无聊人士推荐款小游戏《植物大战僵尸》,才17M,最近很是火爆,可玩度很高,众多的小游戏和花园模式,很是能打发无聊时间。强烈建议不要是用修改器,否则经典游戏真的变成无聊游戏了。附图一张:

植物大战僵尸

植物大战僵尸

小窝升级到WordPress 2.8

@玛酷猫15年前

05/10
02:34
心情点滴 建站日志

小窝顺利整体搬迁

再次遇到空间商调整IP,有没有通知我,再加上这段时间工作繁忙,也没有来打理,导致我的小窝5天时间不能访问,我已经对百优互联(100U)无话可说了,距上次调IP还不到2个月。询问他们的客服,依旧是那几句话,“您现在什么问题需要帮忙呢 ”“都有新闻通知的”“调整已经结束,新闻删掉了”,感觉就像自动应答机……,收费不低,却提供这样的服务,继续无语中……

整体搬迁到[name]酋长,http://bbs.wopus.org/[/name]的服务器上,备份数据库,转移文件,还原数据库,重解析域名,一切都还顺利。只不过中途数据库账号密码忘改了,一个大大的数据库连接错误o(╯□╰)o。本来早打算转过去的,可是前段时间服务器非常不稳定,连接速度慢还经常无法连接。现在貌似稳定下来了,先搬过来了,如果依旧不稳定的话只能联系酋长转回到国内空间去了。

好累,又2点多了,睡觉睡觉。顺便提醒大家,今天是母亲节,别忘了给家里打个电话,问候一下父母,有时间的常回家看看。

周杰伦《听妈妈的话》

[audio:http://61.153.205.150/www/m/qzone/tmmdh.mp3]

小窝顺利整体搬迁

@玛酷猫15年前

03/17
02:24
心情点滴 建站日志

对这次100U的IP调整很失望

最近工作比较忙,也没时间管理小窝,前几天无意中看了下统计,发现小窝的流量一下变成0了,整整5天时间没有流量。当期就很奇怪,虽然说没什么人气,但是每天20+个IP还是有的,PING了下域名,返回IP无法到达,当时就郁闷了。登陆了空间管理平台,状态写着是正常,突然发现IP地址变掉了……随手登陆了当时注册的电子邮箱,里面空空如也……去询问在线客服,“为什么IP更换没有通知用户,发一封邮件很难么?”,对方的回答让人很无语:“我们已经在首页发出公告了”,难到我买了服务还要天天跑来你们首页看公告?我又随手看了下首页,根本没什么公告,最新的公告还是过年的放假通知,于是又问“怎么首页没看到公告?”答曰:“已经调整完毕了,公告撤掉了”,顿时无语,调整完撤掉了那为什么公告里面去年“CNNIC系统维护”不撤掉,明显搪塞。在我继续询问为什么IP调整不通知用户,客服居然说“你把域名过户到我们这里管理或者把域名的DNS解析到我们这里就不会出现这种问题了”…………我是直接无语,回了句“我对你们非常失望”就关了客服。

哦,忘了说了,我用的是百优互联(100U)的空间,到现在也有两年多了,之前一直用的挺好,速度一般,价钱还说的过去,相对来说稍微贵了点。07年的时候曾经也调整过一次IP,那次提前一个星期就发送EMAIL通知了我,而且连续发送了三封,调整那天晚上很顺利的就重新解析了域名,而且提前半年、三个月、一个月提醒空间到期续费。而现在的感觉就是服务直线下降,连给客户发一封小小的电子邮件都办不到了,或许是我们这些虚拟空间用户太微不足道了,没什么价值吧,都围绕着大客户服务去了。

上个月从[name]酋长,http://bbs.wopus.org/[/name]那里买了新的空间,这个空间还是我无意中逛[name]xiaorsz,http://www.xiaorsz.com/[/name]的blog才知道的,他用的也是酋长的空间。刚买的时候用探针看了下,6核(不知道是2个3核的CPU还是3个2核的CPU,我对服务器不了解)12G内存=。=!不过可能服务器在国外的缘故,访问速度有点慢,前几天更换了一个服务器,访问速度还好,看了下配置,8核(估计是2个4核CPU),4G内存。总体感觉还好了。等这段时间忙完了,抽空把小窝搬迁过去,告别这个让人失望的地方,但愿搬迁一切顺利。

PS:上个月还说准备做一套春天的模板呢,素材都找好了,可是米时间弄,看来过几天直接弄夏天的模板好了。o(╯□╰)o

对这次100U的IP调整很失望

@玛酷猫15年前

02/15
23:04
建站日志

小窝升级到WordPress 2.7.1

WordPress 2.7.1发布了没几天,趁着周末也更新一下。本来想偷偷懒直接覆盖上去更新,结果上传上去后直接得到的是白屏,不管敲什么网址都是白屏,郁闷伤。折腾了半天,最终还是把站点程序全都删除了,重新上传。

结果处理中,一时大意,犯了个严重的错误,上传图片和插件没有备份!!插件还好说,进后台后插件管理直接提示某某插件错误,插件不存在,赶快记下来插件名字,重新下了一份,正好也算更新下插件了,之前有7个插件未更新了。O(∩_∩)O 图片就麻烦多了,翻了翻之前的备份,图片只备份到11月。突然想到了百度网页快照,上面应该还保存着图片,于是在百度上搜索了有图片的那几篇文章,幸好百度都有收录,马上点开快照,图片另存为,传到了服务器上,大图是没戏了,只有缩略图,不过总好过红叉叉。

新年也过去了,小窝的墙纸也换了下来,眼看春天即将来到,准备在这个主题的基础上做一款绿色春天的主题。正在收集素材中……吼吼~~

小窝升级到WordPress 2.7.1

@玛酷猫15年前

12/23
02:13
建站日志

叮叮铛,叮叮铛,铃声多响亮~~

圣诞节又快到了,虽然是国外的节日,但是“世界是平的”,大街小巷也都装点起来,四处洋溢着节日的气氛。懒猫的小窝当然也不例外,敲敲打打了一番,换上了新的墙纸和屋顶。由于不是专业搞设计的,东拼西凑了一番,弄出来的东西怎么看怎么别扭。 :bhan: 好在还有两天,在慢慢调整了。 😀

今天一股强冷空气过境,冷就一个字,打几字手都冻得直抖。。。翻了未来几天的天气预报,都不见下雪,看来过白色圣诞节是没戏了。明天约了朋友去吃火锅,这种天气还是吃火锅最舒服,浑身暖暖的 。 :Saliva: 实在太冷了,上床睡觉了。。。

最后提前祝大家圣诞快乐,Merry christmas!

crazy frog :jingle bells
[audio:http://202.204.208.80/shnew/incoming/53914_student/homework/20071126174457.mp3]

叮叮铛,叮叮铛,铃声多响亮~~

@玛酷猫15年前

12/20
23:06
建站日志

猫窝建设——404页面

很早就准备把404页面换掉,由于没有好的素材加上自己的设计水平实在很烂,再加上最近一直很忙,弄到今天才把404页面弄出来,总之看起来自我感觉良好 😉 。访问也很简单,网站地址后面随便打些东东就能看见了,比如:https://www.makumo.com/123456 ,也请大家提提意见。有点比较奇怪的是404页面title无论我怎么改都是显示“Nothing found for……”,估计在其他地方控制了,有空还要去好好研究下后台设置。

几天没上后台,N多插件都更新了,mg12大大的2款插件也有新版本,看版本号是个大更新,明天下下来研究下,看看又添加了什么新功能。

再过几天就是圣诞节了,准备修改下页面背景图片,换个圣诞节的,不知道还来得及不。快过年了事真多,小郁闷。 :shan:

PS:对WP的表情替换是相当的无语,经常替换不过来。 :angry:

猫窝建设——404页面

@玛酷猫15年前

12/13
02:32
WordPress 建站日志

小窝顺利更新至wordpress 2.7 正式版

昨天(准确的说是前天,已经过了12点了=。=!)登陆后台发现wordpress 2.7 正式版已经发布了,当时太晚了,也就没来的及更新。刚刚把2.7DOWN了下来,依旧老样子的程序:备份文件,备份数据库,覆盖程序,最后upgrade一下,一切都很顺利,有不少人说2.7版和mg12的主题有些冲突,不过我这是没有遇到过。

一进后台超级不适应,整个后台大换脸,看来还是要有短时间来适应下,不过整体来看还是很漂亮的,使用起来非常舒服,新加入的评论分页还没有机会尝试,毕竟来小窝串门的人还不是很多,以后还是有机会的,其他的新功能在慢慢研究了,已经2点了,明天还要去单位参加培训,休息去喽O(∩_∩)O

小窝顺利更新至wordpress 2.7 正式版

@玛酷猫15年前

12/6
01:46
他山之石 建站日志

HTTP_X_FORWARDED_FOR、IP、安全性

(由于本人也是PHP的初学者,对于一些安全问题了解的也不是很多。可能是空间商“将程序隐藏在Apache的Proxy模块后面”,除了使用HTTP_X_FORWARDED_FOR,其他方法获取的IP地址都是127.0.0.1。@gowers在之前所写的《解决wordpress留言评论者IP都是127.0.0.1》提到了关于HTTP_X_FORWARDED_FOR安全性的问题,我在网上查找了些资料,安全性的漏洞可以使用格式检查和SQL语句不安全字符过滤方法来封堵,不过对于伪造IP就没什么办法了。引用下kingthy的一篇文章《使用HTTP_X_FORWARDED_FOR获取客户端IP的严重后果》)

在WEB开发中.我们可能都习惯使用下面的代码来获取客户端的IP地址:

//优先取得代理IP
string IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(IP)) {
 //没有代理IP则直接取连接客户端IP
 IP = Request.ServerVariables["REMOTE_ADDR"];
}

上面代码看来起是正常的.可惜这里却隐藏了一个隐患!!因为”HTTP_X_FORWARDED_FOR”这个值是通过获取HTTP头的”X_FORWARDED_FOR”属性取得.所以这里就提供给恶意破坏者一个办法:可以伪造IP地址!!

下面是测试代码:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/ip.aspx");
request.Headers.Add("X_FORWARDED_FOR", "0.0.0.0");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream());
string IP = stream.ReadToEnd();
stream.Close();
response.Close();
request = null;

“ip.aspx”文件代码:

Response.Clear();
//优先取得代理IP
string IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(IP))
{
  //没有代理IP则直接取客户端IP
  IP = Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write(IP);
Response.End();

这样.当测试代码中去访问ip.aspx文件时.”string IP = stream.ReadToEnd();”这段代码取到的IP数据就是”0.0.0.0″!!!!(呵.在真实情况下.这样的IP地址肯定不是我们想要的结果.而在有些投票系统中限制一个IP只能投1次票时,如果也是用类似的代码取得对方IP然后再判断的话.呵呵.限制就失效咯)…

或者如果你用上面代码获取IP地址后后面又不再进行数据判断的话也许还能更进一步进行数据破坏!!
比如你用类似上面的代码中获取IP地址就直接有这样的SQL语句:
string sql = “INSERT INTO (IP) VALUE (‘” + IP + “‘)”;
那么也许破坏者还可以进行SQL注入进行数据破坏!!

这样看来利用”HTTP_X_FORWARDED_FOR”这个属性获取客户端IP的方法就不再可取了.-_-# 但如果不用这种方法.那么那些真正使用了代理服务器的人.我们又不能再获取到他们的真实IP地址(因为某些代理服务器会在”X_FORWARDED_FOR”这个HTTP头里加上访问用户真正的IP地址).呵.现实就是这样,某种东西都有有得必有失…

HTTP_X_FORWARDED_FOR、IP、安全性