最终,我还是换到了CloudFlare,这里是解决log以及Slimstat显示ip不正确的问题

我在之前的文章记录了我将博客全面开启https的历程,服务器在法兰克福,为了提高在境内的访问速度,我对比了多家选择了魔门云CDN。这家CDN优点很突出,推广期免费用户也不限流量,并且支持自定义SSL证书,这样可是使我的逼格保持下去。同样这个原因我抛弃了百度云加速,其实它什么都挺好的,就是免费套餐不能用https让我不开心。 魔门云是cname到他们的一个域名上,对于国内访问比较多的网站,没备案一般放在香港的节点。这样对于国内的普通用户其实是非常使用的,毕竟需要解决最大的问题是拉近用户和服务器距离,香港在境外对比应该是距离最近的了吧。可是对于我生活在德国,服务器在法兰克福,本来速度超快ping都是低于10毫秒,可是加上魔门云CDN后,我访问我自己网站流量要先从法兰克福去香港,再从香港到我这里,快要绕地球一圈了,所以毫无疑问ping飙到300以上,而用了一段时间观察魔门云并不支持多ip,也就是也并没有智能的在我身边启用一个节点,所以我决定换成CloudFlare了。 效果相当的好。自动为我分配美国的节点,但是ping却没有感觉到有太大的区别,看下图,上边是域名直接连接到我的服务器ip,下边是通过CDN中转后的时间。 国内的访问也相当的惊艳,我之前担心国外的服务水土不服,看来是我多虑了。 大部分颜色都淡淡的,红色可能是我更新了DNS后当地还没来得及跟上并且可以看到是多ip解析,所以全球各个地方应该都应该速度不错,包括中国大陆。其中还包括了一个ipv6地址我也是挺服的。。 对比直接连接服务器ip的耗时: 另外这个CDN也遇到了魔门云同样的问题,服务器获取的ip不是最终客户端的ip,这个CDN把访客真实IP写在了X_Forwareded_For这个头标签里而不是X_Real_IP,所以设置和魔门云有点不同。 在mod_rpaf的配置文件中将CoudFlare的ip加入代理名单,全部需要加入的IP在这里:https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx- 方法可以参照我之前的帖子。 在Apache设置中是这样: LogFormat “%{X-Forwarded-For}i %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” custom 在wp-config.php是这样: /*add for CloudFlare CDN to get original IP*/ if (!($_SERVER[“HTTP_X_FORWARDED_FOR”]==””)){ $_SERVER[‘REMOTE_ADDR’] = $_SERVER[‘HTTP_X_FORWARDED_FOR’]; } 其他的步骤可以参考我的下边这个文章,里边有详细的步骤,把其中的有关X_Real_IP改成X_Forwareded_For就好了。 mod_rpaf模块对于https的支持:Apache2.4获取使用CDN后访客的真实ip (基于Amazon Linux EC2) 免费套餐不支持自定义SSL证书,不过官方提供一个泛域名证书,也是默认实现https连接, 不是用自己证书还是小小的和想的不一样,不过算了不纠结这么多了,其他人也不会这么有耐心还看你用的啥证书,看到绿色的安全标志就足够了。    

最终,我还是换到了CloudFlare,这里是解决log以及Slimstat显示ip不正确的问题 Read More »

mod_rpaf模块对于https的支持:Apache2.4获取使用CDN后访客的真实ip (基于Amazon Linux EC2)

