随着计算机与Internet技术的高速发展,各种各样的Web站点也就成为面向用户的中坚力量。在各种网站服务器软件中。除了Apache外,还有一款轻量级的HTTP服务器软件——Nginx。
基于Apache搭建Web服务器可以参考博文:基于Apache搭建Web服务器详解
一、Nginx服务简介
Nginx由俄罗斯的lgor Sysoev开发,专为性能优化而开发,其最知名的优点就是它的稳定性和低系统资源消耗、以及对HTTP并发连接的高处立能力(单台物理服务器可支持30000~50000个并发请求)。正因为如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供Web服务。
搭建Web服务如果是为了解析静态网页、动态网页等、不需要太多的功能,那么Nginx绝对是首选。
二、编译安装Nginx服务
Nginx最新的稳定版本为1.12.0,可以通过官网http://nginx.org/ 或者网盘链接:https://pan.baidu.com/s/1H5DHcVWMPGDWFQ-kDsS7XA 提取码:1zyi 进行下载使用。
1.编译安装Nginx服务
1)安装支持软件
Nginx的配置及运行需要pcre(支持正则表达式)、zlib(支持压缩)等软件包的支持,因此应先安装这些软件的开发包,以便提供提供相应的功能,确保Nginx的安装顺利完成:
[root@localhost ~]# yum -y install pcre-devel zlib-devel
2)创建运行用户、组
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
3)编译安装Nginx
[root@localhost ~]# tar zxf nginx-1.12.0.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx --with-http_stub_status_module
//指定Nginx服务的安装目录、运行用户及组
启用http_stub_status_module模块支持状态统计,便于查看服务器的连接信息
[root@localhost nginx-1.12.0]# make && make install
4)优化路径
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
2.Nginx服务的运行控制
1)检查Nginx服务配置文件
与Apache的主程序httpd相似,Nginx也是使用“-t”选项对其配置文件进行语法检查。若要检查位于其他位置的配置文件,可使用“-c”选项来指定路径。
[root@localhost nginx-1.12.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
2)启动、停止Nginx服务
[root@localhost ~]# nginx
//直接运行nginx命令即可启动Nginx服务
[root@localhost ~]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 46231nginx: master
//默认也是TCP协议80端口,如果有其他Web服务软件,应修改其端口,避免冲突
[root@localhost ~]# lynx http://127.0.0.1
//可以使用lynx命令进行文本浏览器进行检查(需要安装lynx软件包)
[root@localhost ~]# killall -s HUP nginx
//重新加载Nginx配置文件
[root@localhost ~]# killall -s QUIT nginx
//停止Nginx服务
3)添加Nginx服务为系统服务
为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本。脚本内容如下:
[root@localhost ~]# vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20
PROG="/usr/local/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx
[root@localhost ~]# systemctl start nginx
//即可使用systemctl工具来管理Nginx服务
3.Nginx服务配置文件详解
Nginx服务的主配置文件为:/usr/local/nginx/conf/nginx.conf。
1)全局配置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
#user nginx; //运行用户
worker_processes 1; //工作进程数量
#error_log logs/error.log; //错误日志文件的位置
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; //PID文件的存放位置
worker_processes配置项表示工作进程的数量,若服务器有多块CPU或者使用多核处理器,可以参考CPU核心总数来指定工作进程数(可以使用命令cat /proc/cpuinfo | grep "processor" | wc -l );如果网站访问量需求不大,一般设为1即可(根据情况自行调整)。
2)I/O事件配置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
………………………… //省略部分内容
events {
use epoll; //使用epoll模型
worker_connections 1024; //每个进程处理1024个连接
}
对于2.6版本及以上的内核,建议使用epoll模型来提高性能。
3)HTTP配置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
………………………… //省略部分内容
http {
include mime.types; //支持多媒体格式
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
//日志主格式
access_log logs/access.log main; //访问日志存放位置
sendfile on; //开启高效传输文件模式
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; //连接超时时间(默认是秒)
#gzip on;
server { //Web服务的监听配置
listen 80; //监听地址及端口
server_name localhost; //网站名称
charset utf-8; //网页的默认字符集
location / { //根目录配置(必须存在)
root html; //网站根目录的位置
index index.html index.php; //默认首页
}
error_page 500 502 503 504 /50x.html; //内部错误的反馈页面
location = /50x.html { //错误页面配置
root html;
}
}
}
root语句用来设置特定访问位置的网页文档路径,默认为Nginx安装目录下的html子目录。根据实际情况自行修改。
三、访问状态统计及虚拟主机应用
1.Nginx的访问状态统计
Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况,编译安装Nginx时需添加--with-http_stub_status_module来启动模块。除此之外,还要次改配置文件:
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
…………………… //省略部分内容
server {
………… //省略部分内容,添写以下内容
location /status{
stub_status on;
access_log off;
}
}
[root@localhost ~]# systemctl restart nginx
用户测试访问: 其中“Active connections”表示当前的活动连接数; “server accepts handled requests”表示已处理的连接信息: 三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数。
2.基于域名的虚拟Web主机
基于域名的虚拟Web主机通过域名区分不同的Web站点。使用Nginx搭建虚拟主机服务器时,每个虚拟Web站点拥有独立的“server{}”配置段各自的IP地址、端口号、域名都可自行指定。本次示例创建用于不同域名的虚拟主机。
创建虚拟主机的基本步骤:
(1)搭建DNS服务,使两个域名解析为同一IP地址。
搭建DNS服务可以参考博文:Linux搭建DNS服务
(2)准备网站目录及测试文件
[root@localhost ~]# mkdir -p /var/www/benet
[root@localhost ~]# mkdir -p /var/www/accp
[root@localhost ~]# echo "www.benet.com" > /var/www/benet/index.html
[root@localhost ~]# echo "www.accp.com" > /var/www/accp/index.html
(3)调整Nginx服务的主配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
……………… //省略部分内容
http {
……………… //省略部分内容
server {
listen 80;
server_name www.benet.com;
charset utf-8;
location / {
root /var/www/benet;
index index.html index.php;
}
location /status{
stub_status on;
access_log off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name www.accp.com;
charset utf-8;
location / {
root /var/www/accp;
index index.html index.php;
}
location /status{
stub_status on;
access_log off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
[root@localhost ~]# systemctl restart nginx
(4)访问虚拟主机
———————— 本文至此结束,感谢阅读 ————————