分页: 37/196 第一页 上页 32 33 34 35 36 37 38 39 40 41 下页 最后页 [ 显示模式: 摘要 | 列表 ]
May 16
这两天搭建了一组Apache服务器,每台服务器4G内存,采用的是prefork模式,一开始设置的连接数太少了,需要较长的时间去响应用户的请求,后来修改了一下Apache 2.0.59的配置文件httpd.conf:
引用
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 2000
MaxRequestsPerChild 10000

查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):
Linux命令:
ps -ef | grep httpd | wc -l
返回结果示例:
1388
表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整,我这组服务器中每台的峰值曾达到过2002。
查看Apache的并发请求数及其TCP连接状态:
Linux命令:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(这条语句是从新浪互动社区事业部技术总监王老大那儿获得的,非常不错)
返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
关于TCP状态的变迁,可以从下图形象地看出:
点击在新窗口中浏览此图片
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
Tags:
May 16
nginx添加参数可以允许打开目录浏览功能,详见http://bbs.linuxtone.org/viewthread.php?tid=2563&rpid=9073&ordertype=0&page=1#pid9073或者
官方的 http://wiki.nginx.org/NginxHttpAutoindexModule

这是说的是支持目录浏览的第三方插件fancyindex
本次试验用的nginx-0.8.15
第三方插件下载地址
http://download.snake.de/dist/ngx-fancyindex-0.2.1.tar.bz2

[root@test src]# tar zxvf nginx-0.8.15.tar.gz
[root@test src]# tar jxvf ngx-fancyindex-0.2.1.tar.bz2
[root@test src]# cd nginx-0.8.15
[root@test nginx-0.8.15]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../ngx-fancyindex-0.2.1

然后根据自己的目录浏览要求配置 nginx.conf ,以下为我的主机配置

引用
server {
listen 80;
server_name 192.168.11.12;
location / {
fancyindex on;#开启 fancy indexes
fancyindex_exact_size off;#显示文件大小。
# autoindex on;
#autoindex_localtime on;
#autoindex_exact_size off; 注释这三项是不装插件开启目录浏览功能。
root /data ;
}
}

[root@test nginx]# ./sbin/nginx -t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@test nginx]# ./sbin/nginx

完成配置。
这里只是用到了插件fancyindex的2个参数,还有 fancyindex_localtimefancyindex_headerfancyindex_footer = 大家研究一下。。可以看一下这里 http://wiki.nginx.org/NginxNgxFancyIndex 。
不知道 安装这个插件与没有安装过插件开启,在效率上是否有不同。。。
下面截图是 安装过插件 和nginx 开启目录浏览 截图。
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
Tags: ,
May 16
LVS:略
nginx proxy 配置:
引用

location / {
root /data/www/wwwroot/bbs.linuxtone.com;
proxy_redirect off ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_pass http://bbs.linuxtone.org;
}

源nginx配置:
安装
HttpRealIpModule模块:
http://wiki.nginx.org/NginxChsHttpRealIpModule
--with-http_realip_module
编译方法:
引用

./configure --user=daemon --group=daemon --prefix=/usr/local/nginx/
--with-http_stub_status_module --with-http_ssl_module
--with-http_sub_module --with-md5=/usr/lib --with-sha1=/usr/lib
--with-http_gzip_static_module --with-http_realip_module

虚拟主机增加配置:
set_real_ip_from nginx_proxy_ip/24;
set_real_ip_from nginx_proxy_ip;
real_ip_header X-Real-IP;

EXP:
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.1.6;
real_ip_header X-Real-IP;

查看二台nginx的日志就能取到真实IP了
Tags: , ,
May 16
有时候为了伪装自己的真实服务器环境.
不想让对方知道自己的webserver真实环境,就不得不修改我们的webserer软件了!
今天看了一下baidu.com的webserver感觉像是nginx修改的.
C:\curl-7.18.0\curl.exe -I www.baidu.com
HTTP/1.1 200 OK
Date: Tue, 11 Mar 2008 05:00:39 GMT
Server: BWS/1.0
Content-Length: 3022
Content-Type: text/html
Cache-Control: private
Expires: Tue, 11 Mar 2008 05:00:39 GMT
Set-Cookie: BAIDUID=41BB2845D3E8BC1AEE99D4CECB90C50A:FG=1; expires=Tue, 11-
8 05:00:39 GMT; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "

于是自己翻了一下nginx源码了,发现竟然很容修改就可以实现.
cd /usr/local/src/nginx-0.5.35/src/core/
[root@zyatt core]# cat nginx.h
/*
* Copyright (C) Igor Sysoev
*/

#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_


#define NGINX_VERSION "1.0"
#define NGINX_VER "LPKWS/" NGINX_VERSION

#define NGINX_VAR "LPKWS"
#define NGX_OLDPID_EXT ".oldbin"