与上个文章有关,魔门云:一家免费套餐中支持https的CDN,我的主机在法兰克福,使用魔门云CDN给国内的朋友加速。效果很不错但是有个小瑕疵就像我在那个帖子说的那样,统计插件里边的ip都成了CDN服务器的ip,标识地址的国旗全变成了香港旗帜,Apache的log也统一记录的只有那几个CDN的来访地址。 查询网上帖子了解到这个插件:mod_rpaf模块,解决Apache服务器在CDN后获取真实ip的问题。我总结了一下安装过程,还是挺简单的。 首先官方yum库里边没有这个插件,需要从网上找资源下载,很多帖子都贴出一些地址,可是这些地址很容易失效或者出现不同版本linux兼容问题,甚至还有可能出现带病毒的问题。所以在我的教程中直接从作者github下载源码编译,这样上边的所有问题都一次性解决,最为理想的方式并且也不复杂。 首先安装一些git以及编译需要用到工具: sudo yum install git make gcc httpd24-devel vim(对于apache版本httpd24-devel可能不同) 然后下载mod_rpaf源码: git clone https://github.com/gnif/mod_rpaf.git 编译,安装: sudo make sudo make install 在Apache配置文件中添加对这个模块的加载以及配置信息,可以直接添加在httpd.conf中在我的系统中这个文件在/etc/httpd/conf/httpd.conf,很多教程也是这样讲的,但是我看在我的虚拟机中默认把模块的配置文件分出来了放在了/etc/httpd/conf.modules.d(这些扩展配置文件都是被主配置文件httpd.conf调用的),为了保持统一,我也就学习系统默认的样子将这个模块的配置放在这个文件夹: sudo vim /etc/httpd/conf.modules.d/mod-rpaf.conf 将下边内容填入这个文本: LoadModule rpaf_module modules/mod_rpaf.so RPAF_Enable On RPAF_Header X-Forwarded-For RPAF_ProxyIPs 119.28.0.0/16 106.75.0.0/16 120.132.0.0/16 121.201.0.0/16 139.198.0.0/16 43.255.29.0/24 103.74.193.0/24 RPAF_SetHostName On RPAF_SetHTTPS On RPAF_SetPort On RPAF_ForbidIfNotProxy Off 其中,RPAF_ProxyIPs后边需要填CDN服务器的ip,这个可以从CDN帮助文档中找到,比如说我用的魔云门类似于这样的:https://docs.cachemoment.com/faq/using/ip-list.html。 这样Apache服务器就能识别X-Real-IP 和X-Forwarded-For 两个标签。找到下边的这配置日志记录的一段,替换成下边的内容: <IfModule log_config_module>

mod_rpaf模块对于https的支持:Apache2.4获取使用CDN后访客的真实ip (基于Amazon Linux EC2) Read More »

发财

在我大学同学中,我应该是最后毕业的了吧。感觉上学上了整整一个世纪。终于这个学期结束,开始准备毕设相关的事情,要进入尾声了。 想要过上自己喜欢上生活,了解的越多越觉得好不容易啊。。。唉现在我唯一的目标就是学会怎样发财。

发财 Read More »

Matlab2014添加对新版Xcode的mex编译支持(macOS High Sierra, Xcode 8.3)

Mac下matlab编译c代码找不到编译器解决办法。 前几天我自己作死把我的MacBook搞崩溃了,索性就重新装一次系统,这正好将两年多的系统垃圾清一清。 由于学习的需要,装好系统首先就得安装Xccode和Matlab,其中最近用到的一个代码需要matlab编译一段c写的代码,之前就用过所以很熟练的运行mex -setup命令,而并没有配置成功反而返回的是一个错误:MEX cannot find a supported compiler matlab找不到编译器了。这也不难理解,我用的是matlab2014,而系统是2017年新出的High Sierra, 关键我还是用的测试beta版。Xcode也是新下载的最新版。谷歌百度查询了一些解决方法,在这里总结一下,一是给自己一个备份,说不定之后哪天还会用到,二是有人再遇到这样的情况也可以参考一下我的教程。 很简单,修改几个地方的内容就好了,文件在这里:/Applications/MATLAB_R2014b.app/bin/maci64/mexopts/下边的两个文件:clang_maci64.xml clang++_maci64.xml 进入这个文件夹可以用下边的步骤: 打开Finder左边导航栏的Applications,找到Matlab那个图标,右键有显示包的内容,这样就打开了matlab文件夹,然后再进入/bin/maci64/mexopts/就看到了这两个文件,双击或者用熟悉的编辑器打开,系统提示需要权限修改的时候点同意。 找到下边的代码块,其中高亮的是需要添加的内容 <ISYSROOT> <and> <cmdReturns name=”xcode-select -print-path”/> <or> <dirExists name=”$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk” /> <dirExists name=”$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk” /> <dirExists name=”$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk” /> <dirExists name=”$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk” /> <dirExists name=”$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk” /> <cmdReturns name=”find $$ -name MacOSX10.7.sdk” /> <cmdReturns name=”find $$ -name MacOSX10.8.sdk” /> <cmdReturns name=”find $$ -name MacOSX10.9.sdk”

Matlab2014添加对新版Xcode的mex编译支持(macOS High Sierra, Xcode 8.3) Read More »

将服务器php版本升级到了7.0

