Nginx 会在 http 头,或者出现错误页的时候会有醒目的版本号提示。

为了安全,可以关闭这些信息。

方法很简单,只需在 nginx.conf 的 http {  里头加入 server_tokens 的参数

例如:

http {
include      mime.types;
default_type  application/octet-stream;
server_tokens off;    #关闭版本显示
client_header_timeout      3m;
client_body_timeout        3m;
send_timeout                3m;

继续阅读

通过shell脚本查看服务器的硬件信息和系统的版本信息等情况

#!/bin/bash
if [[ -f /usr/bin/lsb_release ]]; then
OS=$(/usr/bin/lsb_release -a |grep Description |awk -F : ‘{print $2}’ |sed ‘s/^[ \t]*//g’)
else
OS=$(cat /etc/issue |sed -n ‘1p’)
fi
OS_version=$(uname -m)
kernel_version=$(uname -r)
CPU=$(grep ‘model name’ /proc/cpuinfo |uniq |awk -F : ‘{print $2}’ |sed ‘s/^[ \t]*//g’  |sed ‘s/ \+/ /g’)
Counts=$(grep ‘physical id’ /proc/cpuinfo |sort |uniq |wc -l)
Cores=$(grep ‘cpu cores’ /proc/cpuinfo |uniq |awk -F : ‘{print $2}’ |sed ‘s/^[ \t]*//g’)
PROCESSOR=$(grep ‘processor’ /proc/cpuinfo |sort |uniq |wc -l)
Mode=$(getconf LONG_BIT)

Numbers=$(grep ‘lm’ /proc/cpuinfo |wc -l)
if (( ${Numbers} > 0)); then lm=64
else lm=32
fi

Total=$(cat /proc/meminfo |grep ‘MemTotal’ |awk -F : ‘{print $2}’ |sed ‘s/^[ \t]*//g’)
Number=$(dmidecode | grep -A16 “Memory Device$” |grep Size|sort |sed ‘s/^[ \t]*//g’)
SwapTotal=$(cat /proc/meminfo |grep ‘SwapTotal’ |awk -F : ‘{print $2}’ |sed ‘s/^[ \t]*//g’)
Buffers=$(cat /proc/meminfo |grep ‘Buffers’ |awk -F : ‘{print $2}’ |sed ‘s/^[ \t]*//g’)
Cached=$(cat /proc/meminfo |grep ‘\<Cached\>’ |awk -F : ‘{print $2}’ |sed ‘s/^[ \t]*//g’)
Available=$(free -m |grep – |awk -F : ‘{print $2}’ |awk ‘{print $2}’)
Max_Capacity=$(dmidecode -t memory -q |grep ‘Maximum Capacity’ |awk -F : ‘{print $2}’ |sed ‘s/^[ \t]*//g’)

Disk=$(fdisk -l |grep ‘Disk’ |awk -F , ‘{print $1}’)
Partion=$(df -hlP |sed -n ‘2,$p’)

Line=’===========’

echo -e “${Line}\nOS:\n${OS}\n${Line}”
echo -e “OS_version:\n${OS_version}\n${Line}”
echo -e “Kernel_version:\n${kernel_version}\n${Line}”
echo -e “CPU model:\n${CPU}\n${Line}”
echo -e “Total of physical CPU:\n${Counts}\n${Line}”
echo -e “Number of CPU cores\n${Cores}\n${Line}”
echo -e “Number of logical CPUs:\n${PROCESSOR}\n${Line}”
echo -e “Present Mode Of CPU:\n${Mode}\n${Line}”
echo -e “Support Mode Of CPU:\n${lm}\n${Line}”
echo -e “Total Memory:\n${Total}\n${Line}”
echo -e “Total Swap:\n${SwapTotal}\n${Line}”
echo -e “Buffers:\n${Buffers}\n${Line}”
echo -e “Cached:\n${Cached}\n${Line}”
echo -e “Available Memory:\n${Available} MB\n${Line}”
echo -e “Maxinum Memory Capacity:\n${Max_Capacity}\n${Line}”
echo -e “Number of Physical Memory:\n${Number}\n${Line}”
echo -e “Amount Of Disks:\n${Disk}\n${Line}”
echo -e “Usage Of partions:\n${Partion}\n${Line}”

Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。

Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多。在1975年时,储存媒介只有两种:内存与硬盘。但现在计算机系统的内存除了主存外,还包括了CPU内的L1、L2,甚至有L3快取。硬盘上也有自己的快取装置,因此Squid Cache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但操作系统可以得知这些情况,所以这部份的工作应该交给操作系统处理,这就是 Varnish cache设计架构。
varnish项目是2006年发布的第一个版本0.9.距今已经八年多了,此文档之前也提过varnish还不稳定,那是2007年时候编写的,经过varnish开发团队和网友们的辛苦耕耘,现在的varnish已经很健壮。很多门户网站已经部署了varnish,并且反应都很好,甚至反应比squid还稳定,且效率更高,资源占用更少。相信在反向代理,web加速方面,varnish已经有足够能力代替squid。
继续阅读

很多时候用户需要从网站下载文件,如果文件是可以通过一个固定链接公开获取的,那么我们只需将文件存放到 webroot 下的目录里就好。但大多数情况下,我们需要做权限控制,例如下载 PDF 账单,又例如下载网盘里的档案。这时,我们通常借助于脚本代码来实现,而这无疑会增加服务器的负担。

例如下面的代码:
继续阅读

apache 403错误,显示信息如下:
—————————————————————————————————
您无权查看该网页
您可能没有权限用您提供的凭据查看此目录或网页
果您确信能够查看该目录或网页,请尝试使用 192.168.1.5 主页上所列的电子邮件地址或电话与网站联系。
可以单击搜索,寻找 Internet 上的信息。

一.正则表达式匹配,其中:
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
二.文件及目录匹配,其中:
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
三.rewrite指令的最后一项参数为flag标记,flag标记有:
1.last    相当于apache里面的[L]标记,表示rewrite。
2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。
3.redirect  返回302临时重定向,浏览器地址会显示跳转后的URL地址。
4.permanent  返回301永久重定向,浏览器地址会显示跳转后的URL地址。

继续阅读

Nginx 貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的。如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较”像”,干脆来说说alias标签和root标签的区别吧。最基本的区别:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。另外,根据前文所述,使用alias标签的目录块中不能使用rewrite的break。

继续阅读