日志分类:网站技术

  标题有点绕,问题就是在公网出接口上配置了内网某台服务器的端口映射,内网的普通用户通过内网地址访问正常,但无法通过公网IP进行正常访问,拓扑图如下:

华为USG防火墙配置NAT映射回流解决内网通过公网映射访问内部服务器

  上图以出接口地址100.100.100.100:80映射为192.168.1.11:80为例,实际问题为192.168.1.100与192.168.1.110无法通过100.100.100.100:80进行访问,但通过互联网访问映射端口正常。

继续阅读…

MX和CNAME记录无法共存的问题

分类:网站技术日期:2019-07-30 - 7:31:39评论:3条作者:老谢

  为加快博客的访问速度,之前已经将静态文件放在又拍云上了,并删除了CNZZ和其他冗余的js文件以减少请求数,但是这么一折腾,改这些静态文件还要去又拍云有点麻烦,所以开始用阿里云的CDN来进一步提升访问速度,但是在阿里云CDN全站加速配置完以后,需要将域名CNAME到CDN地址后出现的问题,DNSPOD提示CNAME与MX记录冲突,经过一番查询得知按照规范,设置CNAME后,所有类型的记录都以CNAME地址为准,即MX记录也会去查CNAME地址的MX记录,又经过一番查询,没有很完美的解决方案,最终按照常规做法,将根域名即xj123.info做A记录到服务器301到www.xj123.info做CNAME到CDN地址。

C:\Users\Jason>nslookup -qt=a xj123.info
服务器:  router.asus.com
Address:  192.168.20.1
 
非权威应答:
名称:    xj123.info
Address:  114.215.187.51
 
 
C:\Users\Jason>nslookup -qt=mx xj123.info
服务器:  router.asus.com
Address:  192.168.20.1
 
非权威应答:
xj123.info      MX preference = 5, mail exchanger = mxbiz1.qq.com
xj123.info      MX preference = 10, mail exchanger = mxbiz2.qq.com
 
xj123.info      nameserver = f1g1ns1.dnspod.net
xj123.info      nameserver = f1g1ns2.dnspod.net
 
C:\Users\Jason>nslookup -qt=cname www.xj123.info
服务器:  router.asus.com
Address:  192.168.20.1
 
非权威应答:
www.xj123.info  canonical name = www.xj123.info.w.kunluncan.com
 
xj123.info      nameserver = f1g1ns1.dnspod.net
xj123.info      nameserver = f1g1ns2.dnspod.net

php 7.3.7安装Mcrypt扩展

分类:网站技术日期:2019-07-16 - 21:45:17评论:4条作者:老谢

  又是闲来无事,把php 5.x升到了7.3.7,升级后明显感觉wp后台快多了,但是用tiny tiny rss的时候报错没有mcrypt函数,经过一番搜索,由于php7已经将此扩展移除到pecl,虽然不知道pecl是个啥,但目前要用到的mcrypt就需要手动安装了,顺手记录一下。

Autoconf的版本

  rpm -qf /usr/bin/autoconf,如果低于2.68则需要升级,否则后面无法编译Mcrypt。

rpm -qf /usr/bin/autoconf
rpm -e --nodeps autoconf-2.63
 
wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
tar zxvf autoconf-2.68.tar.gz
cd autoconf-2.68
./configure --prefix=/usr/
make && make install
 
[root@laoxie mcrypt-1.0.1]# /usr/bin/autoconf -V
autoconf (GNU Autoconf) 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
 
Written by David J. MacKenzie and Akim Demaille.
开始搞Mcrypt
wget  http://pecl.php.net/get/mcrypt-1.0.1.tgz
tar xf mcrypt-1.0.1.tgz
cd mcrypt-1.0.1
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config  && make && make install

  编译完编辑php.ini,添加extension=mcrypt.so,然后重启php-fpm即可。

Tags:

Nginx配置fastcgi_cache缓存PHP输出为WordPress加速

分类:网站技术日期:2019-07-15 - 0:54:52评论:5条作者:老谢

  闲来无事折腾一波,好久没折腾Nginx了。

  高并发网站架构的核心原则其实就一句话”把所有的用户访问请求都尽量往前推“,即:能缓存在用户电脑本地的,就不要让他去访问 CDN。 能缓存 CDN 服务器上的,就不要让 CDN 去访问源(静态服务器)了。能访问静态服务器的,就不要去访问动态服务器。以此类推:能不访问数据库和存储就一定不要去访问数据库和存储。

