分类目录归档:web网站优化

Linux Web服务器网站故障分析常用的命令

原文地址:http://blog.chinaunix.net/uid-23480577-id-3369313.htmlLinux Web服务器网站故障分析常用的命令 (2012-10-10 19:46)
系统连接状态篇:
1.查看TCP连接状态
netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn
netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’ 或
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,”t”,state[key]}’
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,”t”,arr[k]}’
继续阅读

IIS中永久重定向的参数设置

IIS中永久重定向的使用(包括参数设置)-301

注:一直没研究过参数,也不知道有这些参数,今天才看到,惭愧啊。。。。。

首先,解释下什么是资源的永久重定向,通俗简单理解下,当你在浏览器中输入sina.com.cn(新浪首页)的时候,网址是不是变成www.sina.com.cn了?再说一些163.com、首先,解释下什么是资源的永久重定向,通俗简单理解下,当你在浏览器中输入sina.com.cn(新浪首页)的时候,网址是不是变成www.sina.com.cn了?再说一些163.com、qq.com都会变成www.xxx.com等的样式,使用的就是资源的永久重定向,只不过他们使用的不是IIS。这里只来说说IIS中使用永久重定向的参数的方法。下面将说下IIS6.0中使用重定向的方法。
前提假设,为了简化输入这里假设两个网址:AA-代表aa.com,BB-代表www.aa.com
一、如何设置重定向的方法?
1.打开IIS管理器;
2.展开“网站”,然后选择一个网站,右键点击选择“属性”,然后点击“主目录”选项卡;
3.在“主目录”选项卡中你会看到“此资源的内容来自:”然后下面是3个选项,分别是:
“此计算机上的目录(D)”;
“另一台计算机上的共享(S)”;
“重定向到URL(U)”
4.选择“重定向到URL(U)”,下面的选项会跟着变化
会出现“重定向到(C):”的输入框,这里就是要输入资源重定向网址的地方。
二、举例子说明重定向的方法
1.目标:将AA重定向到BB
2.方法:在IIS中分别设置AA和BB的主机头,按照“一”中说明的方法将AA里“重定向到URL(U)”里面输入BB的网址就,然后选择上“上面输入的准确URL”和“资源的永久重定向”(最好选择上,不然搜索引擎会以为你在作弊,HTTP返回值也会被正确响应为301了),这样可以完成AA重定向到BB。
3.测试:在浏览器中输入AA,看下是不是变成BB了?
三、带参数的AA如何重定向到BB
如果按照“二”中的方法测试http://aa.com/view.asp?id=1&host=www.hl6666.cn这个网址的时候,浏览器会访问www.aa.com,后面的参数是不会重定向的,那么如何带参数重定向?继续往下看吧
1.目标:将http://aa.com/view.asp?id=1&host=www.hl6666.cn重定向到http://www.aa.com/view.asp?id=1&host=www.hl6666.cn
2.方法:这个时候要在“重定向到URL(U)”里面输入参数了,输入的参数在本文结尾归纳,在输入框里面输入http://www.aa.com$S$Q
3.测试:这个时候再次输入http://aa.com/view.asp?id=1&host=www.hl6666.cn的时候看看是不是正确的被重定向到http://www.aa.com/view.asp?id=1&host=www.hl6666.cn了?
四、重定向的参数
$S-将请求的 URL 的后缀传递给新的 URL。后缀是用重定向的 URL 代替之后,初始 URL 中所保留的部分。如果未设置 EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
$P-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,不包括问号 (?)。
$Q-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,包括问号 (?)。
$V-传递请求的 URL,不包括服务器名和任何参数。要包含参数,可使用 $P 或 $Q 变量及 $V 变量。如果未设置 EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
参数还有很多,基本上最常用的就是$S和$Q,任意网址想要实现301的永久重定向只需设置$S和$Q就可以了。

文章举例子说明了IIS中使用重定向实现301的方法,例子中的网址,如果这些网址给您带来不便,请告之本人会尽快删除。

Linux 反 DDOS的几个设置

Linux 反 DDOS的几个设置

QQ:21428749

对sysctl参数进行修改

$ sudo sysctl -a  | grep ipv4 | grep syn

输出类似下面:

