230 likes | 832 Views
轻量级 HTTP 服务器 / 反向代理服务器 nginx. 主讲人: 高俊峰. 华章培训网、 [www.hztraining.com] 华章培训网版权所有. 快速搭建一个基于 Nginx 的 Web 服务器系统 第一讲. 内容概述 nginx 的概念以及功能点 简单安装 nginx 配置一个简单的 Ningx 应用. 华章培训网、 [www.hztraining.com] 华章培训网版权所有. nginx 的概念以及功能点. 1 、 Nginx 的概念
E N D
轻量级HTTP服务器/反向代理服务器nginx 主讲人:高俊峰 华章培训网、[www.hztraining.com]华章培训网版权所有
快速搭建一个基于Nginx 的Web服务器系统第一讲 内容概述 nginx的概念以及功能点 简单安装nginx 配置一个简单的Ningx应用 华章培训网、[www.hztraining.com]华章培训网版权所有
nginx的概念以及功能点 1、Nginx的概念 Nginx是一款高性能的HTTP和反向代理服务器软件,也是一个 IMAP/POP3/SMTP 代理服务器,可以运行在UNIX,GNU/Linux,BSD,Mac OS X, Solaris, 以及 Microsoft Windows等操作系统中。 2、Nginx与Apache的异同 相同点: 都是一个HTTP服务器软件。 功能实现上都采用模块化结构设计,都支持通用的语言接口,如PHP、Perl、Python等。 支持正、反向代理,虚拟主机,URL重写,压缩传输,SSL加密传输等。 不同点: Apache处理速度很慢,且占用很多内存资源,而Nginx却恰恰相反. Apache的所有模块都支持动、静态编译,而Nginx模块都是静态编译. Apache对Fcgi支持不好,而Nginx对Fcgi的支持非常的好.
nginx的概念以及功能点 3、Nginx的优势 作为Web服务器,nginx处理静态文件、索引文件以及自动索引效率非常高。 作为代理服务器,Nginx可以实现反向代理加速。 作为负载均衡服务器,Nginx支持简单的容错和利用算法进行负载均衡。 在性能方面,Nginx采用内核Poll模型,可以支持更多的并发连接。 在稳定性方面,Nginx采取了分阶段资源分配技术,可以使CPU与内存的占用率非常低。 在高可用性方面,Nginx支持热部署,启动速度特别快,几乎可以做到7×24小时的不间断运行。
简单安装nginx 1、下载Nginx Nginx有三个版本:稳定版、开发版和历史稳定版,Nginx的官方网站是http://sysoev.ru/nginx/,英文主页为http://nginx.net,安装Nginx之前,确保系统已经安装了gcc、 openssl-devel、 pcre-devel和zlib-devel软件库。 2、安装Nginx所需的pcre-devel库 安装pcre库是为了使Nginx支持HTTP Rewrite 模块。下面进行安装,过程如下。 [root@localhost home]# tar zxvf pcre-8.02.tar.gz [root@localhost home]# cd pcre-8.02 [root@localhost pcre-8.02]#./configure [root@localhost pcre-8.02]#make [root@localhost pcre-8.02]#make install 3、安装Nginx [root@localhost home]# tar zxvf nginx-0.7.65.tar.gz [root@localhost home]#cd nginx-0.7.65 [root@localhostnginx-0.7.65]#./configure --with-http_stub_status_module --prefix=/opt/nginx [root@localhost nginx-0.7.65]#make [root@localhost nginx-0.7.65]#make install 在上面的configure选项中“--with-http_stub_status_module”可以用来启用 Nginx的NginxStatus 功能,以监控 Nginx 的当前状态。
配置一个简单的Ningx应用 1、Nginx配置文件结构
配置一个简单的Ningx应用 2、开始配置Nginx Nginx配置文件主要分成四部分: • main(全局设置) • server(主机设置) • upstream(负载均衡服务器设置) • location(URL匹配特定位置的设置)。 main部分设置的指令将影响其他所有设置;server部分的指令主要用于指定主机和端口;upstream指令主要用于负载均衡,设置一系列的后端服务器;location部分用于匹配网页位置。这四者之间的关系式:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
配置一个简单的Ningx应用 2、开始配置Nginx user nobody nobody; worker_processes 4; error_log logs/error.log notice; pid logs/nginx.pid; worker_rlimit_nofile 65535; events{ use epoll; worker_connections 65536; } worker_processes指定Nginx要开启的进程数。 error_log用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。 pid用来指定进程id的存储文件位置。 worker_rlimit_nofile用于绑定worker进程和CPU, Linux内核2.4以上可用。 events是设定Nginx的工作模式及连接数上限。 use用来指定Nginx的工作模式。对于Linux系统,epoll工作模式是首选。 worker_connections用于定义Nginx每个进程的最大连接数,默认是1024.最大客户端连接数由worker_processes和worker_connections决定,即为:Max_client=worker_processes*worker_connections
配置一个简单的Ningx应用 2、开始配置Nginx http{ include conf/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$gzip_ratio"'; log_format download '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$http_range" "$sent_http_content_range"'; access_log logs/www.ixdba.net.access.log main; client_max_body_size 20m; client_header_buffer_size 32K; large_client_header_buffers 4 32k; Sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 60; client_header_timeout 10; client_body_timeout 10; send_timeout 10;
配置一个简单的Ningx应用 2、开始配置Nginx 对上面配置参数含义解释如下: include实现对配置文件所包含的文件的设定,类似于Apache中的include方法。 default_type是设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式。 log_format用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用。 access_log用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。 client_max_body_size用来设置允许客户端请求的最大的单个文件字节数。 client_header_buffer_size用于指定来自客户端请求头的headerbuffer大小。 large_client_header_buffers用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“128K”为大小,最大缓存量为4个128K。 sendfile参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。 keepalive_timeout设置客户端连接保持活动的超时时间。 client_header_timeout设置客户端请求头读取超时时间。 client_body_timeout设置客户端请求主体读取超时时间。 send_timeout指定响应客户端的超时时间。
配置一个简单的Ningx应用 2、开始配置Nginx gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; gzip用于设置开启或者关闭gzip模块,“on”表示实时压缩输出数据流。 gzip_min_length设置允许压缩的页面最小字节数,建议设置成大于1K的字节数,小于1K可能会越压越大。 gzip_buffers表示申请4个单位为16K的内存作为压缩结果流缓存。 gzip_http_version用于设置识别HTTP协议版本,默认是1.1。 gzip_comp_level用来指定GZIP压缩比,1 压缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。 gzip_types用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的。 gzip_vary 开启这个选项可以让前端的缓存服务器缓存经过GZIP压缩的页面。
配置一个简单的Ningx应用 2、开始配置Nginx server{ listen 80; server_name 192.168.12.188 www.ixdba.net; index index.html index.htm index.jsp; root /web/wwwroot/www.ixdba.net charset gb2312; server标志定义虚拟主机开始。 listen用于指定虚拟主机的服务端口。 server_name用来指定IP地址或者域名,多个域名之间用空格分开。 Index用于设定访问的默认首页地址。 root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。 Charset用于设置网页的默认编码格式。
配置一个简单的Ningx应用 2、开始配置Nginx location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { root /web/wwwroot/www.ixdba.net; expires 30d; } URL地址匹配是进行Nginx配置中最灵活的部分。 location支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤处理。 上面这段表示所有扩展名以.gif、.jpg、.jpeg、.png、.bmp、.swf结尾的静态文件都交给nginx处理,而expires用来指定静态文件的过期时间,这里是30天。 location ~ ^/(upload|html)/ { root /web/wwwroot/www.ixdba.net; expires 30d; } 上面这段是将upload和html下的所有文件都交给nginx来处理,当然,upload和html目录包含在/web/wwwroot/www.ixdba.net目录中。
配置一个简单的Ningx应用 2、开始配置Nginx location ~ .*.jsp$ { index index.jsp; proxy_pass http://localhost:8080; } 上面这段是将所有以.jsp为后缀的文件都交给本机的8080端口处理。 location /NginxStatus { stub_status on; access_log logs/NginxStatus.log; auth_basic "NginxStatus"; auth_basic_user_file ../htpasswd; } 上面这段是启用Nginx的工作状态统计功能,access_log用来指定StubStatus模块的访问日志文件。auth_basic是Nginx的一种认证机制。auth_basic_user_file用来指定认证的密码文件。 error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; #这段代码是设置nginx错误页面信息。 } } }
启动与管理Nginx 1、检查Nginx配置文件的正确性 /opt/nginx/sbin/nginx –t 或者 /opt/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf “-t”参数用于检查配置文件是否正确,但并不执行。“-c”参数用于指定配置文件路径。 2、启动nginx Nginx的启动非常简单,只需输入: /opt/nginx/sbin/nginx 3、关闭nginx 如果要关闭Nginx进程,可以使用如下命令: kill -9 pid 平滑重启: kill -HUP ‘cat /opt/nginx/logs/nginx.pid‘
感谢您对华章培训网的支持! http://www. hztraining.com