安装ngx_cache_purge模块

  ngx_cache_purge是为了后面配合插件完成自动刷新使用,ngx_cache_purge是个控制Nginx缓存的模块。

  军哥LNMP一键包默认不编译ngx_cache_purge模块,所以需要自行编译该模块进去,使用nginx -V命令可以看到当前的编译参数,编译该模块只需要增添–-add-module=../ngx_cache_purge-2.3参数即可,顺便升级一波Nginx。

wget http://nginx.org/download/nginx-1.17.0.tar.gz
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar -zxf nginx-1.17.0.tar.gz
tar -zxf ngx_cache_purge-2.3.tar.gz
cd nginx-1.17.0
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-openssl=/root/lnmp1.5/src/openssl-1.0.2o --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=/root/lnmp1.5/src/lua-nginx-module-0.10.11 --add-module=/root/lnmp1.5/src/ngx_devel_kit-0.3.0 --add-module=/root/ngx_cache_purge-2.3
make
make upgrade
/etc/init.d/nginx stop
cp objs/nginx /usr/local/nginx/sbin/nginx
/etc/init.d/nginx start

继续阅读…

为Nginx开启H2协议访问

分类:网站技术日期:2019-03-15 - 14:13:34评论:13条作者:老谢

H2是什么

  HTTP 2.0即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。HTTP/2 协议是从 SPDY 演变而来,SPDY 已经完成了使命并很快就会退出历史舞台(例如 Chrome 将在「2016 年初结束对 SPDY 的支持」;Nginx、Apache 也已经全面支持 HTTP/2 ,并也不再支持 SPDY)。

  一般的大家把 HTTP2 简称为 h2,尽管有些朋友可能不怎么愿意,但是这个简称已经默认化了,特别是体现在浏览器对 HTTP2 都是这个简写的。

如何开启

  升级Nginx至最新稳定版,我升级到的是1.14.2,旧版本可能不支持H2协议,至于Nginx从哪个版本开始支持H2协议,感兴趣的可以自己搜搜。

server {
    listen 443 ssl http2 default_server;
 
    ssl_certificate    server.crt;
    ssl_certificate_key server.key;
    ...
}

laoxie.me

分类:网站技术日期:2018-11-08 - 19:53:25评论:30条作者:老谢

  不知不觉都写8年博客了,xj123.info也注册8年了,唉唉唉,最开始.tk的域名以及写了小半年的ZBLOG的日志,你敢信当时.tk的域名我都备案成功了!?换WordPress的时候数据丢真是可惜 T_T 很想知道当时写了什么23333,当时图便宜注册个.info也是醉了,后来各种原因包括换到阿里云以后更是因为备案问题懒得为了换域名折腾,拖拖拖一拖又是好几年(擦!都换到阿里云4年了),最近手痒顺手查查laoxie.me居然已经过期释放了,妥妥注册过来(本来想啥时候注册到laoxie.com啥时候再换,但估计是等不到了,确认过眼神是买不起的.com双拼…),就想着把域名用上,其实也不算换域名,旧域名依然会保持访问也不会做跳转,只是用laoxie.me做个反代,以后结识新朋友都会以laoxie.me留言啦!

  趁着光棍节活动,新购入了一台香港阿里云ECS作为反代使用(后悔了,应该直接买3年,平均每年300块,现在只买了1年,按照阿里云的尿性续费肯定没优惠,到时候估计得新购换IP…),为了换域名也是拼了,新域名懒得备案,只能想到反代这招了…ECS异地居然还不能走内网通信,蛋疼蛋疼,现在的阿里云默认都是开了端口策略,只开放了些许端口,甚至80和443这样的端口默认都没被允许入站,懒得新创建入站规则,所以SSH端口就用默认了22了,但毕竟暴露在公网,还是稍稍做些防护会好些),之前也有过相关的帖子:谁偷走了我的密码?IP归属地分析Shell脚本

