Nginx虚拟主机相关配置详解
随着计算机与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 -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
2)启动、停止Nginx服务
[root@localhost ~]# nginx//直接运行nginx命令即可启动Nginx服务[root@localhost ~]# netstat -anpt | grep nginxtcp 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 20PROG="/usr/local/sbin/nginx"PIDF="/usr/local/nginx/logs/nginx.pid"case "$1" instart) $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 1esac 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)访问虚拟主机
-------- 本文至此结束,感谢阅读 --------