• nginx


    Nginx是什么?
    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
    Nginx是一款轻量级的WEB服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。
    Nginx重要特性
    支持高并发:能支持几万并发连接(特别是静态小文件业务环境) 资源消耗少。
    可以做HTTP反向代理及加速缓存,即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。
    具备Squid等专业缓存软件等的缓存功能。 支持异步网络I/O事件模型epoll(linux2.6+)。

    Nginx软件的主要企业功能应用

    (1)作为Web服务软件Nginx是一个支持高性能,高并发的Web服务软件,它具有很多优秀的特性,作为Web服务器,与Apache相比,Nginx能够支持更多的并发连接访问,但占用的资源更少,效率更高,在功能上也强大了很多,几乎不逊色于Apache。
    (2)反向代理或负载均衡服务在反向代理或负载均衡服务方面,Nginx可以作为Web服务,PHP等动态服务及Memcached缓存的代理服务器,它具有类似专业反向代理软件(如Haproxy)的功能,同时也是一个优秀的邮件代理服务软件,但是Nginx的代理功能还是相对简单了些,特别是不支持TCP的代理(Nginx1.9.0版本已经开始支持TCP代理了)
    (3)前端业务数据缓存服务 在Web缓存服务方面,Nginx可通过自身的proxy_cache模块实现类Squid等专业缓存软件的功能。
    Nginx主配置文件nginx.conf
    [root@chensiqi conf]# egrep -v "#|^$" nginx.conf #去掉包含#号和空行的内容
    worker_processes  1; #worker进程的数量
    error_log  logs/error.log;  #错误日志(默认没开)
    pid        logs/nginx.pid;  #进程号(默认没开)
    events {    #事件区块开始
        worker_connections  1024;   #每个worker进程支持的最大连接数
    }           #事件区块结束
    http {      #http区块开始
        include       mime.types;   #Nginx支持的媒体类型库文件包含
        default_type  application/octet-stream; #默认的媒体类型
        sendfile        on;     #开启高效传输模式
        keepalive_timeout  65;  #连接超时。
        server {      #网站配置区域(第一个server第一个虚拟主机站点)
            listen       80;    #提供服务的端口,默认80
            server_name  www.chensiqi.org; #提供服务的域名主机名
            location / {    #第一个Location区块开始
                root   html;  #站点的根目录(相对于nginx安装路径)
                index  index.html index.htm; #默认的首页文件,多个用空格分开
            }
            error_page 500 502 503 504  /50x.html;  #出现对应的http状态码时,使用50x.html回应客户
            location = /50x.html {  #Location区块开始,访问50x.html
                root   html;     #指定对应的站点目录为html
            }
        }
        server {      #网站配置区域(第二个server第二个虚拟主机站点)
            listen       80;    #提供服务的端口,默认80
            server_name  bbs.chensiqi.org; #提供服务的域名主机名
            location / {    #服务区块
                root   html;  #相对路径(nginx安装路径)
                index  index.html index.htm;
            }
            location = /50x.html { #发生错误访问的页面
                root   html;
            }
        }
    }

    常用命令

    前提:命令的执行需要在nginx.exe的跟目录中运行.

    1.nginx -s stop   关闭

    2.start nginx      开启

    3.nginx -s reload 重启

    反向代理

    Nginx反向代理相关指令介绍

     ①、listen

    一、配置监听的IP地址

    listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [deferred]
        [accept_filter=filter] [bind] [ssl];

    二、配置监听端口

    listen port[default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] 
        [deferred] [bind] [ipv6only=on|off] [ssl];

    三、配置 UNIX Domain Socket

    listen unix:path [default_server]  [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] 
        [deferred] [bind] [ssl];

    上面的配置看似比较复杂,其实使用起来是比较简单的:

    1 listen *:80 | *:8080 #监听所有80端口和8080端口
    2 listen  IP_address:port   #监听指定的地址和端口号
    3 listen  IP_address     #监听指定ip地址所有端口
    4 listen port     #监听该端口的所有IP连接

    下面分别解释每个选项的具体含义:

      1、address:IP地址,如果是 IPV6地址,需要使用中括号[] 括起来,比如[fe80::1]等。

      2、port:端口号,如果只定义了IP地址,没有定义端口号,那么就使用80端口。

      3、path:socket文件路径,如 var/run/nginx.sock等。

      4、default_server:标识符,将此虚拟主机设置为 address:port 的默认主机。(在 nginx-0.8.21 之前使用的是 default 指令)

      5、 setfib=number:Nginx-0.8.44 中使用这个变量监听 socket 关联路由表,目前只对 FreeBSD 起作用,不常用。

      6、backlog=number:设置监听函数listen()最多允许多少网络连接同时处于挂起状态,在 FreeBSD 中默认为 -1,其他平台默认为511.

      7、rcvbuf=size:设置监听socket接收缓存区大小。

      8、sndbuf=size:设置监听socket发送缓存区大小。

      9、deferred:标识符,将accept()设置为Deferred模式。

      10、accept_filter=filter:设置监听端口对所有请求进行过滤,被过滤的内容不能被接收和处理,本指令只在 FreeBSD 和 NetBSD 5.0+ 平台下有效。filter 可以设置为 dataready 或 httpready 。

      11、bind:标识符,使用独立的bind() 处理此address:port,一般情况下,对于端口相同而IP地址不同的多个连接,Nginx 服务器将只使用一个监听指令,并使用 bind() 处理端口相同的所有连接。

      12、ssl:标识符,设置会话连接使用 SSL模式进行,此标识符和Nginx服务器提供的 HTTPS 服务有关。

    ②、server_name

      该指令用于虚拟主机的配置。通常分为以下两种:

    1、基于名称的虚拟主机配置

      语法格式如下:

    server_name   name ...;

    一、对于name 来说,可以只有一个名称,也可以有多个名称,中间用空格隔开。而每个名字由两段或者三段组成,每段之间用“.”隔开。

    server_name 123.com www.123.com

    二、可以使用通配符“*”,但通配符只能用在由三段字符组成的首段或者尾端,或者由两端字符组成的尾端。

    server_name *.123.com www.123.*

    三、还可以使用正则表达式,用“~”作为正则表达式字符串的开始标记。

    server_name ~^wwwd+.123.com$;

    该表达式“~”表示匹配正则表达式,以www开头(“^”表示开头),紧跟着一个0~9之间的数字,在紧跟“.123.co”,最后跟着“m”($表示结尾)

    以上匹配的顺序优先级如下:

    1 ①、准确匹配 server_name
    2 ②、通配符在开始时匹配 server_name 成功
    3 ③、通配符在结尾时匹配 server_name 成功
    4 ④、正则表达式匹配 server_name 成功

    2、基于 IP 地址的虚拟主机配置

    语法结构和基于域名匹配一样,而且不需要考虑通配符和正则表达式的问题。
    server_name 192.168.1.1

    ③、location

      该指令用于匹配 URL。

      语法如下:

    location [ = | ~ | ~* | ^~ ] uri {
    1. root:
    2. proxy_pass:
     }

      或者   

    location / { # 只有一个/后面没有路径,表示访问tomcat首页
    1. root:
    2. proxy_pass:
     }

           1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

      2、~:用于表示 uri 包含正则表达式,并且区分大小写。

      3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。

      4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。

      

    ④、root

    该指令用于设置被代理文件的地址

    语法结构如下:

    root URL;

      URL 为被代理服务器的地址,可以包含传输协议、主机名称或IP地址加端口号,URI等。

    ⑤、proxy_pass

      该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。

      语法结构如下:

    proxy_pass URL;

      URL 为被代理服务器的地址,可以包含传输协议、主机名称或IP地址加端口号,URI等。

    proxy_pass  http://www.123.com/uri;

    、index

      该指令用于设置网站的默认首页。

      语法为:

    index  filename ...;

      后面的文件名称可以有多个,中间用空格隔开。

    index  index.html index.jsp;

      通常该指令有两个作用:第一个是用户在请求访问网站时,请求地址可以不写首页名称;第二个是可以对一个请求,根据请求内容而设置不同的首页。

    负载均衡

     1)轮询:按照配置文件的顺序,依次访问服务器.
    server{
             listen 80;
             server_name xxx;
             location /{
             #    proxy_pass http://localhost:8080;
                    proxy_pass http://xxx
          }
         
        }
            #定义Tomcat集群
        upstream  xxx{
             server localhost:8081;
             server localhost:8082 ;
             server localhost:8083;
             
            }

     2)权重:为了让性能更好的服务器更多的承担访问压力.所以采用权重策略

    server{
             listen 80;
             server_name xxx;
             location /{
             #    proxy_pass http://localhost:8080;
                    proxy_pass http://xxx
          }
         
        }
            #定义Tomcat集群
        upstream  xxx{
             server localhost:8081 weight=6;
             server localhost:8082 weight=3;
             server localhost:8083 weight=2;
             
            }

     Nginx其它知识

    1)down 属性 :如果在服务器中标识down属性之后,该服务器将不会再为用户提供服务

    2)backup 属性:

    如果需要在集群中设置备用机.则需要设置backup属性。设置为备用机之后,当主机遇忙/主机宕机时生效

      Nginsx负载均衡策略:当按照配置文件中指定的负载均衡方式进行访问时,如果后台服务器有宕机的显现,则在超时时间过后,会访问全新的服务器.保证用户访问正确.

    Nginx 实现tomcat高可用配置

    属性说明:

    max_fails=1           定义最大失败次数

    fail_timeout=60s     设定失败的时间周期.

    当nginx访问后台服务器时,如果发现后台服务器连接不通.当失败次数达到了设定的最大次数时,则开启高可用的策略.规定用户在时间周期之内,不会再次访问故障机.

    #搭建后台服务器.
        server {
            listen 80;
            server_name manage.jt.com;
    
            location / {
                #配置代理路径
                #proxy_pass http://localhost:8081;
                proxy_pass http://jtxxx;
                proxy_connect_timeout       2;
                proxy_read_timeout          2; 
                proxy_send_timeout          2; 
            }
        }
    
        #定义tomcat集群 1.轮循策略 2.权重策略 3.iphash策略
        upstream jtWindows {
            #ip_hash;
            server localhost:8081 weight=6  max_fails=1 fail_timeout=60s down;
            server localhost:8082 weight=3 max_fails=1 fail_timeout=60s;
            server localhost:8083 weight=1 max_fails=1 fail_timeout=60s backup;
        }

       

  • 相关阅读:
    OsgOSG读取Tif格式的高程数据(Qt5.14.2+osgEart3.6.5+win10)No13ReadtifFile
    QtQPainter实现图片的绘图、平移、缩放、旋转、扭曲
    Q tQGraphicsView实现图片放大、缩小、鼠标拖动、以鼠标点放大缩小
    小孩名字
    七种方案!探讨Redis分布式锁的正确使用姿势 【转】
    AopContext.currentProxy()事务的传播性
    EF linq (whole word )查询
    JS split 靠正则来分割使结果中包含分隔块
    smarty foreach 实现自动生成多行多列table
    EasyUi 中 js控制 easyuilinkbutton 按钮 是否可用
  • 原文地址:https://www.cnblogs.com/ming-long/p/11796498.html
Copyright © 2020-2023  润新知