nginx

1.Nginx简介

1.1.什么是nginx

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可。自Nginx 发布来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

2.启动、关闭

Windows下Nginx的启动、停止等命令

2.1、启动:

C:\server\nginx-1.0.2>start nginx或
C:\server\nginx-1.0.2>start nginx.exe

2.2、停止:

C:\server\nginx-1.0.2>nginx.exe -s stop或
C:\server\nginx-1.0.2>nginx.exe -s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

2.3、重新载入Nginx:

C:\server\nginx-1.0.2>nginx.exe -s reload
当配置信息修改,需要重新载入这些配置时使用此命令。

2.4、重新打开日志文件:

C:\server\nginx-1.0.2>nginx.exe -s reopen

2.5、查看Nginx版本:

C:\server\nginx-1.0.2>nginx -v

3.Nginx的配置文件详解

3.1.Nginx的主配置文件概述
3.1.1.nginx的配置文件结构

nginx.conf由多个块组成,最外面的块是main,main包含events和http,http包含多个upstream和多个server,server又包含多个location:
nginx_第1张图片
main(全局设置)、server(虚拟主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。

  1. main块设置的指令将影响其他所有设置;
  2. server块的指令主要用于指定主机和端口;
  3. upstream指令主要用于负载均衡,设置一系列的后端服务器;
  4. location块用于匹配网页位置。

4.动静分离

当用户请求js,css等静态资源时有当前nginx服务器处理, 请求php动态脚本代码时由其他的服务器处理(反向代理)

#配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。
    location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ 
    { 
    root /data/www/wugk; 
#expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
    expires      3d; 
} 
  #动态页面交给其他服务器处理 
    location ~ .*\.(php|jsp|cgi)?$ 
    { 
       #发送给其他服务器处理
    } 

5.nginx的反向代理

5.1.什么是反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连的 客户端,此时代理服务器对外就表现为一个服务器。
nginx_第2张图片

5.2明确两个概念

  1. web前端服务器: 代理服务器可以作为前端服务器处理静态资源
  2. web后端服务器: web前端服务器无法处理的动态请求发送给后台web服务器处理

5.3 特点

反向代理又称为Web服务器加速,是针对Web服务器提供加速功能的。它作为代理
Cache,但并不针对浏览器用户,而针对一台或多台特定Web服务器(这也是反向代理名
称的由来)。代理服务器可以缓存一些web的页面,降低了web服务器的访问量,所以可
以降低web服务器的负载。web服务器同时处理的请求数少了,响应时间自然就快了。同
时代理服务器也存了一些页面,可以直接返回给客户端,加速客户端浏览

5.4 反向代理的配置

当用户放到php文件时,将该请求交给apache服务器处理php文件

server {
        #侦听192.168.8.x的80端口
        listen             80;
        server_name    www.example.cn;

        #对php后缀的进行请求
        location ~ .*\.php$ {
            #定义服务器的默认网站根目录位置
            root     /root; 
            #定义首页索引文件的名称
            index index.php index.html index.htm;
            
            #请求转向apache服务器,apache服务器运行在81端口上
            proxy_pass    http://localhost:81;

            #以下是一些反向代理的配置可删除.
            proxy_redirect off;

            #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            #允许客户端请求的最大单文件字节数
            client_max_body_size 10m; 

            #缓冲区代理缓冲用户端请求的最大字节数,
            client_body_buffer_size 128k;

            #nginx跟后端服务器连接超时时间(代理连接超时)
            proxy_connect_timeout 90;

            #连接成功后,后端服务器响应时间(代理接收超时)
            proxy_read_timeout 90;

            #设置代理服务器(nginx)保存用户头信息的缓冲区大小
            proxy_buffer_size 4k;

            #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
            proxy_buffers 4 32k;

            #高负荷下缓冲大小(proxy_buffers*2)
            proxy_busy_buffers_size 64k; 

            #设定缓存文件夹大小,大于这个值,将从upstream服务器传
            proxy_temp_file_write_size 64k; 
        }
    }

6.nginx的负载均衡

6.1 什么是负载均衡

nginx_第3张图片后台服务器组成了一个服务器集群(多台服务器). 有中间服务器(nginx)接受到请求分发给不同的服务器后台. 该nginx就是一个负载均衡服务器.

6.2 负载均衡的优点

  1. 分散后台服务器的压力
  2. 自动去掉挂掉的后台服务器
  3. 缓存后台服务器响应内容

6.3 负载均衡的分配策略

nginx 的 upstream目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4)、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

6.4 负载均衡的配置

在http节点里添加:

#定义负载均衡设备的 ip及设备状态 
upstream myServer {   
server 127.0.0.1:9090 down; 
    server 127.0.0.1:8080 weight=2; 
    server 127.0.0.1:6060; 
    server 127.0.0.1:7070 backup; 
[ip_hash | fair | url_hash]
}

在需要使用负载的server节点下添加

proxy_pass http://myServer;

upstream 每个设备的状态:
down 表示单前的server暂时不参与负载 
weight  默认为1.weight越大,负载的权重就越大。 
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 
fail_timeout:max_fails 次失败后,暂停的时间。 
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

你可能感兴趣的:(java)