net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5

 

  • net.ipv4.tcp_syncookies是是否打开SYN COOKIES的功能,“1”为打开,“2”关闭。
  • net.ipv4.tcp_max_syn_backlog是SYN队列的长度,加大队列长度可以容纳更多等待连接的网络连接数。
  • net.ipv4.tcp_synack_retries和net.ipv4.tcp_syn_retries是定义SYN重试次数。

把如下加入到/etc/sysctl.conf即可,之后执行“sysctl -p”!

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

提高TCP连接能力

net.ipv4.tcp_rmem = 32768
net.ipv4.tcp_wmem = 32768
net.ipv4.sack=0

 使用iptables

命令:

# netstat -an | grep ":80" | grep ESTABLISHED

来查看哪些IP可疑~比如:221.238.196.83这个ip连接较多,并很可疑,并不希望它再次与221.238.196.81有连接。可使用命令:

iptables -A INPUT -s 221.238.196.81 -p tcp -d 221.238.196.83 --dport 25 --syn -j ACCEPT

将其deny。

 其他参考

防止同步包洪水(Sync Flood)

# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

也有人写作

# iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

–limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改防止各种端口扫描

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Ping洪水攻击(Ping of Death)

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

apache给目录添加验证

首先说明:
加验证为解决的问题,也就是加验证的目的,现在很多网站被注入,程序漏洞是一方面,在黑客注入的过程中,利用网站的后台上传木马是很关键的一步,很多程序,前台很安全,后台因为有密码验证,所以,安全会差点,而且,后台可以上传图片,发布文章,少稍不注意,就会被上传webshell,所以,黑客如果没有拿到网站后台,上传木马其实还是很困难的。

apache中文官方手册里面加authtype basic的过程(金步国翻译的),参考链接:http://www.souzz.net/online/apachemanual/howto/auth.html

认证是指任何识别用户身份的过程,以允许特定的用户访问特定的区域或信息。

top
top

Introduction

如果网络站点上有些敏感信息或只希望为一个小群体所访问, 本文阐述的方法能确保使用户只能访问允许被访问的资源。

继续阅读

方维整站系统伪静态实现

 方维整站系统伪静态实现
默认给的文件是.htassess
# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.50
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

启用后无法访问,查看错误日志,有如下内容,

Apache错误日志
[Thu Apr 22 15:34:57 2010] [error] [client 123.122.83.2] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that Re
writeRule directive is forbidden: /var/www/website/admin.php

在apache配置文件或虚拟主机网站目录下.htaccess文件中修改或增加如下Options选项
Options +FollowSymLinks
# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.50
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

说明:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
以上两条是apache的rewrite规则的条件配置,
“RewriteCond指令定义了规则生效的条件,即在一个RewriteRule指令之前可以有一个或多个RewriteCond指令。条件之后的重写规则仅在当前URI与Pattern匹配并且满足此处的条件(TestString能够与CondPattern匹配)时才会起作用。”
!-d  说明“REQUEST_FILENAME”如果不是目录,则匹配
!-f   说明”REQUEST_FILENAME“如果不是文件,则匹配
匹配成功后则rewrite到index.php

QSA说明:   Query   String   Append  
   
  This   flag   forces   the   rewriting   engine   to   append   a   query   string   part   in   the   substitution   string   to   the   existing   one   instead   of   replacing   it.   Use   this   when   you   want   to   add   more   data   to   the   query   string   via   a   rewrite   rule.

为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件

 

如何消除ie上的tip:为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件。

做大作业时碰到,代码中加入js后出现,以前一直不在意,但如果大作业的网页上有这个按mentor的话来说用户体验就差了。。。(虽然很怀疑那个懒用户会不会好好看)

如果你的HTML文件中有这句话

<html xmlns:v=”urn:schemas-microsoft-com:vml” xmlns:o=”urn:schemas-microsoft-com:office:office” xmlns=”http://www.w3.org/TR/REC-html40“>
那直接加入下面这句话就行了

<!– saved from url=(0022)https://www.hardwork.cn/abc/ –>
没有的话.用这两句记住要放在<head>的前面

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<!– saved from url=(0022)https://www.hardwork.cn/abc/ –>

解决Nginx + PHP(FastCGI)遇到的502 Bad Gateway错误

