美文网首页
记录Nginx学习

记录Nginx学习

作者: ccccaixiaohao | 来源:发表于2019-10-28 18:04 被阅读0次

    由于公司的服务器是windows环境,所以学习nginx的过程也是在windows中进行。

    1.下载安装Nginx

    安装成功后有欢迎页
    
    image.png

    2.Nginx的配置文件

    nginx.conf文件的全部内容:
    #user  nobody;  
     
    #开启进程数 <=CPU数   
    worker_processes  1;  
    #错误日志保存位置  
    #error_log  logs/error.log;  
    #error_log  logs/error.log  notice;  
    #error_log  logs/error.log  info;  
    #进程号保存文件  
    #pid        logs/nginx.pid;  
    #每个进程最大连接数(最大连接=连接数x进程数)每个worker允许同时产生多少个链接,默认1024  
    events {  
        worker_connections  1024;  
    }  
    http {  
        #文件扩展名与文件类型映射表  
        include       mime.types;  
        #默认文件类型  
        default_type  application/octet-stream;  
        #日志文件输出格式 这个位置相于全局设置  
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
        #                  '$status $body_bytes_sent "$http_referer" '  
        #                  '"$http_user_agent" "$http_x_forwarded_for"';  
        #请求日志保存位置  
        #access_log  logs/access.log  main;  
        #打开发送文件  
        sendfile        on;  
        #tcp_nopush     on;  
        #keepalive_timeout  0;  
        #连接超时时间  
        keepalive_timeout  65;  
        #打开gzip压缩  
        #gzip  on;  
        server {  
            #监听端口,默认是80端口  
            listen       80;  
            #监听域名  
            server_name  localhost;  
            #charset koi8-r;  
            #nginx访问日志放在logs/host.access.log下,并且使用main格式(还可以自定义格式)  
            #access_log  logs/host.access.log  main;  
            #如果没有location更明确的匹配访问路径的话,访问请求都会被该location处理。  
            location / {  
                #root指定nginx的根目录为/usr/local/nginx/html  
                root   html;  
                #默认访问文件,欢迎页先去html目录下找index.html,如果找不到再去找index.htm  
                index  index.html index.htm;  
            }  
            #error_page  404              /404.html;  
            # redirect server error pages to the static page /50x.html  
            #  
            #错误页面及其返回地址,错误码为500、502、503、504都会返回50.html错误页面。  
            error_page   500 502 503 504  /50x.html;  
            #location后面是"="的话,说明是精确匹配  
            location = /50x.html {  
                root   html;  
            }  
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
            #  
            #location ~ \.php$ {  
            #    proxy_pass   http://127.0.0.1;  
            #}  
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
            #  
            #location ~ \.php$ {  
            #    root           html;  
            #    fastcgi_pass   127.0.0.1:9000;  
            #    fastcgi_index  index.php;  
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
            #    include        fastcgi_params;  
            #}  
            # deny access to .htaccess files, if Apache's document root  
            # concurs with nginx's one  
            #  
            #location ~ /\.ht {  
            #    deny  all;  
            #}  
        }  
        # another virtual host using mix of IP-, name-, and port-based configuration  
        #  
        #server {  
        #    listen       8000;  
        #    listen       somename:8080;  
        #    server_name  somename  alias  another.alias;  
        #    location / {  
        #        root   html;  
        #        index  index.html index.htm;  
        #    }  
        #}  
        # HTTPS server  
        #  
        #server {  
        #    listen       443 ssl;  
        #    server_name  localhost;  
        #    ssl_certificate      cert.pem;  
        #    ssl_certificate_key  cert.key;  
        #    ssl_session_cache    shared:SSL:1m;  
        #    ssl_session_timeout  5m;  
        #    ssl_ciphers  HIGH:!aNULL:!MD5;  
        #    ssl_prefer_server_ciphers  on;  
        #    location / {  
        #        root   html;  
        #        index  index.html index.htm;  
        #    }  
        #}  
    }  
    

    3.Nginx的主要应用

    a.静态网站
    b.负载均衡
    c.静态代理
    d.动静分离
    e.虚拟主机

    a.静态网站

    1.准备一个html


    image.png

    2.配置location


    image.png
    这里匹配的是/,在url输入127.0.0.1:8001就会访问到index.html
    image.png

    若写成test,即匹配roor/test,即c:/nginxTest/test

    b.负载均衡

    举例:
    1.准备两个后台,我这边为9005和9006


    image.png

    2.在nginx配置


    image.png
    3.测试页面
    image.png
    image.png

    其他方式:
    1、轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    upstream backserver {
    server 192.168.0.14;
    server 192.168.0.15;
    }

    2、指定权重
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    upstream backserver {
    server 192.168.0.14 weight=8;
    server 192.168.0.15 weight=10;
    }

    3、IP绑定 ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
    }

    4、fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    upstream backserver {
    server server1;
    server server2;
    fair;
    }

    5、url_hash(第三方)
    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
    upstream backserver {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
    }

    c.静态代理

    使用nginx来访问静态资源,可以加快资源加载速度和效率。
    root的处理结果是:root路径+location路径
    alias的处理结果是:使用alias路径替换location路径
    1.准备一张图片


    image.png

    2.在nginx配置

    server {
            listen 8005;
            server_name test1;
            
            location / {
                 root   E:/nginxTest;
                 index  index.html;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header Host $http_host;
                 proxy_set_header X-NginX-Proxy true;
                 proxy_redirect off;
            }
            
            location /img/ {
                alias E:/nginxTest/img/;
                expires 30d;
            }
            
        }
    

    3.测试页面


    image.png

    d.动静分离

    1.准备前端页面,且写好请求的ajax

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <script src="js/jquery-3.0.0.js"></script>
    <script>
        $(function () {
    
            $("#getInfo").on("click",function () {
                $.ajax({
                    url: "/main/getHello",
                    type: "get",
                    contentType: "application/json",
                    dataType: "json",
                    success: function (res) {
                        console.log("???")
                        $("#test").html(res)
                    }
                })
            })
    
    
        })
    </script>
    <body>
        <button id="getInfo">从后台获取</button>
        <p id="test">test</p>
    </body>
    </html>
    
    image.png

    2.写好后台,我后台端口为9005

    @Controller
    @RequestMapping("/main")
    public class MainController {
        
        @RequestMapping(value="/getHello",method=RequestMethod.GET)
        @ResponseBody
        public String getHello() {
            System.out.println("getHello");
            return "this is from 9005";
        }
    

    3.在nginx配置文件中,配置前端页面位置并将ajax的请求转发到9005


    image.png

    4.页面测试


    image.png

    e.虚拟主机

    image.png

    基于不同端口的演示:
    1.nginx的配置


    image.png

    2.测试页


    image.png
    image.png

    相关文章

      网友评论

          本文标题:记录Nginx学习

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