轻量级 http 服务器 / 反向代理服务器 nginx

16
轻轻轻 HTTP 轻轻轻 / 轻轻轻轻轻轻 轻 nginx 主主主主主主 主主主主主[www.hztraining.com] 主主主主主主主主主

Upload: adia

Post on 18-Mar-2016

458 views

Category:

Documents


8 download

DESCRIPTION

轻量级 HTTP 服务器 / 反向代理服务器 nginx. 主讲人: 高俊峰. 华章培训网、 [www.hztraining.com] 华章培训网版权所有. 快速搭建一个基于 Nginx 的 Web 服务器系统 第一讲. 内容概述 nginx 的概念以及功能点 简单安装 nginx 配置一个简单的 Ningx 应用. 华章培训网、 [www.hztraining.com] 华章培训网版权所有. nginx 的概念以及功能点. 1 、 Nginx 的概念 - PowerPoint PPT Presentation

TRANSCRIPT

轻量级 HTTP 服务器 / 反向代理服务器 nginx

主讲人:高俊峰

华章培训网、 [www.hztraining.com] 华章培训网版权所有

快速搭建一个基于 Nginx 的 Web 服务器系统第一讲

华章培训网、 [www.hztraining.com] 华章培训网版权所有

内容概述nginx的概念以及功能点简单安装 nginx

配置一个简单的 Ningx应用

华章培训 www.hztraining.com

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页

华章培训 www.hztraining.com

3 、 Nginx 的优势作为 Web 服务器, nginx 处理静态文件、索引文件以及自动索引效率非常高。作为代理服务器, Nginx 可以实现反向代理加速。作为负载均衡服务器, Nginx 支持简单的容错和利用算法进行负载均衡。在性能方面, Nginx 采用内核 Poll 模型,可以支持更多的并发连接。在稳定性方面, Nginx 采取了分阶段资源分配技术,可以使 CPU 与内存的占用率非常低。在高可用性方面, Nginx 支持热部署,启动速度特别快,几乎可以做到 7×24 小时的不间断运行。

nginx 的概念以及功能点

第 4页

华章培训 www.hztraining.com

1 、下载 NginxNginx 有三个版本:稳定版、开发版和历史稳定版, 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[[email protected]]#./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 的当前状态。

简单安装 nginx

第 5页

华章培训 www.hztraining.com

1 、 Nginx 配置文件结构

配置一个简单的 Ningx 应用

第 6页

华章培训 www.hztraining.com

2 、开始配置 Nginx

Nginx 配置文件主要分成四部分:main (全局设置)server (主机设置)upstream (负载均衡服务器设置)location ( URL 匹配特定位置的设置)。main 部分设置的指令将影响其他所有设置; server 部分的指令主要用于指定主机和端口; upstream 指令主要用于负载均衡,设置一系列的后端服务器; location 部分用于匹配网页位置。这四者之间的关系式:server 继承 main , location 继承 server , upstream 既不会继承其他设置也不会被继承。

配置一个简单的 Ningx 应用

第 7页

华章培训 www.hztraining.com

2 、开始配置 Nginxuser 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 应用

第 8页

华章培训 www.hztraining.com

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 应用

第 9页

华章培训 www.hztraining.com

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 应用

第 10页

华章培训 www.hztraining.com

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 应用

第 11页

华章培训 www.hztraining.com

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.netcharset gb2312;

server标志定义虚拟主机开始。listen 用于指定虚拟主机的服务端口。server_name 用来指定 IP地址或者域名,多个域名之间用空格分开。Index 用于设定访问的默认首页地址。root 指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。Charset 用于设置网页的默认编码格式。

配置一个简单的 Ningx 应用

第 12页

华章培训 www.hztraining.com

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 应用

第 13页

华章培训 www.hztraining.com

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错误页面信息。 }}}

配置一个简单的 Ningx 应用

第 14页

华章培训 www.hztraining.com

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‘

启动与管理 Nginx

第 15页

感谢您对华章培训网的支持 !

http://www. hztraining.com