概述
本文的架构如图
nginx
一.nginx概述
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.
1.nginx和tomcat之间的区别
- 1.他们都是web’服务器,nginx默认监听80端口,tomcat默认监听8080端口,如果两个服务器监听端口相同,则会冲突.
- 2.Nginx监听到的请求主要是做转发,可以实现跨域转发,转发给其他服务器处理请求.
- 3.Tomcat服务器主要作用是处理具体的请求,返回页面等.
2.nginx的优点
①开发语言: C语言
②占用内存小,几兆的大小
③IO 多路复用,Epoll(freebsd 上是 kqueue),并发能力强,并发达到1-3万左右
④nginx可以当做负载均衡器使用(软件级) F5(硬件负载均衡器)
3.nginx的进程模型
Nginx 服务器,正常运行过程中:
- 多进程:一个 Master 进程、多个 Worker 进程。
- Master 进程:管理 Worker 进程。对外接口:接收外部的操作(信号);对内转发:根据外部的操作的不同,通过信号管理
Worker;监控:监控 Worker 进程的运行状态,Worker 进程异常终止后,自动重启 Worker 进程。 - Worker 进程:所有 Worker 进程都是平等的。实际处理:网络请求,由 Worker 进程处理。Worker 进程数量:在
nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU
资源,增加上下文切换的损耗。
思考:
- 请求是连接到 Nginx,Master 进程负责处理和转发?
- 如何选定哪个 Worker 进程处理请求?请求的处理结果,是否还要经过 Master 进程?
二.nginx快速入门
1.nginx的下载及安装
下载
网址: http://nginx.org/
下载地址: http://nginx.org/en/download.html
安装
说明:
1.Nginx安装时不要有中文,不要放C盘.
2.安装步骤: 以管理员的身份运行Nginx.之后会看到在进程项中有2个nginx进程
占用端口:80端口
关于进程项说明:
1.主进程: 主要提供反向代理服务的.
2.守护进程: 防止主进程意外关闭.
.
2.nginx 命令
前提:命令的执行需要在nginx.exe的根目录中运行.
- nginx -s stop #关闭
- start nginx #开启
- nginx -s reload #重启
3.nginx 的配置文件
文件位置
1.conf文件说明
Ngnix的配置文件的从结构上分为:
核心模块:HTTP模块、EVENT模块、MAIL模块。
基础模块:HTTP Access模块、HTTPFastCGI模块、HTTP Proxy模块、HTTP Rewrite模块。
第三方模块:HTTP Upstream Request Hash模块、Notice模块、HTTP Access
Key模块以及根据需求自己开发的模块。
- main:用于进行nginx全局信息的配置
- events:用于nginx工作模式的配置
- http:用于代理具体的http请求的一些配置,主要是以下几个部分:
- server:用于进行服务器访问信息的配置
- location:用于进行访问路由的配置
- upstream:用于进行负载均衡的配置
- location:用于进行访问路由的配置
- server:用于进行服务器访问信息的配置
(1)main全局配置
(2)events 工作模式配置
(3)http配置
(4)server虚拟主机配置
一个http配置下经常有多个虚拟主机,也就是多个server
例如:
(5)location代理配置
location配置是在server中的,配置拦截的路劲目录,和转发路劲
说明:
- 配置拦截的路劲
- 配置转发请求你参数是否需要携带,例如原始ip等.
- 请求转发分为转发到单机上和转发到集群上,单机直接配置路劲,集群需要自定义转发策略.
(6)upstream集群转发的配置
格式:
upstream 转发名{
…
}
集群转发大致有三种策略.
- 轮询,挨个的访问
- 权重,根据不同的服务器性能,将性能好的服务器根据权重多分发一些请求.
- hash,或者其他的值hash,根据ip地址hash的结果进入不同的服务器
其他配置说明:
- down #如果在服务器中标识down属性之后,该服务器将不会再为用户提供服务
- backup #如果需要在集群中设置备用机.则需要设置backup属性,设置为备用机之后,当主机遇忙/主机宕机时生效
nginx调优
nginx调优参考文章:
https://www.cnblogs.com/cheyunhua/p/10670070.html
https://blog.csdn.net/u012869196/article/details/86714846
nginx调优主要从几个方面:
增大连接数
1.nginx进程数,建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数。
worker_processes 8;
2.为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
3.作用于event的I/O多路复用模型
use epoll;
4.收到新连接通知后接受尽可能多的连接,作用于event
multi_accept on;
2.动静分离
location ~ .*.(eot|svg|ttf|woff|jpg|jpeg|gif|png|ico|cur|gz|svgz|mp4|ogg|ogv|webm) {
#所有静态文件直接读取硬盘
root /usr/share/nginx/html;
expires 30d; #缓存30天
}
location ~ .*.(js|css)?${
#所有静态文件直接读取硬盘
root /usr/share/nginx/html;
expires 12h;
}
3.加缓存
#客户端请求主体的缓冲区大小
client_body_buffer_size 512k;
#客户端请求头部的缓冲区大小,这个可以根据系统分页大小来设置
client_header_buffer_size 4k;
client_max_body_size 512k;
large_client_header_buffers 2 8k;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
#指定在何种情况下一个失败的请求应该被发送到下一台后端服务器
proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
#设置缓存空间,存储缓存文件
proxy_cache_path /data/nginx-cache levels=1:2 keys_zone=nginx-cache:20m max_size=50g inactive=168h;
#在location中使用缓存空间,pathname是项目的目录,请自定义
location /pathname {
proxy_set_header X-Real-IP $remote_addr;
proxy_cache nginx-cache;
proxy_cache_valid 200 304 302 5d;
proxy_cache_valid any 5d;
proxy_cache_key '$host:$server_port$request_uri';
add_header X-Cache '$upstream_cache_status from $host';
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost/pathname;
}
#打开文件的缓存配置
#为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。
open_file_cache max=65535 inactive=60s;
#文件描述符一直是在缓存中打开的,如果有一个文件在inactive时间内一次没被使用,它将被移除。
open_file_cache_min_uses 1;
#指定多长时间检查一次缓存的有效信息。
open_file_cache_valid 80s;
4.连接超时
#客户端、服务端设置
server_names_hash_bucket_size 128;
server_names_hash_max_size 512;
# 长连接超时配置
keepalive_timeout 65;
client_header_timeout 15s;
client_body_timeout 15s;
send_timeout 60s;
#代理设置
#与后端服务器建立连接的超时时间。注意这个一般不能大于75秒
proxy_connect_timeout 30s;
proxy_send_timeout 120s;
#从后端服务器读取响应的超时
proxy_read_timeout 120s;
5.开启压缩
#开启gzip,减少我们发送的数据量
gzip on;
#允许压缩的最小字节数
gzip_min_length 1k;
#4个单位为16k的内存作为压缩结果流缓存
gzip_buffers 4 16k;
#设置识别HTTP协议版本,默认是1.1
gzip_http_version 1.1;
#gzip压缩比,可在1~9中设置,1压缩比最小,速度最快,9压缩比最大,速度最慢,消耗CPU
gzip_comp_level 4;
#压缩的类型
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
#给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
gzip_vary on;
#禁用IE6以下的gzip压缩,IE6的某些版本对gzip的压缩支持很不好
gzip_disable "MSIE [1-6].";
6.其他
略
最后
以上就是傲娇八宝粥为你收集整理的71.java项目--nginx的全部内容,希望文章能够帮你解决71.java项目--nginx所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复