官方:
tcp_nopush
Syntax: tcp_nopush on | off
Default: off
Context: http
server
location
Reference: tcp_nopush
继续阅读
分类目录归档: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
认证是指任何识别用户身份的过程,以允许特定的用户访问特定的区域或信息。
相关模块和指令
相关模块 | 相关指令 |
---|---|
方维整站系统伪静态实现
方维整站系统伪静态实现
默认给的文件是.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/ –>
使用telnet查看web服务器排错。
命令行下测试web网站返回代码:
telnet www.hardwork.cn 80
GET / HTTP/1.1
Host: www.hardwork.cn
解决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