#endif /* _NGINX_H_INCLUDED_ */

测试效果
C:\curl-7.18.0\curl.exe -I 211.100.11.122/info.php (此Nginx没有做优化,配置expires,gzip等,仅为测试)

HTTP/1.1 200 OK
Server: LPKWS/1.0
Date: Tue, 11 Mar 2008 04:53:02 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.4
要想更彻底点,把下面这几个文件也修改了
修改src/http/ngx_http_header_filter_module.c
static char ngx_http_server_string[]="Server: nginx" CRLF;
修改src/http/ngx_http_special_response.c
static u_char ngx_http_error_tail[]="<hr><center>nginx</center>" CRLF"</body>" CRLF"</html>" CRLF;
修改Nginx的FastCGI配置文件fastcgi.conf
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

要想真正的优化和安全考虑,还是应该好好读读源代码,踏踏实实做好细节工作!
Tags: ,
May 15
1.时区设置

有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。

SetEnv TZ Australia/Melbourne

2. 搜索引擎友好的301永久转向方法

为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。

Redirect 301 http://www.aqee.net/home http://www.aqee.net/

3. 屏蔽下载对话框

通常,当你下载东西的时候,你会看到一个对话框询问你是保持这个文件还是直接打开它。如果你不想看到这个东西,你可以把下面的一段代码放到你的.htaccess文件里。

AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov

4. 省去www前缀

SEO的一个原则是,确保你的网站只有一个URL。因此,你需要把所有的通过www的访问转向的非www,或者反这来。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.aqee.net [NC]
RewriteRule ^(.*)$ http://aqee.net/$1 [L,R=301]

5. 个性化Error页面

对每个错误代码定制自己个性化的错误页面。

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

6. 压缩文件

通过压缩你的文件体积来优化网站的访问速度。

# 压缩 text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

7. 缓存文件

缓存文件是另外一个提高你的网站访问速度的好方法。

<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
Header set Cache-Control “max-age=2592000″
</FilesMatch>

8. 对某些文件类型禁止使用缓存

而另一方面,你也可以定制对某些文件类型禁止使用缓存。

# 显式的规定对脚本和其它动态文件禁止使用缓存
<FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”>
Header unset Cache-Control
</FilesMatch>

安全问题

下面的htaccess代码能够提高你的web服务器的安全水平。图片链接盗用保护非常有用,它能防止其他人偷盗使用你的服务器上的图片资源。

1. 通过.htaccess放盗链

痛恨那些偷盗链接你的web服务器上的图片资源而耗尽了你的带宽的行为吗?试试这个,你可以防止这种事情的发生。

RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?aqee.net/.*$ [NC]
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

2. 防黑客

如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。

RewriteEngine On

# proc/self/environ? 没门!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]

# 阻止脚本企图通过URL修改mosConfig值
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]

# 阻止脚本通过URL传递的base64_encode垃圾信息
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

# 阻止在URL含有<script>标记的脚本
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]

# 阻止企图通过URL设置PHP的GLOBALS变量的脚本
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]

# 阻止企图通过URL设置PHP的_REQUEST变量的脚本
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})

# 把所有被阻止的请求转向到403禁止提示页面!
RewriteRule ^(.*)$ index.php [F,L]

3. 阻止访问你的 .htaccess 文件

下面的代码可以阻止别人访问你的.htaccess文件。同样,你也可以设定阻止多种文件类型。

# 保护你的 htaccess 文件
<Files .htaccess>
order allow,deny
deny from all
</Files>

# 阻止查看指定的文件
<Files secretfile.jpg>
order allow,deny
deny from all
</Files>

# 多种文件类型
<FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
Order Allow,Deny
Deny from all
</FilesMatch>

4. 重命名 htaccess 文件

你可以通过重命名htaccess文件来对其进行保护。

AccessFileName htacc.ess

5. 禁止目录浏览

禁止服务器对外显示目录结构,反之亦然。

# 禁止目录浏览
Options All -Indexes

# 开放目录浏览
Options All +Indexes

6. 改变缺省的Index页面

你可以把缺省的 index.html, index.php 或 index.htm 改成其它页面。

DirectoryIndex business.html

7. 通过引用信息来阻止某些不欢迎的浏览者

# 阻止来自某网站的用户
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]
RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]
RewriteRule .* - [F]

</ifModule>

8. 通过判断浏览器头信息来阻止某些请求

这个方法可以通过阻止某些机器人或蜘蛛爬虫抓取你的网站来节省你的带宽流量。

# 阻止来自某些特定网站的用户
<IfModule mod_rewrite.c>
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider
|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>

9. 禁止脚本执行,加强你的目录安全

# 禁止某些目录里的脚本执行权限
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
Tags:
分页: 37/196 第一页 上页 32 33 34 35 36 37 38 39 40 41 下页 最后页 [ 显示模式: 摘要 | 列表 ]