1、Ngnix简介
2、Ngnix安装
3、Ngnix之静态资源访问
4、Ngnix正向代理与反向代理
5、Ngnix之虚拟主机配置
6、Ngnix之负载均衡
7、Ngnix之访问控制
8、Ngnix日志管理
9、Ngnix配置https访问
10、Ngnix配置文件详解
11、参考资料下载
12、参考文章javascript
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx可以支支撑5万并发连接,而且cpu、内存等资源消耗却很是低,运行很是稳定。php
(1)http静态服务器。Nginx是一个http服务能够独立提供http服务。能够作网页静态服务器,图片服务器和文件服务器
(2)虚拟主机。当一台部署单个应用的web服务器资源过剩时,能够在该服务器上部署多个应用,用nginx来作反向代理,把访问服务器的http请求正确的给到其中的某一个应用。(一台服务器上有多个带域名的应用,多个域名解析同一个IP地址,可是端口号不一样)
(3)反向代理,负载均衡。当网站的访问量达到必定程度后,单台服务器不能知足用户的请求时,须要用多台服务器集群可使用nginx作反向代理。而且多台服务器能够平均分担负载,不会由于某台服务器负载高宕机而某台服务器闲置的状况css
3.1 Apache简介
Apache HTTP服务器是一个模块化的服务器,能够运行在几乎全部普遍使用的计算机平台上。其属于应用服务器。Apache支持模块多,性能稳定,Apache自己是静态解析,适合静态HTML、图片等,但能够经过扩展脚本、模块等支持动态页面等。html
3.2 nginx相对于apache的优势
(1)轻量级,一样起web 服务,比apache占用更少的内存及资源
(2)抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
(3)高度模块化的设计,编写模块相对简单
(4)提供负载均衡
(5)社区活跃,各类高性能模块出品迅速前端
3.3 apache 相对于nginx 的优势
(1)apache的 rewrite 比nginx 的强大 ;
(2)支持动态页面;
(3)支持的模块多,基本涵盖全部应用;
(4)性能稳定,而nginx相对bug较多。java
3.4 二者优缺点对比
(1)Nginx 配置简洁, Apache 复杂 ;
(2)Nginx 静态处理性能比 Apache 高 3倍以上 ;
(3)Apache 对 PHP 支持比较简单,Nginx 须要配合其余后端用;
(4)Apache 的组件比 Nginx 多 ;
(5)动态请求(好比jsp、asp)由apache去作,nginx只适合静态和反向;
(6)Apache在处理动态有优点,Nginx并发性比较好,CPU内存占用低,若是rewrite频繁,那仍是Apache较适合。node
下载地址:http://nginx.org/en/download.html
直接下载 nginx-1.12.2.zip,下载后解压,解压后以下linux
有不少种方法启动nginx
(1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过
(2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车便可
3.检查nginx是否启动成功
直接在浏览器地址栏输入网址 http://localhost:80,回车,出现如下页面说明启动成功ios
若是使用cmd命令窗口启动nginx,关闭cmd窗口是不能结束nginx进程的,可以使用两种方法关闭nginx
(1)输入nginx命令 nginx -s stop(快速中止nginx) 或 nginx -s quit(完整有序的中止nginx)
(2)使用taskkill taskkill /f /t /im nginx.exenginx
下载Windows Service Wrapper,下载后内容以下(参考资料下载内容中已有安装包)
将重命名后的 myapp.exe 复制到 nginx 的安装目录(我这里是 "F:\kaifa_ruanjian\nginx-1.10.3")
在同一个nginx目录下建立一个Windows Service Wrapper的XML配置文件,名称必须与第一步重命名时使用的名称一致,好比我这里的是winsw-1.9-bin.xml
winsw-1.9-bin.xml文件内容以下:
<?xml version="1.0" encoding="UTF-8" ?> <service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>D:\NeatbeansSofts\Redis-x64-3.2.100\nginx.exe</executable> <logpath>D:\NeatbeansSofts\Redis-x64-3.2.100\</logpath> <logmode>roll</logmode> <depend></depend> <startargument>-p D:\NeatbeansSofts\Redis-x64-3.2.100</startargument> <stopargument>-p D:\NeatbeansSofts\Redis-x64-3.2.100 -s stop</stopargument> </service>
命令行下执行如下命令,以便将其安装成Windows服务。
其余命令介绍:
卸载服务:winsw-1.9-bin.exe uninstall
启动服务:winsw-1.9-bin.exe start
中止服务:winsw-1.9-bin.exe stop
请在参考资料下载内容中进行学习。
配置方法有两种,一种是root关键字、另一种是alias关键字
创建一个文件夹,命名为:ngnix_picture,并放入图片,bbb.jpg
在ngnix的配置文件nginx.conf添加如下内容:
#此时,经过浏览器访问http://127.0.0.1:7002/t.txt,则访问服务器的文件是F:/kaifa_ruanjian/ngnix_picture/t.txt server{ listen 7002; server_name 127.0.0.1; location / { root F:/kaifa_ruanjian/ngnix_picture/; } }
在浏览器中输入访问地址:http://127.0.0.1:7002/bbb.jpg,结果以下图所示:
在ngnix的配置文件nginx.conf添加如下内容:
#此时,经过浏览器访问http://127.0.0.1:7003/file/t.txt,则访问服务器的文件是F:/kaifa_ruanjian/ngnix_picture/t.txt server{ listen 7003; server_name 127.0.0.1; location /file/ { alias F:/kaifa_ruanjian/ngnix_picture/; } }
在浏览器中输入访问地址:http://127.0.0.1:7003/file/bbb.jpg,结果以下图所示:
上述两种方法都可达到目的,区别是它们对路径的解析方式不一样,alas会把指定路径看成文件路径,而root会把指定路径接到文件路径,再进行访问。
说到代理,首先咱们要明确一个概念,所谓代理就是一个表明、一个渠道;
此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色经过这个代理访问目标角色完成一些任务的过程称为代理操做过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户。
说反向代理以前,咱们先看看正向代理,正向代理也是你们最常接触的到的代理模式,咱们会从两个方面来讲关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理
在现在的网络环境下,咱们若是因为技术须要要去访问国外的某些网站,此时你会发现位于国外的某网站咱们经过浏览器是没有办法访问的,此时你们可能都会用一个操做FQ进行访问,FQ的方式主要是找到一个能够访问国外网站的代理服务器,咱们将请求发送给代理服务器,代理服务器去访问国外的网站,而后将访问到的数据传递给咱们!
上述这样的代理模式称为正向代理,正向代理最大的特色是客户端很是明确要访问的服务器地址;服务器只清楚请求来自哪一个代理服务器,而不清楚来自哪一个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
明白了什么是正向代理,咱们继续看关于反向代理的处理方式,举例如我大天朝的某宝网站,天天同时链接到网站的访问人数已经爆表,单个服务器远远不能知足人民日益增加的购买欲望了,此时就出现了一个你们耳熟能详的名词:分布式部署;也就是经过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用nginx进行反向代理实现的,而且经过封装nginx和其余的组件以后起了个高大上的名字:Tengine,有兴趣的童鞋能够访问Tengine的官网查看具体的信息:http://tengine.taobao.org/
那么反向代理具体是经过什么样的方式实现的分布式的集群操做呢,咱们先看一个示意图:
经过上述的图解你们就能够看清楚了,多个客户端给服务器发送的请求,nginx服务器接收到以后,按照必定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,可是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色
反向代理,主要用于服务器集群分布式部署的状况下,反向代理隐藏了服务器的信息!因此负载均衡就是反向代理的一个典型例子。
项目场景
(1)基于域名的虚拟主机 : 不一样的域名 相同的IP(应用:外部网站)
(2)基于端口的虚拟主机 : 不使用域名、IP来区分不一样站点的内容,而是用不一样的TCP端口号(应用:公司内部网站,外部网站的管理后台)
(3)基于IP地址的虚拟主机 : 不一样的域名 不一样的IP ( 须要加网络接口 ,应用的不普遍)
因为基于IP地址的虚拟主机须要添加网络接口 使用不普遍,因此下面只对基于域名的虚拟主机和基于端口的虚拟主机 进行介绍。
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name www.nginx01.com; location / { root html; index index.html index.htm; } } server { listen 80; server_name www.nginx02.com; location / { root /root/html; index index.html index.htm; } } }
user root root; #说明:这里的user根据 本身的nginx.conf文件所在的目录的属主属性而定 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name www.nginx01.com; location / { root html; index index.html index.htm; } } server { listen 8080; server_name www.nginx01.com; location / { root /root/html; index index.html index.htm; } } }
user root root; #说明:这里的user根据 本身的nginx.conf文件所在的目录的属主属性而定 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 10.219.24.26:80; server_name www.nginx01.com; location / { root html; index index.html index.htm; } } server { listen 10.219.24.27:80; server_name www.nginx01.com; location / { root /root/html; index index.html index.htm; } } }
找到nginx.conf文件(在安装文件conf文件夹中),配置如下内容:
#设定负载均衡的服务器列表 #upstream表示负载服务器池,定义名字为hello 的服务器池 #weigth参数表示权值,权值越高被分配到的概率越大 upstream hello { server localhost:8080 weight=2; server localhost:8090 weight=2; } #监听端口 server { listen 8899; server_name localhost; #匹配以jsp结尾的,tomcat的网页文件是以jsp结尾 location / { index index.jsp; proxy_pass http://hello; #在这里设置一个代理,和upstream的名字同样 #如下是一些反向代理的配置可删除 proxy_redirect off; #后端的Web服务器能够经过X-Forwarded-For获取用户真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; #容许客户端请求的最大单文件字节数 client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数 proxy_connect_timeout 300; #nginx跟后端服务器链接超时时间(代理链接超时) proxy_send_timeout 300; #后端服务器数据回传时间(代理发送超时) proxy_read_timeout 300; #链接成功后,后端服务器响应时间(代理接收超时) proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k如下的话,这样设置 proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传 } }
nginx访问控制的两种方法,一种是基于Basic Auth认证,另外一种是基于IP的访问控制
Basic Auth认证基于用户受权的访问控制
当客户端想要访问相应的网站或者目录,要求用户输入用户名和密码才能访问。
基于IP的访问控制
(1)deny IP/IP段 : 拒绝某个IP或IP段的客户端访问
(2)allow IP/IP段 : 容许某个IP或IP段的客户端访问
(3)规则从上往下执行,如匹配中止,再也不往下匹配
找到nginx.conf文件(在安装文件conf文件夹中),配置如下内容:
#此时,经过浏览器访问http://127.0.0.1:7003/file/t.txt,则访问服务器的文件是F:/kaifa_ruanjian/ngnix_picture/t.txt server{ listen 7003; server_name 127.0.0.1; location /file/ { alias F:/kaifa_ruanjian/ngnix_picture/; #备注:必定要注意auth_basic_user_file路径,不然会不厌其烦的出现403。 auth_basic "welcom to kevin home" ; auth_basic_user_file conf/htpasswd; } }
在conf文件夹中新建文件htpasswd
内容以下:
用户名:密码:注释
admin:1234
从新生效配置文件后,在浏览器输入http://127.0.0.1:7003/file/bbb.jpg,出现如下页面
3.1 控制方法
location / {
deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; #从上到下的顺序,相似iptables。匹配到了便跳出。如上的例子先禁止了192.16.1.1,接下来容许了3个网段,其中包含了一个ipv6,最后未匹配的IP所有禁止访问.被deny的将返回403状态码。 }
3.2 IP的访问控制局限性
基于客户端的IP,可是对于Nginx来讲,它不会管你哪一个是真正的客户端,若是咱们的访问不是客户端与服务端直接链接,而是经过了一层代理,好比它的代理能够负载均衡、CDN的这种代理实现,也就是咱们的访问不是客户端直接访问的服务端,而是经过其余的中间件访问服务端,这时候会出现一个问题,由于Nginx的access_module它是基于remote_addr这个变量来识别客户端的IP的,那么若是一个ip经过中间件访问服务端,那么Nginx认为访问的ip就是中间件的IP,那么咱们在基于IP作限制的时候,那么实际上是没有做用的。因此这样的话,准确性是不高的,因此就是利用nginx的access_module有局限性。
在nginx 的日志目录logs下,默认有如下3个文件:
(1)access.log:记录请求日志
(2)0error.log:记录错误日志,例如启动时端口被占用,请求的资源不存在等。
(3)nginx.pid:记录启动时nginx的进程id
nginx的日志配置是在conf/nginx.conf文件中
nginx默认不会对日志作分割,随着时间的积累,access.log和error.log将会愈来愈大,很是不便于咱们查看日志。
首先建立bat脚本 split_log.bat , 并保存在nginx 目录下:
@echo off rem 查看系统中正在运行的nginx进程 rem tasklist /fi "imagename eq nginx.exe" rem 备份并根据时间重命名访问日志文件 NET STOP "nginx" set "cmdstr=move C:\nginx\logs\access.log C:\nginx\logsHis\access.%date:~0,4%-%date:~5,2%-%date:~8,2%.log call %cmdstr%" rem 备份并根据时间重命名错误日志文件 set "cmdstr=move C:\nginx\logs\error.log C:\nginx\logsHis\error.%date:~0,4%-%date:~5,2%-%date:~8,2%.log call %cmdstr%" rem re-opening log files NET START "nginx"
建立计划任务
https://www.cnblogs.com/WUXIAOCHANG/p/10553949.html
证书生成完毕,ssl文件夹中一共生成以下4个文件,咱们须要使用到的是lee.crt和lee.key
修改nginx.conf文件
# HTTPS server # #modify by lee 20160907 for https -s server { listen 443 ssl; server_name www.lee.com; ssl_certificate C:/wnmp/nginx/ssl/lee.crt; ssl_certificate_key C:/wnmp/nginx/ssl/lee.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root C:/wnmp/lee; index index.html index.htm index.php; } root C:/wnmp/lee; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } #modify by lee 20160907 for https -s
重启nginx,在浏览器中,访问 https://www.lee.com。发现出现证书认证,并可以成功访问。(www.lee.com为生成证书时,Common Name输入的域名)
(执行此步骤时,须要配置好Virtual Host,而且在www.lee.com开放目录中添加了index.php默认入口访问文件。)
上面的https被红色划线是由于咱们使用的是本身生成的证书,此证书不受浏览器信任,若是想使其变为绿色,则须要向证书管理机构进行申请。
添加剧定向,自动跳转使用https,在nginx.conf中virtual host中以下代码位置添加一行代码:
listen 80;
server_name www.lee.com;
#modify by lee 20160907 for https Redirect -s rewrite ^(.*) https://$server_name$1 permanent; #modify by lee 20160907 for https Redirect -e
重启nginx,访问www.lee.com,会发现浏览器自动跳转到https://www.lee.com,并可以成功访问。至此,https访问配置成功完成。
这是一个比较完整的nginx配置文件示例,下面的nginx.conf简单的实现nginx在前端作反向代理服务器的例子,处理js、png等静态文件,jsp等动态请求转发到其它服务器tomcat,以及负载均衡的配置。
user www www;
worker_processes 2; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; events { use epoll; worker_connections 2048; } 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 65; # gzip压缩功能设置 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 6; gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; # http_proxy 设置 client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 75; proxy_send_timeout 75; proxy_read_timeout 75; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /usr/local/nginx/proxy_temp 1 2; # 设定负载均衡后台服务器列表 upstream backend { #ip_hash; server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ; server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ; } # 很重要的虚拟主机配置 server { listen 80; server_name itoatest.example.com; root /apps/oaapp; charset utf-8; access_log logs/host.access.log main; #对 / 全部作负载均衡+反向代理 location / { root /apps/oaapp; index index.jsp index.html index.htm; proxy_pass http://backend; proxy_redirect off; # 后端的Web服务器能够经过X-Forwarded-For获取用户真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; } #静态文件,nginx本身处理,不去backend请求tomcat location ~* /download/ { root /apps/oa/fs; } location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /apps/oaapp; expires 7d; } location /nginx_status { stub_status on; access_log off; allow 192.168.10.0/24; deny all; } location ~ ^/(WEB-INF)/ { deny all; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ## 其它虚拟主机,server 指令开始 }
#运行用户 user nobody; #启动进程,一般设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; #工做模式及链接数上限 events { #epoll是多路复用IO(I/O Multiplexing)中的一种方式, #仅用于linux2.6以上内核,能够大大提升nginx的性能 use epoll; #单个后台worker process进程的最大并发连接数 worker_connections 1024; # 并发总数是 worker_processes 和 worker_connections 的乘积 # 即 max_clients = worker_processes * worker_connections # 在设置了反向代理的状况下,max_clients = worker_processes * worker_connections / 4 为何 # 为何上面反向代理要除以4,应该说是一个经验值 # 根据以上条件,正常状况下的Nginx Server能够应付的最大链接数为:4 * 8000 = 32000 # worker_connections 值的设置跟物理内存大小有关 # 由于并发受IO约束,max_clients的值须小于系统能够打开的最大文件数 # 而系统能够打开的最大文件数和内存大小成正比,通常1GB内存的机器上能够打开的文件数大约是10万左右 # 咱们来看看360M内存的VPS能够打开的文件句柄数是多少: # $ cat /proc/sys/fs/file-max # 输出 34336 # 32000 < 34336,即并发链接总数小于系统能够打开的文件句柄总数,这样就在操做系统能够承受的范围以内 # 因此,worker_connections 的值需根据 worker_processes 进程数目和系统能够打开的最大文件总数进行适当地进行设置 # 使得并发总数小于操做系统能够打开的最大文件数目 # 其实质也就是根据主机的物理CPU和内存进行配置 # 固然,理论上的并发总数可能会和实际有所误差,由于主机还有其余的工做进程须要消耗系统资源。 # ulimit -SHn 65535 } http { #设定mime类型,类型由mime.type文件定义 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 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件, #对于普通应用,必须设为 on, #若是用来进行下载等应用磁盘IO重负载应用,可设置为 off, #以平衡磁盘与网络I/O处理速度,下降系统的uptime. sendfile on; #tcp_nopush on; #链接超时时间 #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; #开启gzip压缩 gzip on; gzip_disable "MSIE [1-6]."; #设定请求缓冲 client_header_buffer_size 128k; large_client_header_buffers 4 128k; #设定虚拟主机配置 server { #侦听80端口 listen 80; #定义使用 www.nginx.cn访问 server_name www.nginx.cn; #定义服务器的默认网站根目录位置 root html; #设定本虚拟主机的访问日志 access_log logs/nginx.access.log main; #默认请求 location / { #定义首页索引文件的名称 index index.php index.html index.htm; } # 定义错误提示页面 error_page 500 502 503 504 /50x.html; location = /50x.html { } #静态文件,nginx本身处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { #过时30天,静态文件不怎么更新,过时能够设大一点, #若是频繁更新,则能够设置得小一点。 expires 30d; } #PHP 脚本请求所有转发到 FastCGI处理. 使用FastCGI默认配置. location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #禁止访问 .htxxx 文件 location ~ /.ht { deny all; } } }
user www www; #指定Nginx Worker进程运行用户以及用户组 worker_processes 2; #指定了Nginx要开启的进程数,多核CPU指定和核数同样多的进程数 pid logs/nginx.pid; #指定进程id的存储文件位置 worker_rlimit_nofile 65535; #指定单进程打开文件数,需与系统设定一致 events { use epoll; #指定nginx工做模式,nginx主要的工做模式有select、poll、kqueue、epoll 其中select、poll是标准工做模式,kqueue、epoll为高效工做模式,epoll用在Linux系统中,而kqueue用在BSD系统中 worker_connections 65535;#指定单进程的最大链接数 } HTTP部分 http { include mime.types; #指定配置文件所包含的文件 default_type application/octet-stream; #指定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口 log_format main '$remote_addr - $remote_user [$time_local] "$request" '#设定日志格式 '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';; client_max_body_size 20m; #设置容许客户端请求的最大的单个文件字节数 client_header_buffer_size 16k;#指定来自客户端请求头的headerbuffer大小,若是自定义了消息头或有更大的cookie,能够在这里增长缓冲大小 large_client_header_buffers 4 32k;#指定客户端请求中较大的消息头的缓存最大数量和大小,4为个数,32k为大小,最大缓存为4个32kb sendfile on;#开启高效传输模式 tcp_nopush on; # tcp_nopush,tcp_nodelay设置on,防止网络阻塞 tcp_nodelay on; keepalive_timeout 65; #指定客户端链接保持活动的超时时间 client_header_timeout 10;#指定客户端请求头读取超时时间,若是超过这个时间,客户端尚未发送任何数据,Nginx将返回“Request time out(408)”错误 client_body_timeout 10;#指定客户端请求主体读取超时时间,若是超过这个时间���客户端尚未发送任何数据,Nginx将返回“Request time out(408)”错误 send_timeout 10;#指定响应客户端的超时时间。这个超时仅限于两个链接活动之间的时间,若是超过这个时间,客户端没有任何活动,Nginx将会关闭链接 gzip on; #开启gzip压缩,实时压缩输出数据流 gzip_min_length 1k; #设置容许压缩的页面最小字节数 gzip_buffers 4 16k; #指定内存空间来存贮压缩结果,这里指定4个单位为16k的内存来存储压缩结果,即总大小为64k gzip_http_version 1.1;#指定识别HTTP协议版本,默认是1.1 gzip_comp_level 2;#指定gzip压缩比,1 压缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗CPU资源 gzip_types text/plain application/x-javascript text/css application/xml;#指定压缩的类型,不管是否指定,“text/html”类型老是会被压缩 gzip_vary on;#该选项开启可让前端的缓存服务器缓存通过gzip压缩的页面,例如,用Varnish缓存通过Nginx压缩的数据 server_tokens off;#隐藏Nginx版本号 server { listen 8000; #指定Nginx监端口 server_name localhost;#用来指定IP或者域名 charset utf-8;#指定Nginx默认的字符集,只有utf-8支持中文字符 access_log logs/host.access.log main;#指定访问日志的名称及位置 location / { index index.html index.htm;#设定默认首页 root /tom/webapps/ROOT;#指定网页根目录 } location ~ (jsp|\?) { #指定url中包含jsp或者?的所有转发到192.168.0.10的80端口即tomcat处理 proxy_pass http://192.168.0.10:80; }
连接:https://pan.baidu.com/s/1gbzzLNJf7bvMc7fRR0aOeA
提取码:5sbd