nginx讲解

https://blog.csdn.net/qq_42030417/article/details/83185809

https://www.cnblogs.com/ysocean/p/9392908.html#_label1

https://www.jianshu.com/p/1593954d5faf

正向代理VS反向代理

正向代理

在这里插入图片描述
eg: 大家都知道,现在国内是访问不了 Google的,那么怎么才能访问 Google呢?我们又想,美国人不是能访问 Google吗(这不废话,Google就是美国的),如果我们电脑的对外公网 IP 地址能变成美国的 IP 地址,那不就可以访问 Google了。你很聪明,VPN 就是这样产生的。我们在访问 Google 时,先连上 VPN 服务器将我们的 IP 地址变成美国的 IP 地址,然后就可以顺利的访问了。这里的 VPN 就是做正向代理的。
正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端是要进行一些正向代理的设置的。

反向代理

在这里插入图片描述

正向代理VS反向代理

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器

负载均衡

将服务器接收到的请求按照规则分发的过程

nginx支持的负载均衡调度算法方式如下:

  1. weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。

  2. ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。

  3. fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块

  4. url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包

配置文件说明

文件整体结构

在这里插入图片描述
在这里插入图片描述

从图中我们可以看出主要包含以下几大部分内容:
main:用于进行nginx全局信息的配置
events:用于nginx工作模式的配置
http:用于进行http协议信息的一些配置
server:用于进行服务器访问信息的配置
location:用于进行访问路由的配置
upstream:用于进行负载均衡的配置

全局块
# user  nobody;   # 指定Nginx Worker进程运行以及用户组。默认由nobody账户运行。
                  # 指令格式:user user [group];  

worker_processes 1; # 指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。建议指定和CPU的数量一致即可。Nginx服务器实现并发处理服务的关键。
    			     # 指令格式:worker_processes number | auto;
      			 	    # number: Nginx 进程最多可以产生的worker process 数。
      				    # auto: Nginx 进程将自动检测
      				     
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;   #定义全局错误日志文件。日志输出级别有debug,info,notice,warn,error,erit可供选.
					     			# 指定格式:error_log file  | stderr;
					                  #  file : 日志输出到某个文件file
					                  #  stderr : 日志输出到标准错误输出 (日志输出级别)。 

#pid logs/nginx.pid;  # 用来指定进程pid的存储文件位置。如果不指定,则默认置于路径 logs/nginx.pid
# worker_rlimit_nofile 65535;  # 用来绑定worker进程和CPU,Linux内核2.4 以上可用
						      # 指定进程可以打开的最多文件描述数目,理论值应该是最多打开文件数(ulimit -n )与nginx进程数相除,但是Nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
						     #  现在在Linux2.6 内核下开启文件打开数为65535,worker_rlimit_nofile 就相应应该填写65535.这是因为Nginx调度时请求到进程并不是那么均衡,所以假如填写10240,总并发量达到3-4万时就有进程超过10240了,这就会返回502。
     
Events模块
events {
   use epoll;   
   #  use是事件模块指令,用来指定Nginx的工作模式。
   #  Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll 。
   #  其中select 和poll 都是标准的工作模式,kqueue和epoll是高效的工作模式,
   #  不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选。

   worker_connections  1024;  设定Nginx的工作模式及连接数上限
}

http模块

http {
    include mime.types;  
    #  该指令主要用于将其他的Nginx配置或第三方模块的配置引用到当前的主配文件中,减少主配置文件的复杂度.
    default_type application/octet-stream;

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
    # 用于指定Nginx日志的输出日志
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log logs/access.log  main;

    sendfile on;    
    # on是表示开启高效文件传输模式,默认是关闭状态(off),将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞;
    #tcp_nopush on;

    #keepalive_timeout 0;
    keepalive_timeout 65;
	#  设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接;

    #gzip  on;  # 压缩配置
Server模块
 # another virtual host using mix of IP-, name-, and port-based configuration

 server {
    listen       8000;    # 指定虚拟主机的服务端口
    listen       somename:8080;  
    server_name  somename  alias  another.alias; # 指定IP地址或域名,多个域名之间用空格分开
    charset GB2312;  # 网页的默认编码格式
    access_log logs/xxx;  # 虚拟主机的访问日志存放路径
  }
location 模块

基本配置

location / {  
  # URL地址匹配是进行Nginx配置中最灵活的部分。 
  # location支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤
          root   html;  # 指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。
          index  index.html index.htm; #设定访问的默认首页地址
      }

反向代理配置

location / {
    proxy_pass http://localhost:8888;
    proxy_set_header X-real-ip $remote_addr;
    proxy_set_header Host $http_host;
}
upstream模块

当使用负载均衡指定proxy时

upstream name {
    ip_hash;  # 指定请求调度算法
    server 192.168.1.100:8000;  # 分发服务器的列表配置
    server 192.168.1.100:8001 down; # down:# 表示该主机暂停服务
    server 192.168.1.100:8002 max_fails=3;  # 表示失败最大次数,超过失败最大次数暂停服务
    server 192.168.1.100:8003 fail_timeout=20s; 
    server 192.168.1.100:8004 max_fails=3 fail_timeout=20s; # 表示如果请求受理失败,暂停指定的时间之后重新发起请求
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值