第1章 Nginx 网站服务
1.1 web网站服务介绍:
1.1.1 提供静态服务的软件
Apache:这是中小型Web服务的主流,Web服务器中的老大哥。 Nginx:大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。 Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展。 Lighttpd:这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高。在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身影。 |
1.1.2 提供动态服务的软件
PHP(FastCGI):大中小型网站都会使用,动态网页语言PHP程序的解析容器。它可配合Apache解析动态程序,不过,这里的PHP不是FastCGI守护进程模式,而是mod_php5.so(module)。也可配合Nginx解析动态程序,此时的PHP常用FastCGI守护进程模式提供服务。(.php) Tomcat:中小企业动态Web服务主流,互联网Java容器主流(如jsp、do)。 Resin:大型动态Web服务主流,互联网Java容器主流(如jsp、do)。 IIS(Internet information services):微软windows下的Web服务软件(如asp、aspx) |
1.2 Nginx web服务部署及说明
1.2.1 Nginx 软件特点
1. 支持高并发:能支持几万并发连接(特别是静态小文件业务环境) 2. 资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB 3. 可以做HTTP反向代理及加速缓存、即负载均衡功能,内置对RS节点服务器健康检查功能, 这相当于专业的Haproxy软件或LVS的功能。 4. 具备Squid等专业缓存软件等的缓存功能。 5. 支持异步网络I/O事件模型epoll(nginx)-select(apache)(Linux 2.6+) |
1.2.2 Nginx 软件部署(编译安装)
#第一个里程:下载nginx程序软件包并解压 mkdir /server/tools -p cd /server/tools wget http://nginx.org/download/nginx-1.14.0.tar.gz tar xf nginx-1.14.0.tar.gz |
#第二个里程:解决软件依赖问题 yum install openssl-devel pcre-devel -y openssl-devel --- 为了让nginx服务可以实现https访问的功能 pcre-devel --- 兼容perl语言的正则表达式(^ shell:以什么开头 perl:^/) nginx使用时会应用一个参数rewrite 正则表达式信息(perl) |
#第三个里程:创建worker进程的管理用户 useradd -s /sbin/nologin -M www |
#第四个里程:编译安装软件过程 #编译安装软件三部曲 #01.进行软件的配置 mkdir /server/tools -p cd /server/tools cd nginx-1.14.0 ./configure --prefix=/application/nginx-1.14 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module #02.进行软件的编译(将各个语言编写代码翻译成系统可以识别的二进制信息) make #03.进行编译安装(将软件最终安装到系统中) make install |
#重要配置参数总结 --prefix=PATH set installation prefix 设置软件程序安装到哪个目录,指定的目录不需要创建出来 --user=USER set non-privileged user for worker processes --group=GROUP set non-privileged group for worker processes --with-http_ssl_module enable ngx_http_ssl_module(可以实现https) --with-http_stub_status_module enable ngx_http_stub_status_module(主要用于监控服务运行状态) |
#第五个里程:创建程序软链接 ln -s /application/nginx-1.14/ /application/nginx [[email protected] application]# ll /application/nginx-1.14/ total 16 drwxr-xr-x 2 root root 4096 May 16 10:49 conf drwxr-xr-x 2 root root 4096 May 16 10:49 html drwxr-xr-x 2 root root 4096 May 16 10:49 logs drwxr-xr-x 2 root root 4096 May 16 10:49 sbin |
#第六个里程:启动nginx服务 /application/nginx/sbin/nginx |
1.2.3 Nginx 安装目录及命令解释
目录 |
说明 |
conf |
--- 所有nginx相关的配置文件保存目录 |
nginx.conf |
--- nginx程序主配置文件 |
html |
--- 表示web服务站点目录 |
logs |
--- 日志目录 |
sbin |
--- 程序命令保存目录 |
Nginx命令参数说明: nginx –help -----查询nginx的帮助信息 Options: -?,-h : this help -v : show version and exit 显示软件版本信息并退出 -V : show version and configure options then exit 显示版本信息和配置参数信息并退出 -t : test configuration and exit 配置文件语法检查(ansible语法检查功能) -T : test configuration, dump it and exit 配置文件语法检查,将配置文件信息显示出来 -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload 发送一个信号给master进程 -p prefix : set prefix path (default: /usr/share/nginx/) -c filename : set configuration file (default: /etc/nginx/nginx.conf) -g directives : set global directives out of configuration file |
1.2.4 Nginx 主配置文件nginx.conf
1.2.5 Nginx 站点目录及首页文件概念说明
1.3 Nginx 虚拟主机配置
1.3.1 虚拟主机的概念
所谓虚拟主机,在Web服务里就是一个独立的网站站点,这个站点对应独立的域名 (也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问 这个独立的站点在配置里是由一定格式的标签段标记的,对于Apache软件来说 一个虚拟主机的标签段通常被包含在<Virtuallost></VirtualHost>内,而Nginx软件则 使用一个server{}标签来标示一个虚拟主机。一个Web服务里可以有多个虚拟主机标签 对,即可以同时支持多个虚拟主机站点。 |
1.3.2 虚拟主机的类型
·常见的虚拟主机类型有如下几种。
(1)基于域名的虚拟主机 所谓基于域名的虚拟主机,意思就是通过不同的域名区分不同的虚拟主机,基于域 名的虚拟主机是企业应用最广的虚拟主机类型,几乎所有对外提供服务的网站使用的都 是基于域名的虚拟主机,例如:www.etiantian.org。 |
(2)基于端口的虚拟主机 同理,所谓基于端口的虚拟主机,意思就是通过不同的端口来区分不同的虚拟主 机,此类虚拟主机对应的企业应用主要为公司内部的网站,例如:一些不希望直接对 外提供用户访问的网站后台等,访问基于端口的虚拟主机,地址里要带有端口,例如: http://www.etiantian.org:9000。 |
(3)基于IP的虚拟主机 同理,所谓基于IP的虚拟主机,意思就是通过不同的IP区分不同的虚拟主机,此 类虚拟主机对应的企业应用非常少见。一般不同的业务需要使用多IP的场景都会在负 载均衡器上进行VIP绑定,而不是在Web上绑定IP来区分不同的虚拟机。 |
1.3.3 基于域名的虚拟主机配置
第一步:申请域名信息 先进行购买,域名备案,在申请域名网站上,可以进行A记录的配置 www.oldboy.com -- 服务器公网IP地址 |
第二步:编写配置文件 ----- nginx.conf server { listen 80; server_name www.etiantian.org; root html/www; index index.html index.htm; } server { listen 80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } server { listen 80; server_name blog.etiantian.org; root html/blog; index index.html index.htm; } |
第三步:检查配置文件语法信息 nginx -t |
第四步:创建虚拟主机站点目录,创建虚拟主机首页文件 mkdir -p /application/nginx/html/{www,bbs,blog} [[email protected] nginx]# for name in www bbs blog;do echo "10.0.0.7 $name.etiantian.org" >/application/nginx/html/$name/index.html;done [[email protected] nginx]# for name in www bbs blog;do cat /application/nginx/html/$name/index.html;done 10.0.0.7 www.etiantian.org 10.0.0.7 bbs.etiantian.org 10.0.0.7 blog.etiantian.org |
第五步:进行DNS解析(配置hosts) 配置hosts文件: 01. windows中要进行配置 02. Linux中也要进行配置 |
第六步:配置文件修改后要进行重启服务 nginx -s reload |
1.3.4 基于端口的虚拟主机配置
第一里程:修改配置文件 server { listen 80; server_name www.etiantian.org; root html/www; index index.html index.htm; } server { listen 81; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } server { listen 82; server_name blog.etiantian.org; root html/blog; index index.html index.htm; } |
第二里程:平滑重启nginx服务 nginx -s reload |
第三里程:进行访问测试 netstat -lntup|grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19363/nginx tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 19363/nginx tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 19363/nginx |
1.3.5 基于IP的虚拟主机配置
第一里程:编写配置文件,监听本地网卡上有的IP地址 server { listen 10.0.0.7:80; server_name www.etiantian.org; root html/www; index index.html index.htm; } server { listen 10.0.0.8:80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } |
第二里程:重启nginx服务 重点强调:nginx服务配置文件中只要涉及到IP地址的修改,都要重启nginx服务,而不是平滑重启 nginx -s stop && nginx |
第三里程:进行访问测试 curl 10.0.0.7 curl 10.0.0.8 |
1.4 Nginx 常用功能配置
1.4.1 规范优化Nginx配置文件
·目的:每一个虚拟主机都生成一个单独的配置文件
第一个里程:创建一个虚拟主机配置文件保存目录 [[email protected] conf]# pwd /application/nginx/conf [[email protected] conf]# mkdir extra |
第二个里程: 生成虚拟主机配置文件 /application/nginx/conf [[email protected] conf]# sed -n '10,15p' nginx.conf >extra/www.conf [[email protected] conf]# sed -n '16,21p' nginx.conf >extra/bbs.conf [[email protected] conf]# sed -n '22,27p' nginx.conf >extra/blog.conf [[email protected] conf]# cat extra/* server { listen 80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } server { listen 80; server_name blog.etiantian.org; root html/blog; index index.html index.htm; } server { listen 80; server_name www.etiantian.org; root html/www; index index.html index.htm; } 说明:虚拟主机文件配置完毕,要将nginx中的虚拟主机配置信息删除 |
第三个里程:编写nginx主配置文件,加载虚拟主机配置文件 ---nginx.conf worker_processes 2; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include extra/www.conf; include extra/blog.conf; include extra/bbs.conf; } ####也可用 include extra/*; 表示extra目录下的所有配置文件。 |
第四个里程:重启nginx服务 nginx -s reload |
1.4.2 配置Nginx 服务别名功能(主要用于测试)
#####修改配置文件 server { listen 80; server_name www.etiantian.org www.et.org; root html/www; index index.html index.htm; } #####检查语法 nginx -t #####平滑重启nginx nginx -s reload ####说明:配置别名也需要做好DNS解析 |
1.4.3 Nginx 状态模块页面配置
Nginx软件在编译时有一个with-http_stub_status_module模块,这个模块功能是记录Nginx的基本访问状态信息,让使用者了解Nginx的工作状态。要想使用状态模块,在编译时必须增加--with-http_stub_status_module参数。 可通过如下方法检测编译安装Nginx时是否设定上述模块支持: |
[[email protected] ~]# nginx -V nginx version: nginx/1.14.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=/application/nginx-1.14.0 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module |
第一个里程:编写配置文件 # 编写一个status虚拟主机配置文件 cp extra/www.conf extra/status.conf server { listen 80; server_name status.etiantian.org; stub_status; #root html/www; #index index.html index.htm; } # 编写主配置文件,调用status虚拟主机配置文件 worker_processes 2; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include extra/www.conf; include extra/bbs.conf; include extra/blog.conf; include extra/status.conf; } |
第二个里程:重启nginx服务 nginx -t #--------检查语法 nginx -s reload ###-------平滑重启 |
第三个里程:进行DNS解析处理 |
第四个里程:进行测试访问 [[email protected] ~]# curl status.etiantian.org Active connections: 1 server accepts handled requests 6926 6926 7067 Reading: 0 Writing: 1 Waiting: 0 |
原文地址:http://blog.51cto.com/zhuzhiwei/2121731