www.nginx.cnsitemap

nginx开启https

2017年2月15日 没有评论

开启https配置

#下面是http跳转至https

分类: nginx 标签:

如何读懂tcpdump的输出

2017年2月2日 1 条评论

tcpdump 是 Linux 下的抓包工具,使用参数比较多,输出条目比较细。

tcpdump的命令行格式

 

tcpdump的参数选项

 

tcpdump的表达式

表达式是一个逻辑表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。

在表达式中一般如下几种类型的关键字:

关于类型的关键字,主要包括host,net,port

例如,
host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明202.0.0.0是一个网络地址,port 23 指明端口号是23。

如果没有指定类型,缺省的类型是host.

关于传输方向的关键字:src,dst,dst or src,dst and src

例如,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。

关于协议的关键字:fddi,ip,arp,rarp,tcp,udp

Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和e ther具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。

其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

逻辑运算符关键字

非运算 'not ' '! '
与运算 'and','&&'
或运算 'or' ,'||'
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

其他重要关键字

除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater。

案例

想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
tcpdump host 210.27.48.1

想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令
tcpdump host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3\)

如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2

如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
tcpdump tcp port 23 host 210.27.48.1

输出结果介绍
下面我们介绍几种典型的tcpdump命令的输出信息

数据链路层头信息
使用命令tcpdump --e host ice

ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:af:1a

H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5b:46

命令的输出结果如下所示:

21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telnet 0:0(0) ack 22535 win 8760 (DF)

分析:

21:50:12 是显示的时间
847509 是ID号
eth0 < 表示从网络接口eth0 接受该数据包
eth0 > 表示从网络接口设备发送数据包
8:0:20:79:5b:46 是主机H219的MAC地址,它表明是从源地址H219发来的数据包
0:90:27:58:af:1a 是主机ICE的MAC地址,表示该数据包的目的地址是ICE
ip 是表明该数据包是IP数据包,
60 是数据包的长度,
h219.33357 > ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口
ack 22535 表明对序列号是222535的包进行响应
win 8760 表明发送窗口的大小是8760
ARP包的TCPDUMP输出信息
使用命令#tcpdump arp

得到的输出结果是:

22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)

分析:

22:32:42 时间戳
802509 ID号
eth0 > 表明从主机发出该数据包
arp 表明是ARP请求包
who-has route tell ice 表明是主机ICE请求主机ROUTE的MAC地址
0:90:27:58:af:1a 是主机ICE的MAC地址。

TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:

src > dst 表明从源地址到目的地址
flags 是TCP包中的标志信息,S 是SYN标志, F(FIN), P(PUSH) , R(RST) "."(没有标记)
data-seqno 是数据包中的数据的顺序号
ack 是下次期望的顺序号
window 是接收缓存的窗口大小
urgent 表明数据包中是否有紧急指针
options 是选项

用TCPDUMP捕获的UDP包的一般输出信息是:

UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth

wireshark查看
要让wireshark能分析tcpdump的包,关键的地方是 -s 参数, 还有要保存为-w文件,例如下面的例子:

wireshark的过滤,很简单的,比如:

tcp.port eq 5541
ip.addr eq 192.168.2.1
过滤出来后, 用fllow tcp 查看包的内容。

其他

device eth0/eth1 entered promiscuous mode
message日志中提示:
kernel: device eth0 entered promiscuous mode
kernel: device eth0 left promiscuous mode
网卡进入了混杂模式。一般对通信进行抓包分析时进入混杂模式(tcpdump)。(默认网卡启用了混杂模式的)
关闭混杂模式:ifconfig eth0 -promisc
启用混杂模式:ifconfig eth0 promisc
TCP协议的KeepAlive机制与HeartBeat心跳包:http://www.nowamagic.net/academy/detail/23350382
TCP Keepalive HOWTO:http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/

参考

http://xstarcd.github.io/wiki/shell/tcpdump.html
https://my.oschina.net/xianggao/blog/678644

