Nginx

作者: 叫我小码哥 | 来源:发表于2019-07-28 19:27 被阅读0次

Nginx简述

Nginx是一个开源且高性能的,可靠的HTTP中间件,代理服务。

Nginx用途

正向代理:客户需要在客户端做正向代理配置,然后访问目的网站。例如:VPN。
反向代理:用户首选访问代理服务器,代理服务器将请求转发给真实服务器,此过程用户是无感的。
负载均衡:单个服务器解决不了,我们增加服务器的数量,然后把请求分发到各个服务器上。
动静分离:为了加快网站的解析速度,可以把动态界面和静态界面分不同的服务器解析,加快解析速度,降低原服务器的压力。

Nginx常用命令

Linux命令

./nginx -v查看nginx版本号
ps -ef | grep nginx查看nginx进程
./nginx启动nginx
./nginx -s stop关闭nginx
./nginx -s reload重新加载nginx

Windows命令

nginx -v查看nginx版本号
start nginx启动nginx
nginx -s stop快速停止或关闭nginx
nginx -s quit正常停止或关闭nginx
nginx -s reload配置文件nginx.conf修改重装载命令

nginx.config配置文件讲解

nginx配置文件主要由3部分组成:

第一部分全局块

从配置文件的头开始到events之间的部分,主要设置一些影响nginx服务器运行的配置指令,主要包括配置运行nginx服务器的用户,允许生成work process数,进程PID存放路径,日志存放路径和类型以及配置文件的引入。

worker_processes 数字越大 表示可以支持的并发越大
 worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;
第二部分events块

events模块主要负责nginx服务器与用户之间的网络连接。
例如worker_connections 1024;表示nginx支持的最大链接数是1024。

events {
    worker_connections  1024;
}
第三部分HTTP块

nginx配置中最频繁的部分。HTTP块包括HTTP全局快和Service快。
HTTP全局块为:

listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

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

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;

Service快为:

server {
        listen       80;  #表示nginx目前监听的端口号是80端口号
        server_name  localhost;  #表示主机名称

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

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

Nginx配置反向代理

案例1
当我们访问localhost:80时,界面对跳转taobao.com地址。地址栏显示的是127.0.0.1但是访问到淘宝服务器。

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            proxy_pass https://taobao.com;
            index  index.html index.htm;
        }
}

案例2
nginx服务器监听127.0.0.1地址和8000端口,当监听的地址中如果带有one就会被分配到http://127.0.0.1:8081服务上如图1所示。如果监听地址中有two就会被分配置http://127.0.0.1:8082服务上如图2所示。

server {
         listen       8000;
         listen       127.0.0.1;

        location ~/one/ {
            proxy_pass http://127.0.0.1:8081;
        }
        location ~/two/ {
            proxy_pass http://127.0.0.1:8082;
        }
    }
图1
图2

Nginx配置负载均衡

1.轮询

轮询是一种默认的策略,每个请求按照不同的顺序分配到不同的服务器上,如果服务器down掉,则自动移除。

upstream server_test{
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
    }
location / {
            proxy_pass http://server_test;
            root   html;
            index  index.html index.htm;
        }

首先配置upstream 服务名称,然后在location里面proxy_pass http://后面加上前面配置的服务名。

2.weight

weight代表权重,权重越大代表分给客户端的请求越多

upstream server_test{
        server 127.0.0.1:8081 weight=1;
        server 127.0.0.1:8082 weight=2;
    }
3.ip_hash

每个请求根据访问的ip的hash分配,每个请求可以固定的访问session共享问题问题。

upstream server_test{
        ip_hash
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
    }
3.fair

根据响应时间分配,响应事假越短优先分配。

upstream server_test{
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
        fair;
    }

Nginx动静分离

如图3所示nginx把动态的请求发送到Tomcat服务器,吧静态的请求转发到静态资源服务器。(图3是盗的)


图3

配置说明:通过不同的location指定不同的后缀实现不同的路径转发。通过expires参数可以设置浏览器的过期时间,较少对服务器的请求。

upstream dynamic_request{
    server 192.168.1.1;
} 
upstream static_request {
    server 192.169.1.2;
}
server {
    listen 80;
    server_name 127.0.0.1;
    location / {
        proxy_pass http://dynamic_request;
        include proxy_params;
    }

    location ~* \.(png|gif)$ {
        proxy_pass http://static_request;
        include proxy_params;
    }
}

相关文章

网友评论

      本文标题:Nginx

      本文链接:https://www.haomeiwen.com/subject/vpmurctx.html