标签归档:apache

nginx支持中文文件名方法

nginx支持中文文件名方法载过来与大家一起分享!该方法还没有亲自测试,所以不太确定是否真有用!

方法一(已经测试OK):

搞了大半天nginx下无法访问中文文件名的问题,现在看来是secureCRT的问题?
看来还是字符集的问题了。
看来nginx不需要象apache那样要单独加载支持中文模块。

服务器端字符集如下
[root@test]# locale
LANG=en_US.UTF-8
LC_CTYPE=”en_US.UTF-8″
LC_NUMERIC=”en_US.UTF-8″
LC_TIME=”en_US.UTF-8″
LC_COLLATE=”en_US.UTF-8″
LC_MONETARY=”en_US.UTF-8″
LC_MESSAGES=”en_US.UTF-8″
LC_PAPER=”en_US.UTF-8″
LC_NAME=”en_US.UTF-8″
LC_ADDRESS=”en_US.UTF-8″
LC_TELEPHONE=”en_US.UTF-8″
LC_MEASUREMENT=”en_US.UTF-8″
LC_IDENTIFICATION=”en_US.UTF-8″
LC_ALL=

在nginx.conf文件里配置的字符集也是utf-8
server {
listen 80;
server_http://www.dnsdizhi.com/zixun/aggregation/11696.html”>name test.cn;
root /data;
index index.html index.jsp;
charset utf-8;

客户端用的是secureCRT,字符集用的是defalut,用rz上传后在服务器上用ls显示乱码,用ie怎么浏览都不能正常看到。
找朋友测试了一下他那边的nginx,中文显示居然一切正常,后来他告诉我他的secrueCRT用的字符集是utf-8,我改用uft-8后再用rz上传文件,在ie下中文可以正常显示了。

方法二:

一:确定你的系统是UTF编码

[root@Tserver ~]# env|grep LANG
LANG=en_US.UTF-8

二:NGINX配置文件里设置为

server
{
   listen       80;
   server_name  .dnsdizhi.com ;
   index index.html index.htm index.php;
   root  /usr/local/nginx/html/inginx.com;
   charset utf-8;
   }

三:如果使用putty

windows  –> translation –>UTF-8

mkdir NGINX中文技术站
echo NGINX中文技术站 > 中国.html

四,如果是用securecrt 上传文件,请选择 回话–>外观–UTF-8

五,如果出现文件名乱码显示

执行
for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done

另一位朋友的解决方案是:

我现在用的方法是
在后端个别目录用APACHE代理了 。。
APACHE支持中文码。。

location /~doc/ {
   proxy_pass http://127.0.0.1:81/;#apache server
}

以上供大家参考!

linux运维工程师的朋友,必须要掌握以下几个工具才行

本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧

说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。

我就大概列出这几方面,这样入门就基本没问题了。

linux系统如果是学习可以选用redhat或centos,特别是centos在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究一下SUSE,有些公司也喜欢用,例如我公司 。。。。。

工具如下:





1、linux系统基础,这个不用说了,是基础中的基础,连这个都不会就别干了,参考书籍,可以看鸟哥linux基础篇,至少要掌握这书60%内容,没必须全部掌握,但基本命令总得会吧





2、网络服务,服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如FTP, DNS,SAMBA, 邮件, 这几个大概学一下就行,LAMP和LNMP是必须要熟练,我所指的不是光光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是WEB服务器,所以nginx和apache要熟悉,特别是nginx一定要很熟悉才行,至少有些公司还会用tomcat,这个也最好学一下。其实网络服务方面不用太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯定是编译安装多,那些模块要熟悉一下他的作用,特别是PHP那些模块。

这面2点只是基础,也是必要条件,不能说是工具,下以才是真正的要掌握的工具。





3、shell脚本和另一个脚本语言,shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些系统管理脚本,最简单也得写个监控CPU,内存比率的脚本吧,这是最最最基本了,别以为会写那些猜数字和计算什么数的,这些没什么作用,只作学习意义,写系统脚本才是最有意义,而另一个脚本语言是可选的,一般是3P,即python, perl和php,php就不需要考虑了,除非你要做开发,我个人建议学python会比较好,难实现自动化运维,perl是文本处理很强大,反正这两个学一个就行了。





4、sed和awk工具,必须要掌握,在掌握这两个工具同时,还要掌握正则表达式,这个就痛苦了,正则是最难学的表达式,但结合到sed和awk中会很强大,在处理文本内容和过滤WEB内容时十分有用,不过在学shell的同时一般会经常结合用到的,所以学第3点就会顺便学第4点。





5、文本处理命令,sort , tr , cut, paste, uniq, tee等,必学,也是结合第3点时一并学习的。





6、数据库,首选mysql,别问我为什么不学sqlserver和oracle,因为linux用得最多绝对是mysql,增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。





7、防火墙,不学不行,防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则,如果学过CCNA的朋友可能会比较好学,因为iptables也有NAT表,原理是一样的,而FILTER表用得最多,反正不学就肯定不合格。





8、监控工具,十分十分重要,我个人建议,最好学这3个,cacti,nagios,zibbix,企业用得最多应该是nagios和 zibbix,反正都学吧,但nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。





9、集群和热备,这个很重要,肯定要懂的,但到了公司就不会让你去弄,因为新手基本不让你碰,集群工具有很多,最好学是LVS,这是必学,最好也学学nginx集群,反向代理,还有热备,这个就更多工具能实现了,像我公司是自己开发热备工具的,mysql热备也要学,就是主从复制,这个别告诉我容易,其实不容易的,要学懂整个流程一点也不容易,只照着做根本没意思。





10、数据备份,不学不行,工具有很多,但至少要把RAID的原理弄懂,特别是企业最常用的1+0或0+1,自己做实验也要弄出来,备份工具有很多,如tar, dump, rsync等,最好多了解一下。

算了,说到这10点已经够你受了,应该可以入门了,因为有些技术会比较难学,例如apache和nginx中还有些很重要的技术,如系统调优和服务优化,还有程序优化,这些在没接触工作前很难学习到的,所以先把这10点学了吧,估计要学熟至少3个月不止,就脚本那部分已经让你很吃力了,我建议是先学熟shell,等工作后再学另一门脚本语言,这样会比较好。




以上就是踏入linux运维工程师需要掌握的工具,其实还有很多工具要掌握的,但你在学习环境中是很难学到,最后我再提醒一下,这里所指的工具相当于技能,而不是像windows或ubuntu那些图形化工具,那些工具没用的,还有,学linux就别装图形界面,这样虚拟机就不用吃太多内存,而且绝对不建议在真机上装linux,根本达不到学习效果。

转载:http://bbs.51cto.com/thread-1087414-1.html

nginx或者apache日志统计前十访问的URI

 下面两种方式统计nginx或者apache等http服务日志,所有URI接口的调用次数并显示出现次数最多的前十的URL,哪个更准确?

方法一:统计URI包括所有参数

cat /tmp/log |awk ‘{print $7}’ | sort | uniq -c | sort -nr |head -10

方法一:统计URI忽略所有参数
cat /tmp/log |awk ‘{split($7,b,”?”);COUNT[b[1]]++;}END{for(a in COUNT) print  COUNT[a], a}’|sort -k1 -nr|head -10 

其实是不通的统计方式

linux centos 中OpenSSL升级方法详解

OpenSSL升级前段时间出现天大bug了,这样导致大家都急着去升级OpenSSL来初安全了,但是很多的朋友在家linux并不知道如何去升级OpenSSL了,下面我整理了一文章大家一起参考一下。

相关软件下载地址
Apache:http://httpd.apache.org/
Nginx:http://nginx.org/en/download.html
OpenSSL:http://www.openssl.org/
openssl-poc
附件说明
PoC.py : 漏洞利用测试PoC脚本
showssl.pl:OpenSSL动态库版本检测脚本
安装OpenSSL步骤

由于运营环境不同,以下过程仅供参考。openssl属于系统应用,被较多应用依赖,由于环境不同等因素,请先在测试环境进行充分测试。
从官方下载最新版本的opensssl库
wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz
解压下载的openssl压缩包
tar -zxvf openssl-1.0.1g.tar.gz
进入解压后的openssl文件夹
cd openssl-1.0.1g
执行文件夹中的config文件,这里openssl的安装目录默认是/usr/local/ssl(由于系统环境差异路径可能不一致,下同),注意添加zlib-dynamic参数,使其编译成动态库

 代码如下 复制代码
./config shared zlib-dynamic
config完成后执行 make 命令
make
make 命令执行完后再执行 make install 命令,安装openssl
make install
重命名原来的openssl命令
mv /usr/bin/openssl  /usr/bin/openssl.old
重命名原来的openssl目录
mv /usr/include/openssl  /usr/include/openssl.old
将安装好的openssl 的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/ssl/bin/openssl  /usr/bin/openssl
将安装好的openssl 的openssl目录软连到/usr/include/openssl
ln -s /usr/local/ssl/include/openssl  /usr/include/openssl
修改系统自带的openssl库文件,如/usr/local/lib64/libssl.so(根据机器环境而定) 软链到升级后的libssl.so
ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so
执行命令查看openssl依赖库版本是否为1.0.1g:
strings /usr/local/lib64/libssl.so |grep OpenSSL
在/etc/ld.so.conf文件中写入openssl库文件的搜索路径
echo “/usr/local/ssl/lib” >> /etc/ld.so.conf
使修改后的/etc/ld.so.conf生效

ldconfig -v
查看现在openssl的版本是否是升级后的版本
openssl version
更新Webserver的 OpenSSL依赖库
如果webserver在安装编译时加载了openssl,还需对webserver进行重启或者重新编译操作。因webserver安装时分为动态编译和静态编译openssl两种方式,所以具体操作方式也不同。
判断webserver是否为动态编译ssl的两种方法

wget -c https://www.openssl.org/source/openssl-1.0.1s.tar.gz
tar -zxvf openssl-1.0.1s.tar.gz 
cd openssl-1.0.1s
./config shared zlib-dynamic
make && make install
mv /usr/bin/openssl  /usr/bin/openssl.old
mv /usr/include/openssl  /usr/include/openssl.old
ln -s /usr/local/ssl/bin/openssl  /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl  /usr/include/openssl
ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so
strings /usr/local/lib64/libssl.so |grep OpenSSL
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v
openssl version

通过ldd命令查看依赖库


ssl1

ldd查看程序依赖库,存在libssl.so则为动态编译ssl(如上图),反之为静态(如下图):

ssl2

查看编译参数
如输入以命令/usr/sbin/nginx -V,查看nginx的编译参数,参数中不存在–with-openssl则为动态编译ssl的,反之为静态:
ssl3

更新OpenSSL库
a) 如果webserver是动态编译ssl安装的,直接重启apache,nginx等相应webserver服务即可。
b) 如果webserver是静态编译ssl安装的,可参照以下方法更新:
apache静态编译ssl的情况:
源码重新安装apache,使用ssl静态编译:
执行apache的configure文件时,除了业务需要的参数外,需要指定ssl为静态编译

 代码如下 复制代码
