随着计算机与Internet技术的蓬勃发展,各种Web站点成为直接面向用户的中坚力量,在各种网站服务器软件中,除了Apache外,还有一款轻量级的HTTP服务器软件——Nginx,其稳定性、高效的特性逐渐被越来越多的用户认可。本篇博客将搭建Nginx网站服务器,并配置基于域名的虚拟Web主机
Nginx的基本配置
Nginx是由俄罗斯的Igor Sysoev专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30 000~50 000个并发请求)。正因为如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供Web服务
1. 安装Nginx
Nginx的安装文件可以从官方网站http://www.nginx.org/下载,下面以稳定片1.6.0为例,介绍Nginx的安装和运行控制
[[email protected] ~]# yum -y install pcre-devel zlib-devel //Nginx的配置需要pcre、zlib等软件包的支持 [[email protected] ~]# useradd -M -s /sbin/nologin nginx //创建一个nginx的程序用户 [[email protected] ~]# tar zxf nginx-1.6.0.tar.gz -C /usr/src/ [[email protected] ~]# cd /usr/src/nginx-1.6.0/ [[email protected] nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module [[email protected] nginx-1.6.0]# make && make install //启用http_stub_status_module模块以支持状态统计,便于查看服务器的连接信息 [[email protected] nginx-1.6.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [[email protected] nginx-1.6.0]# nginx -t //检查配置文件是否有错误 nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [[email protected] nginx-1.6.0]# nginx //开启服务 [[email protected] nginx-1.6.0]# netstat -anpt | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4614/nginx [[email protected] nginx-1.6.0]# killall -s HUP nginx //重载服务 [[email protected] nginx-1.6.0]# killall -s QUIT nginx //关闭服务
2. 编写Nginx服务脚本
为了使Nginx服务的启动、停止等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和service工具来进行管理
[[email protected] ~]# vim /etc/init.d/nginx #!/bin/bash # chkconfig: 2345 99 20 # description: Nginx Service Control Script PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then echo "Nginx service already running." else $PROG -t &> /dev/null if [ $? -eq 0 ] ; then $PROG echo "Nginx service start success." else $PROG -t fi fi ;; stop) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then kill -s QUIT $(cat $PIDF) echo "Nginx service stop success." else echo "Nginx service already stop" fi ;; restart) $0 stop $0 start ;; status) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then echo "Nginx service is running." else echo "Nginx is stop." fi ;; reload) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then $PROG -t &> /dev/null if [ $? -eq 0 ] ; then kill -s HUP $(cat $PIDF) echo "reload Nginx config success." else $PROG -t fi else $PROG -t fi else echo "Nginx service is not run." fi ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac [[email protected]lhost ~]# chmod +x /etc/init.d/nginx [[email protected] ~]# chkconfig --add nginx //将nginx添加到系统服务
2. 配置文件nginx.conf
在Nginx服务器的主配置文件,包括全局配置、I/O事件配置、HTTP配置三大块内容
(1)全局配置
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf #user nobody; //运行用户 worker_processes 1; //工作进程数量,可参考CPU核心总数来指定工作进程数 #error_log logs/error.log; //错误日志文件的位置 #pid logs/nginx.pid; //PID文件的位置
(2)I/O事件配置
建议使用epoll模型以提高性能,进程的连接数根据实际需求来定,一般在10000以下(默认1024)
events { use epoll; //使用epoll模型 worker_connections 1024; //每个进程处理1024个连接,可按需求进行调整 }
(3)HTTP配置
包括访问日志、HTTP端口、网页目录、默认字符集、连接保持等
Nginx的访问状态统计
Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况。除了编译安装时需要启动该模块外,还需要修改nginx.conf配置文件,指定访问位置并打开stub_status配置
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf ……省略部分内容 server { location /status { //访问的位置为/status stub_status on; //打开状态统计功能 access_log off; //关闭此位置的日志记录 } ……省略部分内容 } [[email protected] ~]# service nginx restart
在浏览器中访问Nginx服务器的/status网站位置,可以看到当前的统计信息
配置虚拟Web主机
在前面的Apache服务中,已经介绍了基于域名、基于IP地址、基于端口号三种虚拟Web主机。而使用Nginx搭建虚拟Web主机服务器时,每个虚拟Web站点拥有独立的“server{ }”配置项,网站名称、IP地址、端口号都可以单独指定,下面将配置基于域名的虚拟Web主机
(1)搭建DNS服务器
这里采用另一种方法,修改hosts文件,只能在本机解析域名
[[email protected] ~]# vim /etc/hosts 127.0.0.1 www.ysf.com 127.0.0.1 www.yangshufan.com
(2)准备网站目录及测试文件
[[email protected] ~]# mkdir /var/www/ysf [[email protected] ~]# mkdir /var/www/yangshufan [[email protected] ~]# echo www.ysf.com > /var/www/ysf/index.html [[email protected] ~]# echo www.yangshufan.com > /var/www/yangshufan/index.html
(3)调整nginx.conf配置文件
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf http { ……省略部分内容 server { listen 80; server_name www.ysf.com; charset utf-8; #access_log logs/host.access.log main; location / { root /var/www/ysf; index index.html index.htm; } } server { listen 80; server_name www.yangshufan.com; location / { root /var/www/yangshufan; index index.html index.htm; } } } [[email protected] ~]# service nginx reload
(4)访问虚拟Web主机
在浏览器中分别访问两个站点,若能看到测试文件,就表示虚拟Web主机的配置成功
原文地址:http://blog.51cto.com/yangshufan/2060354