我是靠谱客的博主 傲娇八宝粥,最近开发中收集的这篇文章主要介绍71.java项目--nginx,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文的架构如图
在这里插入图片描述

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模块以及根据需求自己开发的模块。

  1. main:用于进行nginx全局信息的配置
  2. events:用于nginx工作模式的配置
  3. http:用于代理具体的http请求的一些配置,主要是以下几个部分:
    1. server:用于进行服务器访问信息的配置
      1. location:用于进行访问路由的配置
        1. upstream:用于进行负载均衡的配置

(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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部