• nginx


    nginx

    简介

    ​ nginx是一高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

    ​ nginx专为性能优化而开发,性能是最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。

    反向代理服务器

    作用

    请求转发(反向代理)

    正向代理

    ​ 可以举个形象的例子来说明:有一天,A君看到C君有巧克力(资源),然后A君就想吃C君的巧克力。可是怎么办,A君和C君不熟吖,不能直接向C君要巧克力吃(访问受限)。这时A君就很苦恼,要怎样做才能吃到C君的巧克力呢?于是A君想啊想啊终于想到了一个办法,就是找和C君关系好的B君(代理),找他去和C君要巧克力,然后再从B君那里拿到巧克力吃。这样,A君就吃到C君的巧克力了,即使C君可能永远不会知道A君吃了TA的巧克力。

    image-20201025220249933

    反向代理

    ​ 同样举个例子来说明:有一天,A君想吃巧克力了,就打电话给B君,B君也没有巧克力,可是却不告诉A君,而是悄悄去向C君要了巧克力,然后给A君送了过去。A君只会以为巧克力是B君的,永远不知道C君的存在。实际上,A君只要知道B君能给到TA巧克力就足够了,至于巧克力是怎么来的,其实一点都不重要。

    负载均衡

    后面的话,做负载均衡用网关,比较简单,不用nginx

    image-20201025231420881

    动静分离

    ​ 比较常用的一种方法就是:把静态文件独立放在一个服务器上,从而提高我们的访问效率。

    ​ 比如在tomcat中放java代码,专门找一个服务器放静态资源,当访问的是java代码就去tomcat中,当访问的是静态资源就去另外一个服务器 。

    image-20201026123825682

    安装和使用

    在windows下安装nginx

    下载链接,下载稳定版windows的nginx,然后解压,在cmd运行

    D:Environment>cd /d D:Environment
    ginx-1.18.0
    -- 开启
    D:Environment
    ginx-1.18.0>nginx.exe
    
    效果:光标在闪
    
    -- 关闭
    在另一个cmd中窗口输入,不建议直接关运行的窗口,会关不干净
    D:Environment
    ginx-1.18.0>nginx.exe -s stop
    

    linux下可以使用宝塔面板直接安装,但是有一个问题:面板不支持apache和nginx共存

    1.一键安装依赖包

    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
    

    2.创建nginx文件夹并下载解压安装包

    //进入local文件夹
    cd /usr/local
    //创建nginx文件夹
    mkdir nginx
    //进入nginx文件夹
    cd nginx
    //下载
    wget http://nginx.org/download/nginx-1.13.7.tar.gz
    //解压
    tar zxvf nginx-1.13.7.tar.gz
    
    1. 安装nginx
    //进入nginx目录
    cd /usr/local/nginx/nginx-1.13.7
    //执行命令
    ./configure
    //执行make命令
    make
    //执行make install命令
    make install
    
    1. 启动nginx
    //进入sbin文件夹
    cd /usr/local/nginx/sbin/
    //启动
    ./nginx
    //启动后可在浏览器输入ip地址查看是否成功
    

    常用命令

    进入安装目录中,sbin
    cd /usr/local/nginx/sbin
    //启动
    ./nginx 
    //关闭
    ./nginx -s stop 
    ps -ef | grep nginx
    

    配置文件

    位置

    cd /www/server/nginx/conf
    

    image-20201026073108888

    组成

    第一部分:全局块

    ​ 从配置文件开始到events之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令。

    user  www www;
    worker_processes auto;
    error_log  /www/wwwlogs/nginx_error.log  crit;
    pid        /www/server/nginx/logs/nginx.pid;
    worker_rlimit_nofile 51200;
    

    比如worker_processes 1,值越大,可以支持并发处理量就越多

    第二部分:events块

    ​ 主要是影响nginx服务器与用户的网络连接

    events
        {
            use epoll;
            worker_connections 51200;
            multi_accept on;
        }
    

    比如worker_connections 支持最大的连接数

    第三部分:http块

    nginx中配置最频繁的部分,包括http块和server块

    http
        {
            include       mime.types;
    		#include luawaf.conf;
    		....
    	}
    server
    	{
    		listen 888;
            server_name phpmyadmin;
            index index.html index.htm index.php;
            ...
    	}
    

    配置实例

    以linux中的nginx为例子

    反向代理1

    1、实现效果

    (1)打开浏览器,在浏览器地址栏中输入地址 www.123.com 跳转到linux系统主页中

    2、准备工作

    (1)在linux系统安装tomcat(要用jdk,java -version ,使用默认端口8080

    注意:需要在服务器防火墙和阿里云中开放端口

    cd /usr/local
    mkdir tomcat
    //安装tomcat
    wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-9/v9.0.39/bin/apache-tomcat-9.0.39.tar.gz
    cd tomcat
    //解压
    tar zxvf apache-tomcat-9.0.39.tar.gz
    //启动
    cd bin
    ./startup.sh
    //通过查看日志看是否安装成功或者直接在浏览器中输入公网:8080
    cd ..
    cd logs/
    ls
    tail -f catalina.out
    

    3、访问过程分析

    image-20201026085912416

    4、具体配置

    第一步 在windows系统的hosts文件进行域名和ip对应关系的配置,文件中加一行

    192.168.17.129 www.123.com
    

    测试一下

    在浏览器中直接输入www.123.com是不行的,你要带一下端口号

    image-20201026090544904

    image-20201026090620404

    第二步 在nginx进行请求转发的配置(反向代理配置)

    server {
    listen       80;
    server_name  192.168.17.129; //修改了
    #charset koi8-r;
    
    #access_log  logs/host.access.log  main;
    
    location / {
    root   html;
    proxy_pass http://127.0.0.1:8080;//修改了,代理转发
    index  index.html index.htm;
    }
    

    第三步:重启nginx,在网页输入www.123.com测试

    反向代理2

    1、实现效果

    使用nginx反向代理,根据访问的路径跳转到不同的端口服务中

    nginx监听端口为9001

    访问 http://192.168.17.129:9001/edu/ 直接跳转到127.0.0.1:8080

    访问 http://192.168.17.129:9001/vod/ 直接跳转到127.0.0.1:8081

    2、准备工作

    (1)准备两个tomcat服务器,一个8080端口,一个8081端口

    就需要到其中一个tomcatconf/server.xml修改端口,避免端口冲突,要改3个地方不是一个

    tomcat修改端口

    (2)在webapp中创建两个文件夹和测试页面

    3、具体配置

    找到nginx的配置文件,配置

    location中的~表示是url中包含正则表达式,并且区分大小写

     server {
            listen       9001;
            server_name  8.129.36.122;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location ~ /edu/ {
                proxy_pass http://127.0.0.1:8080;
            }
            location ~ /vod/ {
                proxy_pass http://127.0.0.1:8081;
            }
    }
    

    负载均衡

    例子

    1、实现效果

    浏览器地址输入地址http://192.168.17.129/edu/a.html,负载均衡效果,平均8080和8081端口中

    2、准备工作

    (1)准备两台tomcat服务器,一台8080,一台8081

    (2)在两台tomcat里面webapps目录中,创建一个edu文件夹,放a.html,用于测试

    3、具体配置

    (一)首先准备两个同时启动的Tomcat

    (二)nginx.conf中进行配置

    http{
    	...
        upstream myserver{
            server 192.168.17.129:8080;
            server 192.168.17.129:8081;
        }
        ...
        server{
        	listen       9001;
            server_name  8.129.36.122;
        	...
        	location / {
        	 	
        		...
        		proxy_pass http://myserver;
        	}
        }
    }
    

    分配服务器策略

    第一种 轮询(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动删除

    第二种 weight

    weight代表权重,默认是1,权重越高被分配的客户端越多。

    upstream myserver{
         server 192.168.17.129:8080 weight=5;
         server 192.168.17.129:8081 weight=10;
    }
    

    第三种方式 ip_hash

    每一个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session共享问题

    upstream myserver{
    		ip_hash;
            server 192.168.17.129:8080;
            server 192.168.17.129:8081;
    }
    

    第四种方式 fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配

    upstream myserver{
            server 192.168.17.129:8080;
            server 192.168.17.129:8081;
            fair;
    }
    
  • 相关阅读:
    .NET互操作技术杂谈
    VS2008 Remote Debug HOW TO
    Entity Framework一对多关系或一对一关系删除子对象的方法
    Associations in EF Code First: Part 1 – Introduction and Basic Concepts
    如何管理Entity Framework中得事务
    在asp.net mvc3中编译视图文件
    entity framework中对关系使用默认规则与配置
    使用Entity Framework时动态生成lamda表达式
    asp.net mvc 身份验证中返回绝对路径的ReturnUrl
    Entity Framework 事务处理SaveChanges(false)
  • 原文地址:https://www.cnblogs.com/10134dz/p/13878021.html
Copyright © 2020-2023  润新知