./configure –enable-ssl=static –with-ssl=/usr/local/ssl
(openssl的安装路径)

安装apache

 代码如下 复制代码
make && make install

恢复原有apache配置,重启服务即可
nginx静态编译ssl的情况:
源码重新安装nginx,使用ssl静态编译:
执行nginx的configure文件时,除了业务需要的参数外,需要指定ssl为静态编译,编译参数带上–with-openssl便表明为静态编译ssl

 代码如下 复制代码
./configure  –with-http_ssl_module –with-openssl=/usr/local/ssl
(openssl的安装路径)

安装nginx

 代码如下 复制代码
make && make install

恢复原有nginx配置,重启服务即可
如有其他使用openssl的情况,参照apache和nginx的解决方式。
测试漏洞是否存在
使用附件PoC.py根据脚本提示检测是否存在漏洞。
如:
测试https://192.168.0.1漏洞是否存在执行命令如下

 代码如下 复制代码
python PoC.py -p 443,8443 192.168.0.1

检测动态库libssl.so版本
检测当前进程使用的libssl.so版本
执行附件showssl.pl检查脚本,无信息输出或无漏洞版本openssl输出,表示升级成功;如输出中有unknown,请业务自查libssl.so.1.0.0的版本是否是受影响的版本。
(详情见附件)

 代码如下 复制代码
#!/usr/bin/perl -w
my @listInfo = `lsof |grep libssl|awk ‘{print $1″ “$2” “$NF}’|sort -u`;
foreach my $info (@listInfo)
{
my ($procName, $procPid, $libPath) = split(/s/, $info);
next if (!defined($procName) || !defined($procPid)|| !defined($libPath));
my $version = `strings $libPath|grep -E “^OpenSSL [0-9]+.[0-9]+”`;
chomp $version;
if ($version =~ /s*OpenSSLs*1.0.1[a-f]{0,2}/)
{
print “$procName($procPid) : $libPath ($version).n”;
}
}

检测系统使用的libssl.so版本
执行命令:

 代码如下 复制代码
strings /usr/local/lib64/libssl.so |grep OpenSSL

查看openssl依赖库版本是否为1.0.1g
注:/usr/local/lib64/libssl.so 路径仅供参考,由具体机器环境决定,参考升级步骤