9.nginx

官方网站:https://nginx.org/en/download.html

简介

轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器。特点是占有内存少,并发处理能力高

代理服务器

客户机和主机的中间层,接受客户机请求,再发给主机,接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。

  • 提高访问速度,数据可缓存再代理服务器中
  • 防火墙作用,代理服务器上设限,过滤某些不安全信息
  • 通过代理服务器访问不能访问的目标站点,如FQ

正向代理:架设在客户机与目标主机之间,只用于代理内部网络对 Internet 的连接请求,客户机必须指定代理服务器,并将本来要直接发送到 Web 服务器上的 Http 请求发送到代理服务器中。

反向代理:架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器

负载均衡:当请求过多的时候我们可能需要多个服务器协同工作,请求到达代理服务器,代理服务器可以根据一些算法帮我们分发请求到各个服务器,如:轮询、权重、hash等负载均衡算法

启动nginx

start nginx  #启动
nginx -s stop #停止
taskkill /f /t /im nginx.exe #停止所有nginx

配置文件

nginx.conf

nginx的配置文件是nginx.conf 几乎所有的功能都可以通过修改配置文件完成,所以学nginx就是学配置文件规则

nginx配置文件语法规则:

  1. nginx配置文件由指令与指令块构成
  2. 每条指令以 ;结尾 ,指令与参数之间以空格隔开
  3. 一个{}符号代码一个指令块
  4. 是由 # 注释

全局块

# 配置哪个用户可以运行work进程,nobody 指所有用户,也是默认情况
# user root 代表只有root用户才能启动nginx (linux下的用户)
user body

# 配置worker进程的数目,通常设置为服务器cpu数量或者2倍
worker_process 1

# 配置进程pid 文件
#pid        logs/nginx.pid;

events 块

events {
# 配置每个work 进程(子进程)的连接上限
# nginx支持总连接数 worker_processes *  worker_connections
# 注意 worker_connections 最大数65535
    worker_connections  1024;
}

http 块

http块包含多个server块,每个server块配置的都是一个虚拟主机,而一个server块中又可以包含多个location块,每个location块都是一个虚拟主机中的一个资源路径,在server块中以外的内容,都是server的公共基础配置

http {	
	# include 用于引入mime.types 文件,nginx 会在nginx.conf 所在路径找到该文件
	# 配置虚拟主机支持的数据类型,在mime.types文件中描述了很多数据类型
    include       mime.types;
    # 如果虚拟注解不能识别的数据类型,则直接使用二进制流传输
    default_type  application/octet-stream;
	# 开启零拷贝,通俗讲就是开启高效文件传输模式
    sendfile        on;
	
	# http 有一个keeplive 模式,处理完一个连接,等待的时间
	# nginx 使用keepalive_timeout 来指定,nginx默认是75秒,有些浏览器最多只能保持60秒,
	# 设置为0 表示禁止keepalive连接
    keepalive_timeout  65;
    
    
    server {
        listen       80;
        server_name  localhost;
		
		# “/” 表示通用匹配,当请求匹配其他location时,就会匹配到该location
		location / {
			# 用于转换请求路径中的 “/” 为 html
		 	 root   html; 
		 	 # 当“/” 后面没有写资源名的时候,就寻找index.html或者index.htm
		 	 # index 这个配置,只能用于“/” 这个通用路径
              index  index.html index.htm;
		}
   
        error_page   500 502 503 504  /50x.html;
        
        # “=” 精确匹配
        location = /50x.html {
            root   html;
        }
    }
 }

动静分离

指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。我们可以静态html页面,css样式,js文件,以及图片文件这些静态放Nginx服务器中,然后把动态请求显示的文件放类似Tomcat这样的容器服务器;这样方便维护,也可以提高系统性能;

image

我们通过Nginx可以分发请求,实现动态请求转发到Tomcat,静态请求转发到Nginx服务器,来实现动静分离;

	#前端vue项目部署在nginx
	server {
        listen       8888;
        server_name  localhost:8888;

        location / {
            root   dist;
            index  index.html index.htm;
        }
    }

反向代理

	# 配置代理服务器
    server {
        listen       9999;
        location / {
			proxy_pass http://bookstore/;
        }
    }
	upstream bookstore {
		server 127.0.0.1:8080;
		server 127.0.0.1:8081;
	}

负载均衡

轮询(默认)

每个请求轮流分配到不同的后端服务器,如果后端服务器挂掉,则自动被剔除;

参考实例:

upstream www.wang.com{
   server 172.17.0.2:8080 ;
   server 172.17.0.3:9090 ;
}

weight权重

根据weight权重,请求会根据权重比例分发给不同后端服务器,weight权重越高,分配的比例越大;

实际分配,根据服务器硬件配置高低,来具体分配weight权重,硬件配置高的,weight就配置高点;

参考实例:

upstream www.wang.com{
     server 172.17.0.2:8080 weight=5;
     server 172.17.0.3:9090 weight=10;
  }

ip_hash

ip_hash策略是根据用户客户端的IP的hash值来分配具体服务器,这样每个访问客户端都会固定访问某一个服务器,这样可以解决session丢失问题,很多网站都采用这种策略来搞负载均衡,主要考虑到session问题;

参考配置:

upstream www.wang.com{
    ip_hash;
    server 172.17.0.2:8080 ;
    server 172.17.0.3:9090 ;
}

least_conn最少连接

web请求会被分发到连接数最少的服务器上;

参考实例:

 upstream www.wang.com{
     least_conn;
     server 172.17.0.2:8080 ;
     server 172.17.0.3:9090 ;
}
posted @ 2025-05-29 15:03  icui4cu  阅读(15)  评论(0)    收藏  举报