分类: linux 标签: ,

nginx解决跨域

2017年1月22日 3 条评论

什么是跨域?

使用js获取数据时,涉及到的两个url只要协议、域名、端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题。
例如客户端的域名是www.redis.com.cn,而请求的域名是www.264.cn
如果直接使用ajax访问,会有以下错误
XMLHttpRequest cannot load http://www.264.cn/server.php. No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://www.redis.com.cn' is therefore not allowed access.

如何解决跨域?

在服务器页面的Response header中加入如下内容,可以实现POST跨域。
// 指定允许其他域名访问
header('Access-Control-Allow-Origin:*');
// 响应类型
header('Access-Control-Allow-Methods:POST');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with,content-type');

Access-Control-Allow-Origin:* 表示允许任何域名跨域访问
如果需要指定某域名才允许跨域访问,只需把Access-Control-Allow-Origin:*改为Access-Control-Allow-Origin:允许的域名
例如:header('Access-Control-Allow-Origin:http://www.redis.com.cn');

 

1.nginx配置文件增加响应头

在服务器端的nginx.conf中配置增加配置

这样就可以实现GET,POST,OPTIONS的跨域请求的支持

2.修改php代码加入响应头

例如,server.php 路径:http://www.264.cn/server.php

3.修改客端的nginx配置,利用反向代理来实现

例如,www.redis.com.cn/html/request.html 想请求www.264.cn/api/msg?method=1&para=2;

变成访问本地域名地址

通过nginx中增加location反向代理到服务器端

 

 

分类: nginx 标签:

解决wordpress高亮插件总是对尖括号进行转义

2017年1月22日 没有评论

看到一网友问:
请问高亮插件总是对尖括号进行转义,结果变得面目全非,这个怎么解决,搜了一堆也没搜到可行的。

想起自己曾经也遇到过这个问题,可能我表达的不好,所以搜索不到。

wordpress pre标签内的html代码被转义解决办法
想在wordpress 的文章内容中插入代码,一般都是放在<pre></pre>中。

例如php中的<?,不特别处理的情况下浏览器会把<当作html标签的开始,所以在页面上会看不到<。

我们可以在wordpress输出前对尖括号代码进行转义,这样pre标签的输出就正常了。

在后台 外观->编辑->functions.php,把如下内容放在functions.php的开头

 

分类: wordpress 标签: , ,

噢,没有这个文件。请重新检查文件名,然后再试。谢谢。

2017年1月12日 1 条评论

使用lnmp安装包配置vps环境的同学,安装完成后运行wordpress修改模板时系统会显示
“噢,没有这个文件。请重新检查文件名,然后再试。谢谢。”

这个错误时由于php仅用了scandir函数。
打开php.ini去掉红框中的scandir。
vi /usr/local/php/etc/php.ini

重启php让修改的配置生效
lnmp php-fpm restart

分类: wordpress 标签:

mac下启动爱奇艺报连接到服务器错误

2017年1月7日 2 条评论

安装爱奇艺mac版客户端后启动,会跳出如下提示,打不开程序。
连接到服务器“miwifi.com”时出现问题。
请检查服务器名称或ip地址,然后再试一次。如果问题持续发生,请联系系统管理员。

问题猜测是找不到miwifi.com的共享服务器,你可以按以下方式排查:
打开finder->共享的
如果你看到的是以你路由器无线名字命名的服务器,那么这就是原因所在了。
这个服务器的名字需要是miwifi.com。

我的办法是
插上外置u盘->重启路由->小米路由mac客户端->小米路由盘

finder里可以看到原来以你wifi命名的网络服务器变成了miwifi.com就可以了。

分类: 小技巧 标签:

如何提升网站的流量

2016年12月26日 2 条评论