安全设置,防暴力破解ssh
vim /root/secure_ssh/secure_ssh.sh
 
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/secure_ssh/black.list
for i in `cat  /root/secure_ssh/black.list`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
  if [ ${#NUM} -gt 1 ]; then
    grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done
 
#从这些行中提取IP地址,如果次数达到10次(脚本中判断次数字符长度是否大于1)则将该IP写到 /etc/hosts.deny中。
 
#将secure_ssh.sh脚本放入cron计划任务,每1分钟执行一次。
*/1 * * * *  sh /root/secure_ssh/secure_ssh.sh

  至此脚本将每分钟爬一遍/var/log/secure找到登录失败超过3次的ip丢进/etc/hosts.deny,其实更想用iptables来操作,比如配个csf,但是想想好麻烦…再说吧再说吧…..在配置的过程中发/etc/log/secure没有日志,重启sshd和rsyslog以后还是没有新日志,经过一番搜索,将sshd_config的日志级别调整为SyslogFacility AUTHPRIV,然后重启sshd即可正常生成日志!

  天下文章一大抄,我抄自:https://cloud.tencent.com/developer/article/1119081

继续阅读…

LNMP不重新编译PHP增加LDAP模块

分类:网站技术日期:2017-09-11 - 11:50:44评论:1条作者:老谢

yum install openldap openldap-devel  -y
cp -frp /usr/lib64/libldap* /usr/lib/

  phpize 命令是用来准备 PHP 扩展库的编译环境的。随着工作需要,如果想增加模块但又不想重新编译php时就可以使用phpize。

cd php-5.3.28
cd ext/ldap/
/usr/local/php/bin/phpize
./configure -with-ldap -with-php-config=/usr/local/php/bin/php-config
make && make install
vi /usr/local/php/etc/php.ini
 
添加 extension = "ldap.so" 重启LNMP即可。

默认编码导致的DEDECMS乱码

分类:网站技术日期:2015-07-31 - 9:17:10评论:7条作者:老谢

  一个客户的dedecms乱码,各种检查无果,诡异的是文件的编码以及head里面的meta的编码都是正确的,把生成的HTML下载到本地打开,也都是正常的,一放到服务器就乱码。

  经过更为细致的检查,发现客户在根目录下的.htaccess里面配置了AddDefaultCharset UTF-8,这样就会导致apache默认使用utf-8编码向浏览器发送数据,客户的dedecms是GBK编码,所以自然就乱码了,另外表示真是第一次在有客户在.htaccess里面配置这个。。。下面放一段google到的文字:

  首先,可以使用AddDefaultCharset off来关闭默认文件编码,这样apache服务器就不会在http应答消息头部设置charset,只是设置Content-type: text/html. 而浏览器就会依靠html文件中设置的harset来决定编码。

  其次,脚本php.ini文件中的default_charset = “UTF-8″作用同httpd.conf文件,把该行注释掉,使php自动识别文件的编码方式。

  这样不论你用什么编码方式,只要test.php中的meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 与你test.php文件编码方式相同,就不会产生乱码问题。用户提交数据的编码浏览器提交的字符编码由客户端的characher encoding决定。

  例如,当前浏览器的编码是Gb2312,用户提交数据后,无论apache设置的编码方式是GB2312还是UTF-8,这时在服务器端接收到的仍是以Gb2312编码的数据。

  如果要在返回页面上显示用户刚才提交的数据,而该页面是用UTF-8编码的或者要在数据库中存储的用户提交的数据,而数据库是UTF-8编码的,那就要做字符转换了。

Discuz!上传图片提示“没有合法的文件被上传”

分类:网站技术日期:2015-04-14 - 21:07:47评论:0条作者:老谢

  某客户向我们反馈在我们服务器安装的DZ论坛无法上传图片,拿到客户提供的管理员账户以后,发帖测试发现上传图片没任何问题,于是让客户把他上传错误的图片提供给我们,结果出现“没有合法的文件被上传”的提示。

  图片体积800多K,在线上传提示的限制是2M,不会由于体积太大导致上传错误,网上搜了一下有一个上传大尺寸图片提示“没有合法的文件被上传” 解决办法分享的帖子,提到图片分辨率过高会导致该错误,于是看了下客户提供的图片尺寸,宽度达到了10000多像素(伙惊呆)。。。

  用PS把图片尺寸缩放10倍以后,再次尝试上传,该问题解决。

Discuz!使用QQ互联出现1054数据库错误

分类:网站技术日期:2015-02-25 - 22:54:23评论:0条作者:老谢

  解决步骤:后台后台——站长——数据库——升级,执行下面的代码即可:

ALTER TABLE `pre_common_connect_guest` ADD `conuintoken` CHAR( 32 ) NOT NULL ;
ALTER TABLE `pre_common_member_connect` ADD `conuintoken` CHAR( 32 ) NOT NULL ;