基于Nginx搭建Web服务器及虚拟主机相关配置详解

随着计算机与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

或者

[root@localhost nginx-1.12.0]# nginx -c /usr/local/nginx/conf/nginx.conf

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

用户测试访问:
基于Nginx搭建Web服务器及虚拟主机相关配置详解
其中“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)访问虚拟主机

基于Nginx搭建Web服务器及虚拟主机相关配置详解
基于Nginx搭建Web服务器及虚拟主机相关配置详解

———————— 本文至此结束,感谢阅读 ————————

猜你喜欢

转载自blog.51cto.com/14157628/2434832