Nginx

Nginx入门

1.什么是Nginx

Nginx是一个高性能的Http和反向代理的Web服务器

2.Nginx能做什么

要想了解一个东西,我们必须能了解它的作用,它是做什么的

  • 反向代理:正常来说流程是客户端请求服务器,服务器响应客户端,使用反向代理后,则是客户端请求反向代理服务器,反向代理服务器将请求转发到真正的服务器,然后将结果返回。反向代理隐藏了真实的服务器,客户端看不到真实的服务器,只能看到代理服务器

Nginx_第1张图片

  • 正向代理:相信大家应该都用过VPN吧,VPN其实就是正向代理的体现,和反向代理相似,也是客户端请求代理服务器,代理服务器请求真实服务器,只不过与反向代理的区别是正向代理隐藏的是客户端,服务器看不到真实的客服端

Nginx_第2张图片

  • 负载均衡:当我们刚开始开发一个系统的时候,我们往往的流程是这样的,客户端发送请求到服务器,服务器进行响应,这样看着是没问题,可是当后期客户端的并发量比较大时,服务器就面临着崩溃的风险,这个时候最直观的方法就是加服务器,但是我们如何把请求分发到不同的服务器呢?使用负载均衡,分摊服务器的压力。
  • 动静分离:一般来说,我们的服务器分为静态资源和动态资源,静态资源是不需要访问数据库等后台的,我们可以将静态资源部署到Nginx上,加快响应速度,减少后台服务器的压力,动态资源则部署到服务器上,客户端请求动态资源时则将请求转发到后台服务器,请求静态资源时则在静态资源目录获取资源。

Nginx_第3张图片

3.Nginx常用命令

  • nginx -s stop,快速停掉服务

  • nginx -s quit,等待当前工作线程结束后停止

  • nginx -s reload,重新加载配置文件

  • nginx -s reopen,重新打开日志文件

  • nginx -c file 使用替代配置文件而不是默认文件

  • nginx -p prefix 设置nginx路径前缀,即保存服务器文件的目录 默认值为*/usr/local/nginx*

  • nginx -t 测试配置文件:nginx 检查配置的语法是否正确,然后尝试打开配置中引用的文件

  • nginx -T 与-t相同,但另外将配置文件转储到标准输出

  • nginx -v 打印nginx 版本

  • nginx -V 打印nginx版本,编译器版本,配置参数

4.Nginx配置文件结构

#全局块
worker_processes  1;    #工作进程数
 
#events块
events {
    worker_connections  1024;   #每个工作进程支持的最大连接数       
}

#http块
http {
    #http全局块
    
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    #server块
     server {
        #server全局块
        
        listen       80;   #配置·监听的端口
        server_name  localhost;  #配置监听的地址
        #location块
        location  / {  # 用于匹配路径
            #网站根目录
            root   html;
            #默认首页文件
            index  index.html index.htm;
        }
        # 默认50xd
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

5.location匹配规则

[ = ]:要求路径完全匹配
server {
    listen       80;
    server_name localhost;
    location = /test {
       #...
    }
}
  • http:127.0.0.1/test 匹配
  • http:127.0.0.1/TEST 可能会匹配(取决于操作系统的文件系统是否大小写敏感)
  • http:127.0.0.1/test?param1=111¶m2=222 匹配
  • http:127.0.0.1/test/ 不匹配
  • http:127.0.0.1/tset 不匹配
[ ~ ]:区分大小写的正则匹配
server {
    listen       80;
    server_name localhost;
    location ~ ^/test$ {
       #...
    }
}
  • http:127.0.0.1/test 匹配

  • http:127.0.0.1/TEST 不匹配

  • http:127.0.0.1/test?param1=111¶m2=222 匹配

[ ~* ]:不区分大小写的匹配
server {
    listen       80;
    server_name localhost;
    location ~* ^/test$ {
       #...
    }
}
  • http:127.0.0.1/test 匹配
  • http:127.0.0.1/TEST 匹配(取决于操作系统的文件系统是否大小写敏感)
  • http:127.0.0.1/test?param1=111¶m2=222 匹配

6.反向代理

配置从nginx转向tomcat的页面

1.首先在tomcat下的webapps目录下创建ls目录并在ls目录下创建a.html

2.配置nginx.conf

server {
    listen       8888;
    server_name  localhost;
    location ~ ^/ls/ {
       proxy_pass  http://localhost:8080;
    }
}

Nginx_第4张图片

7.负载均衡

1.轮询(默认):每个请求按照时间顺序逐一分配到不同的服务器,如果某台服务器宕机,故障系统被自动剔除,使用户访问不受影响
 upstream mytest{
    server localhost:8080;
    server localhost:8081;
   }
server {
    listen       8888;
    server_name  localhost;
    location ~ ^/ls/ {
       proxy_pass  http://mytest;
    }
}
2.权重(Weight): 指定轮询权值,Weight权值越大,分配到的访问几率越高,主要用于后端服务器性能不均的情况下
 upstream mytest{
    server localhost:8080 weight=5;
    server localhost:8081 weight=1;
   }
server {
    listen       8888;
    server_name  localhost;
    location ~ ^/ls/ {
       proxy_pass  http://mytest;
    }
}
3.ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题
 upstream mytest{
    ip_hash;
    server localhost:8080;
    server localhost:8081;
 }
server {
    listen       8888;
    server_name  localhost;
    location ~ ^/ls/ {
       proxy_pass  http://mytest;
    }
}

8.动静分离

动静分离主要分为两种,第一种为将静态文件发布在独立的服务器上,第二种为动态和静态文件混合在一起发布,通过Nginx配置来区分
server {
    listen       8888;
    server_name  localhost;
    location ~ /data/ {      #地址(这里尽量不要用=,否则图片会404)
            root  image/; # 目录,/加到前面为绝对路径,不加为相对路径
            autoindex   on;  #展示目录下的所有内容
            expires  60;     #浏览器缓存时间
        }
}

Nginx_第5张图片

你可能感兴趣的:(nginx,服务器,运维)