• Nginx阅读笔记


    Nginx最常用的服务是提供反向代理,大家熟悉的最多的是正向代理,正向代理我们平常接触的最多,例如云梯,我们通过代理服务器作为客户端这边的中介接受请求,隐藏真实的客户,向服务器获取资源.而反向代理顾名思义就是反过来代理服务器作为服务器的中介,隐藏掉真实提供服务的服务器,这样做的目的是为了实现安全和负载均衡等一系列功能.这样客户端的请求就不会直接落到内网服务器而是通过代理u做了一层转发,在这一层就可以实现安全过滤,流控,防DDOS等一系列策略.而负载均衡指我们可以水平扩展后端真正提供服务的服务器数量,代理规则按转发请求到各个服务器,使得各个服务器的负载接近均衡.

    ubuntu下安装 

    sudo apt-get install nginx

    启动

    sudo service nginx start

    nginx默认设置了80端口转发

    nginx默认配置文件位于

    /etc/nginx/nginx.conf

    在配置文件中有一行

    include /etc/nginx/site-enabled/*;

    这一行加载了一个外部配置文件,site-enabled文件夹下只有一个default文件,我们进一步分析得

    它是sites-availablei下的一个引用,打开这个配置文件,我们可以看到里面实用的信息就几行

    在nginx中存在一个虚拟主机的概念,这就是这个server的含义,例如有google下有translate.google.com和scholar.google.com,这样话我们就可以设置两个server_name可以分别是www.translate.google.com和www.scholar.google.com,这样的话不同的url请求就会到nginx相应的配置.这里的server_name是和客户端http请求中的host行进行匹配的.

    默认配置中server_name是localhost,所以我们可以通过本地访问.

    下面两个listen分别是ipv4和ipv6下的监听端口.

    default_server的含义是如果有其它http请求的host在nginx中不存在设置的话那么就用这个sever的配置来处理.

    例如我们设置的是Localhost但是你访问127.0.0.1也会落在这个配置上.


    每个url请求都会对应一个服务,nginx进行处理转发或者是本地的一个文件路径,或者是其他服务器的一个服务路径.而这个路径是通过匹配location来进行的.我们可以将server当作对应一个域名进行配置,而location是在一个域名下对更精细的路径进行配置.location匹配/开始的所有请求,而localhost下的/xxx或者/yyy都要走下面的配置,除了这种简单粗暴的匹配,nginx也支持正则和完全相等及其他的精细匹配方式.

    tryfiles意思是nginx会按照接下来的顺序去访问文件,比如你去请求localhost/test他会去寻找/test文件,找不到再去找/test/文件,若还找不到就返回一个404.此外我们还可以在location的配置里用proxy_pass实现反向代理和负载均衡.

    其中root是指将本地的一个文件夹作为所有url请求的根路径,比如用户请求了一个localhost/test那么nginx就会去寻找/usr/share/nginx/html文件夹下的test文件返回.

    而index就是默认的访问页面了,当我们访问localhost时,他会自动按顺序寻找root文件路径下的index.html和index.htm将地一个找到的结果返回.


    location进阶配置

    上面的配置只是将用户的url映射到本地的文件,这比较适合用于静态文件的分发.比如我要将所有的请求到转移到真正提供服务的一台机器的8080端口,只要这样:

    location /FingerHire{
    proxy_pass http://123.34.56.67:8080;
    }

    这样所有对/FingerHire的请求就被反向代理到123.34.56.67去了.这样我们反向代理的功能就实现了,如果要实现负载均衡,就要用到upstream模块了

    upstream backend{

      ip_hash;

      server backend1.example.com;

      server backend2.example.com;

      server backend3.example.com;

      server backend4.example.com;

    }

    location / {

      proxy_pass http://backend;

    }

    我们在upstram中指定了一组机器,并将这个组命名为backend,这样在proxy_pass中只要将请求转移到backend这个Uupstream中我们就实现了四台机器的反向代理加负载均衡.其中iphash指明了我们均衡的方式是按照用户的ip地址进行分配.

    为了让配置生效,我们只要需要reload配置就行

    sudo service nginx reload

    # the upstream component nginx needs to connect to
    upstream django {
        server unix:/etc/nginx/django/shulianxunying/shulianxunying.sock; # for a file socket
    }
    
    # configuration of the server
    server {
        # the port your site will be served on
        listen      80;
        # the domain name it will serve for
        server_name www.shulianxunying.com; # substitute your machine's IP address or FQDN
        charset     utf-8;
    
        # max upload size
        client_max_body_size 75M;   # adjust to taste
    
        # Django media
        location /media  {
            alias /etc/nginx/django/shulianxunying/static/media;  # your Django project's media files - amend as required
        }
    
        location /static {
            alias /etc/nginx/django/shulianxunying/static; # your Django project's static files - amend as required
        }
    
        location /FingerHire{
            proxy_pass http://127.0.0.1:8080;
        }
    
        # Finally, send all non-media requests to the Django server.
        location / {
            uwsgi_pass  django;
            include     /etc/nginx/django/shulianxunying/uwsgi_params; # the uwsgi_params file you installed
        }
    }
    

    一个与django配合的nginx配置

  • 相关阅读:
    科学美国人(Scientific American)部分段落小译
    Matlab安装使用libsvm
    【转】Matlab中特殊符号的写法
    计算机视觉资源
    AdaBoost
    AdaBoost人脸检测原理
    NLP常用开源/免费工具(转)
    搜索背后的奥秘——浅谈语义主题计算
    求数组当中子数组最大和
    求二叉树中两个节点的最低父节点
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4223447.html
Copyright © 2020-2023  润新知