AR511路由器Nginx常见问题定位方法

发布时间:  2016-06-30 浏览次数:  182 下载次数:  0
问题描述

AR511路由器Nginx常见问题定位方法

解决方案

1.1       认证鉴权阶段调试命令

<user> debugging ws-aaa all

<user> debugging ws-access all

 

1.2       检查nginx/php运行状态

1[diag] display nginx configuration  --查看当前的nginx配置

 

2<shell> ps | grep nginx --查看nginx进程

bash-3.2# ps | grep nginx                                                      

10808 root      4188 S <  nginx: master process /mnt/squash/nginx/nginx/sbin/n 

10809 root      4464 S <  nginx: worker process                                

10810 root      4472 S <  nginx: worker process                                

10811 root      4464 S <  nginx: worker process                                

12348 root      2032 S    grep nginx                                           

                                                                   

3<shell> ps | grep php --查看php进程

bash-3.2# ps | grep php                                                        

10818 root     13152 S <  php-fpm: master process (/mnt/web/php5/etc/php-fpm.c 

11259 root     16420 S <  php-fpm: pool www                                    

11262 root     16716 S <  php-fpm: pool www                                    

11263 root     16420 S <  php-fpm: pool www                                    

12427 root      2032 S    grep php                     

                        

1.3       抓包分析,需要先镜像到GE0/0/0

[sys] observe-port interface GigabitEthernet 0/0/0

[inter-vlan1] mirror to observe-port both

[inter-eth0/0/0] mirror to observe-port both

[inter-cellular0/0/0] mirror to observe-port both

对抓包使用http.request进行过滤,对相应的http请求follow stream,查看响应报文中的错误信息。如下面对发送验证码的POST /antelop/user/vcode HTTP/1.0请求进行抓包。

 

1.4       使用pc上浏览器查看网页

需要配一个路由,然后就能在pc上通过路由器3G上网,看到网页情况。

 

1.5       Linux下网络状态查看

1netstat –an   --查看网络状态 

bash-3.2# netstat -an                                                          

Active Internet connections (servers and established)                          

Proto Recv-Q Send-Q Local Address           Foreign Address         State      

tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN     

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     

tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN     

tcp        0      0 192.168.100.2:43297     123.58.33.49:10020      ESTABLISHED

Active UNIX domain sockets (servers and established)                           

Proto RefCnt Flags       Type       State         I-Node Path                  

unix  2      [ ACC ]     STREAM     LISTENING       1316 /dev/socket/netd      

unix  2      [ ACC ]     STREAM     LISTENING       4140 /mnt/sock/devm_private_

 

2<shell-root>iptables -t nat -L  -n –v       --查看iptables规则 

bash-3.2# iptables -t nat -L  -n -v                                            

Chain PREROUTING (policy ACCEPT 1073 packets, 65940 bytes)                     

 pkts bytes target     prot opt in     out     source               destination

  409 29878 DNAT       tcp  --  *      *       0.0.0.0/0           !192.168.100.

2       tcp dpt:80 to:192.168.100.2:81                                         

 

1.6       Nginx自带的debug功能

Nginx自带debug功能,需要以下三步来实现:

1)编译nginx的时候,使用--with-debug参数;

2)在代码中,使用ngx_log_debug$(...)来打印调试信息,其中$表示调试中要打印的变量个数,取值为0/1/2/3/4/5…,具体可以参考ngx_log.h中的定义。

ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "ngx http log shm get mac, IP-Value : %s-%s", ipaddr, ip);

3)在nginx配置文件中开启debug日志:

error_log logs/debug.log debug;

在运行的时候,会在logs目录下自动生成debug.log文件,使用ftp传输出来就可以分析调试信息了。

END