周末休息的时候想着找些事做,于是在网上买过一些网站过来运营,大体都不是有好的结果。
大都随着通货膨胀升了些值,然后卖掉了,但是花的时间和回报并不符合。
这其中也有一些体会:
1.选择好的域名,即使网站做不好域名也会升值
2.选着内容丰富的,自己觉得也觉得受用的站点,连自己都觉得垃圾不想看的就不要看了。
3.大力发展移动端网站
同样类型的站点,你会觉得有些网站也很烂,但是搜索排名却不错,不知道什么原因。
懂行的留言帮我看看 http://wannianli.fkcha.com
谢谢。

分类: 网站 标签:

php-fpm不输出php错误日志

2016年12月18日 没有评论

使用如下php的配置
php-fpm.conf

php.ini

当通过浏览器访问系统发生500错误时,不记录错误日志内容,通过使用php在命令行直接执行php脚本却可以生成错误日至到日志文件。
说明php的配置正确,后台能够生成日志,问题应该出在php脚本自身上。

查询源码后发现php中有error_reporting(0);屏蔽了所有错误。
修改成error_reporting(E_ALL);可以生成错误信息到日志文件了。

分类: php 标签: ,

iis监听指定ip配置,iis和nginx共存

2016年11月30日 没有评论

服务器增加ip之后,默认都监听在80端口,这样新加的ip就不能供nginx使用。

打开cmd, netstat -aon

你会看见 TCP 0.0.0.0:80 或者id为4的进程监听在80端口

解决办法:
1.下载httpcfg.exe

http://www.microsoft.com/downloads/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90&displaylang=en

2.查看系统监听情况,打开cmd之行

输出结果

这表示没有监听,给iis绑定指定ip

执行结果,表示设置正确
HttpQueryServiceConfiguration completed with 0.

重启iis服务器

现在iis只监听在我们指定的ip xxx.xxx.xxx.xxx上,新的ip可以供nginx或者apache使用了。

iis7可以使用netsh http add iplisten ipaddress=xxx.xxx.xxx.xxx

分类: nginx 标签:

windows下配置nginx和php环境(wnmp)

2016年11月27日 没有评论

1.准备
创建安装目录D:/web,我们所有的文件都会放在这个目录下

下载nginx最新版

下载php:php-5.4.16-Win32-VC9-x86.zip

2.下载完成会后获得如下文件,解压缩并重命名文件夹去掉版本号
php-5.4.16-Win32-VC9-x86.zip
nginx-1.10.2.zip

3.配置nginx
nginx不需要额外的配置,直接运行就可以,打开命令行cmd切换到d:/web/nginx
输入 start nginx 后回车即可启动
浏览器中访问http://localhost/可以看到欢迎页面表示安装成功
具体可以参考windows下安装nginx

3.配置php
在php的目录下可以找到php.ini-development文件,复制一份并将文件名修改为php.ini。然后修改配置文件内容
; extension_dir = "ext" ,删除前面的分号并修改为:extension_dir = "D:/web/php/ext"
;cgi.force_redirect = 1,删除前面的分号:cgi.force_redirect = 1
;cgi.fix_pathinfo=1,删除前面的分号:cgi.fix_pathinfo=1
;cgi.rfc2616_headers = 0,删除前面的分号:cgi.rfc2616_headers = 1

命令行下输入如下命令启动php,不报错表示启动成功。

4.检查nginx、php是否安装成功
在D:/web/nginx/html下新建一个phpinfo.php,加入如下内容后保存

修改nginx.conf 增加server,也就是虚拟服务器

重启nginx
打开浏览器访问http://localhost/phpinfo.php
能看到php信息表示安装成功。

4.安装mysql
这个步骤根其它环境无特殊不同,如果安装过可以直接使用,未安装的可以根据mysql安装向导下一步即可。

最终安装之后的目录结构

附:nginx和php的快速启动和关闭脚本
启动脚本

关闭脚本

遇到的问题:
如果遇到提示php不是有效的win32程序,是因为安装的微软运行时库不对2003需要使用vc9版本的php

分类: nginx 标签: , ,