解决Nginx + PHP(FastCGI)遇到的502 Bad Gateway错误

昨日,有朋友问我,他将Web服务器换成Nginx 0.6.31  + PHP 4.4.7(FastCGI)后,有时候访问会出现“502 Bad Gateway”错误,如何解决。

  我让按照以下两个步骤去解决,最后在第2步中将FastCGI的timeout时间增加为300,问题解决:

  PS:比较羡慕迅雷的Web服务器,16G内存。


  1、查看当前的PHP FastCGI进程数是否够用:

netstat -anpo | grep “php-cgi” | wc -l

  如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。


  2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:

……
http
{
……
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
}
……

浏览器访问服务器的速度问题分析

之前看资料,有多次看到过说ie浏览器的客户端在与一个服务器之间(特指http 服务)最多建立2个TCP连接来传输http request。F5可以利用express connect通过增加域名的方式来增加连接数。
我观察过多次,访问我的网站 总能看到10个连接
TCP    192.168.0.185:3632     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3633     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3634     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3635     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3636     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3637     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3638     203.171.232.42:80      ESTABLISHED
TCP    192.168.0.185:3639     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3640     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3641     125.76.229.121:80      ESTABLISHED
TCP    192.168.0.185:3642     125.76.229.121:80      ESTABLISHED

这就让我迷惑。今天在网上一番google,终于明白了点:
原来根据RF2616的要求,客户端和同一个server之间确实只能建立不超过2个TCP(http 1.1是2个,1.0是4个连接)连接以避免拥塞
Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion.

但是这个不是绝对的,不同的浏览器行为可能并不一样。对于IE有这样一个注册表设置:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

MaxConnectionsPerServer REG_DWORD (Default 2)
Sets the number of simultaneous requests to a single HTTP 1.1 Server

MaxConnectionsPer1_0Server REG_DWORD (Default 4)
Sets the number of simultaneous requests to a single HTTP 1.0 Server

这是标准的,但是我的电脑是IE7,他们的值都是10,我想在IE8应该也是这样吧
我查了微软的文档,http://support.microsoft.com/kb/183110/en-us,6.0(含)以前的版本应该都是2. 大家可以验证下。

我将限制值改为2后,再查看发现确实只能同时建立2个TCP连接了。
  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:2869           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:15000          0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1045         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1100         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:62514        0.0.0.0:0              LISTENING
  TCP    192.168.0.185:139      0.0.0.0:0              LISTENING
  TCP    192.168.0.185:1071     219.133.60.243:8000    CLOSE_WAIT
  TCP    192.168.0.185:2307     121.0.19.146:16000     ESTABLISHED
  TCP    192.168.0.185:3609     60.28.183.195:80       TIME_WAIT
  TCP    192.168.0.185:3615     60.28.183.195:80       TIME_WAIT
  TCP    192.168.0.185:3618     125.76.229.121:80      ESTABLISHED
  TCP    192.168.0.185:3619     125.76.229.121:80      ESTABLISHED
  TCP    192.168.0.185:3620     203.171.232.42:80      ESTABLISHED
  TCP    192.168.0.185:3621     125.46.105.130:80      ESTABLISHED
  TCP    192.168.0.185:3623     60.12.231.25:80        ESTABLISHED
  TCP    192.168.0.185:3624     60.12.231.15:80        ESTABLISHED
  TCP    192.168.0.185:3625     61.189.20.200:80       SYN_SENT
  TCP    192.168.0.185:4952     207.46.107.64:1863     ESTABLISHED
  TCP    192.168.0.185:4989     207.46.26.130:1863     ESTABLISHED
  TCP    192.168.0.185:4990     64.4.36.22:1863        ESTABLISHED
  TCP    192.168.0.185:4991     207.46.26.76:1863      ESTABLISHED
  TCP    192.168.0.185:4992     65.54.171.33:1863      ESTABLISHED
  TCP    192.168.0.185:4993     65.54.171.39:1863      ESTABLISHED
  TCP    192.168.0.185:4995     207.46.26.153:1863     ESTABLISHED
  TCP    192.168.124.1:139      0.0.0.0:0              LISTENING
  TCP    192.168.194.1:139      0.0.0.0:0              LISTENING