• Nginx使用总结


    1. Nginx是什么

    Nginx:是一个高性能的HTTP和反向代理web服务器。

    1.1 什么是正向代理和反向代理

    正向代理:它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,某些上网工具扮演的就是典型的正向代理角色。用浏览器访问http://www.google.com时,被残忍的block,于是你可以在国外搭建一台代理服务器,让代理帮我去请求google.com,代理把请求返回的相应结构再返回给我。

    # 正向代理到baidu 服务
    location = /baidu.html {
             proxy_pass http://www.baidu.com;
    }
    
    # 反向代理至 本机的8010服务
    location /luban/ {
         proxy_pass http://127.0.0.1:8010;  
    }
    

    反向代理:隐藏了真实的服务端,当我们请求ww.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。

    正向代理是为客户端代理,反向代理是为服务端代理。



    2. Nginx配置文件的整体结构




    2.1 全局块配置【该部分配置主要影响Nginx全局】

    • 配置运行Nginx服务器用户(组)
    • worker process数
    • Nginx进程PID存放路径
    • 错误日志的存放路径
    • 配置文件的引入

    2.2 events块【该部分配置主要影响Nginx服务器与用户的网络连接】

    • 设置网络连接的序列化
    • 是否允许同时接收多个网络连接
    • 事件驱动模型的选择
    • 最大连接数的配置

    2.3 http块

    • 定义MIMI-Type
    • 自定义服务日志
    • 允许sendfile方式传输文件
    • 连接超时时间
    • 单连接请求数上限

    2.4 server块

    • 配置网络监听
    • 基于名称的虚拟主机配置
    • 基于IP的虚拟主机配置

    2.5 location块

    • location配置
    • 请求根目录配置
    • 更改location的URI
    • 网站默认首页配置



    3. Nginx核心功能

    • 反向代理
    • 负载均衡
    • 动静分离

    3.1 反向代理

    // 下面的意思是
    访问localhost,端口号9001,若路径带有hosp则访问到localhost:8201。
    server {
            listen       9001;
            server_name  localhost;
    
    	location ~ /hosp/ {           
    	    proxy_pass http://localhost:8201;
                index   index.html index.htm index.jsp;
    	}
    	location ~ /cmn/ {           
    	    proxy_pass http://localhost:8202;
    	}
    }
    
    // 关于listen    该指令用于配置网络监听。  用法如下
      listen  *:80 | *:8080         #监听所有80端口和8080端口
      listen  IP_address:port      #监听指定的地址和端口号
      listen  IP_address           #监听指定ip地址所有端口
      listen  port                  #监听该端口的所有IP连接
    
    
    // 关于server_name    该指令用于虚拟主机的配置。
    // 通常分为以下两种:
    // 1. 基于名称的虚拟主机配置
      server_name   123.com www.123.com      多个名称,中间用空格隔开。而每个名称由两段或者三段组成,每段之间用“.”隔开。
      server_name   *.123.com www.123.*      可以使用通配符“*”,但通配符只能用在由三段字符组成的首段或者尾端,或者由两端字符组成的尾端。
      server_name   ~^wwwd+.123.com$;     还可以使用正则表达式,用“~”作为正则表达式字符串的开始标记。
    
    // 2. 基于IP地址的虚拟主机配置
      server_name 192.168.1.1                语法结构和上述域名匹配一样,而且不需要考虑通配符和正则表达式的问题。
    
    
    
    // 关于location       该指令用于匹配 URL
      location [ = | ~ | ~* | ^~] uri {
    
      }
    
    // proxy_pass         该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。
      proxy_pass URL;  URL 为被代理服务器的地址,可以包含传输协议、主机名称或IP地址加端口号,URI等。
    
    // index            该指令用于设置网站的默认首页
      index  filename ...;   后面的文件名称可以有多个,中间用空格隔开。
    
    

    3.2 负载均衡

    通过上述proxy_pass 可以把请求代理至后端服务,但是为了实现更高的负载及性能, 我们的后端服务通常是多个, 这个是时候可以通过upstream 模块实现负载均衡。

    // 轮询【默认】
    // 权重【用weight来指定轮询的几率】  
    // ip哈希【确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题】
    // 最少连接数【把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果】
    // fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。 
    // url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 
    
    upstream tomcat_server{
            server 127.0.0.1:8000
            server 127.0.0.1:9000
    
    }
    server {
            listen       9001;
            server_name  localhost;
    
    	location ~ /hosp/ {           
    	    proxy_pass http://tomcat_server;
                index   index.html index.htm index.jsp;
    	}
    	location ~ /cmn/ {           
    	    proxy_pass http://tomcat_server;
    	}
    }
    
  • 相关阅读:
    百度&高德地图小区景点边界轮廓实现
    使用Hexo & Github,搭建属于自己的博客
    网页背景图固定不动,不跟随滚动条滚动
    jQuery同步Ajax带来的UI线程阻塞问题及解决方法
    Java并发编程实战(5)- 线程生命周期
    Java并发编程实战(4)- 死锁
    Java并发编程实战(3)- 互斥锁
    Java并发编程实战(2)- Java内存模型
    Java并发编程实战(1)- 并发程序的bug源头
    软件测试待解决问题
  • 原文地址:https://www.cnblogs.com/itlihao/p/14545877.html
Copyright © 2020-2023  润新知