有危险但是一切安好的升级   之前在将网站升级到https的途中,一直找不到mod_ssl该安装哪个。直接yum install mod_ssl提示与php版本不兼容,索性我就将之前的httpd卸载,然后直接yum install httpd,不带任何数字。当然最后挺成功的,虽然我都不知道安装都是哪个版本都apache以及php。 之后在wordpress后台老是一个大大都警告,以及很多插件用不了,phpmyadmin也用老版都才行,而且那个警告说我用的版本已经不提供支持了,所以决定更新到最新版php70。 先停用apache:service httpd stop 卸载旧版本:yum remove httpd 可以看到一些相关都包也被卸掉了,我的结果是这样的: Dependencies Resolved ================================================================================ Package       Arch         Version                   Repository           Size ================================================================================ Removing: httpd         x86_64      

将服务器php版本升级到了7.0 Read More »

给Linux新加或者修改Swap交换内存(Amazon EC2 )

在亚马逊的主机搭建我的个人博客一个多月了,最近安装了一些插件,以来丰富我的博客的功能,另外好几个插件是统计和管理型的,这样让我对自己对小站有更详细的了解。 然而也就装了三四个插件后,网站访问变得出奇慢,基本上可以说是无响应。这个时候申请ssh登陆服务器也会超时,如果之前登陆过的话,每输入任何一个字母都等很久,多数命令并不能执行返回cannot allocate memory的错误。起初我以为是cpu或者网络传输到达免费额度了,所以数据传不过来或者cpu计算能力不够。一直觉得1G内存用来跑一个网站绰绰有余了,就没考虑内存出问题,可是其他问题查了一个遍都正常,那只能是内存用完了。实际测试确实是这个问题。 这是我都个人小站待机时候都内存状态,没有任务也没有客人访问都时候,物理内存就用掉900多M,可见不添加虚拟内存毫无疑问会卡死。 最好的解决方法就是增加内存,可是这同时增加支出。。。我作为学生本来就用的amazon免费资源,所以这条路走不通了。 第二个很好的方法就是增加交换内存。把硬盘的一部分拿出来,当内存不够用的话可以暂时存在这里做个缓冲。亚马逊免费套餐也良心的很,硬盘最大可以达到30G而且是SSD,之前传输文件速率能达到71M/S,已经相当棒了。所以我着手开始给我的虚拟机增加虚拟内存。一般来说服务器提供商默认是不设置虚拟内存的,所以我们添加后应该能大幅度提高使用性能。 有两种方法: 使用一个文件作为交换内存 新增一个分区作为交换分区 第一种方法很方便也是我喜欢用的,并且也有利于之后调整虚拟内存的大小,只需要更改那个文件大小就可以了。看下边的步骤。 下边步骤都需要root权限,su切换到root或者用sudo 首先如果你设置过或者默认有虚拟内存,需要先停用掉: swapoff -a 然后新建一个文件用来当作交换文件用: dd if=/dev/zero of=/swapfile bs=1M count=1024 这个命令生成一个在根分区的空文件,大小为1G,可以根据个人喜好更改地点和大小。总大小为bs*count:块大小与块数量都乘积。 mkswap /swapfile swapon /swapfile 运行这两个命令就开启了虚拟内存。 下一步设置开机自动加载,不然刚才的虚拟内存只对本次有效: 在/etc/fstab 写入下边的配置: /swapfile none swap defaults 0 0 或者编辑/etc/rc.local文件,加入以下内容(具体根据自己的文件路径): swapon /swapfile 这样用文件作为交换分区就设置好了,如果以后需要更改大小就很简单,先swapoff -a停用掉交换分区,把之前的swapfile删掉再重新生成一个满意大小的文件就可以了,下边开启以及设置开机自启动命令相同。 可以用free -m 查看一下,是不是多出了swap内存。 第二种方法设置一个swap磁盘分区: 首先是停掉现有的swap分区:swapoff -a 用fdisk命令(例: fdisk /dev/xvda1)对磁盘进行分区,添加swap分区,新建分区,在fdisk中用“t”命令将新添的分区id改为82(Linux swap类型),最后用w将操作实际写入硬盘(没用w之前的操作是无效的)。 mkswap /dev/xvda2 格式化swap分区,这里的xvda2要看您加完后p命令显示的实际分区设备名 swapon

给Linux新加或者修改Swap交换内存(Amazon EC2 ) Read More »

有人严苛,有人放纵,有人循循善诱,有人喋喋不休。 悦己而后悦世人,知世人而后知己。

Read More »