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配置

时间: 2024-10-28 03:07:43

Nginx阅读笔记的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

《构建之法阅读笔记02》

这次主要对<构建之法>的第四章“两人合作”作一次阅读笔记. 首先是代码规范问题. 我过去对于代码规范问题并没有做到注意.在编程中,许多变量和函数的命名都非常的简单而没有实际的意义.而且编程时不注意对齐缩进.很多时候也不加注释,导致对这些简单的变量名称不熟悉. 这样做会使得很多人读代码费劲,甚至是自己都要花时间再次阅读懂自己的代码.而且很多没必要的注释也会使得注释失去意义.当自己再次在原基础上编程时,可能要重新编程等问题. 因此,通过阅读“代码规范”,我找到一些解决方法.代码的风格要简明.易读.

《代码阅读方法与实践》阅读笔记之二

时间过得真快,一转眼,10天就过去了,感觉上次写阅读笔记的场景仿佛还历历在目.<代码阅读方法与实践>这本书真的很难写笔记,本来我看这本书的名字还以为书里大概写的都是些代码阅读的简易方法,心想着这就好写笔记了,没想到竟然好多都是我们之前学过的东西,这倒让我有点无从下手了.大概像我们这些还没有太多经历的大学生,总是习惯于尽量避免自己的工作量,总是试图找到一些完成事情的捷径吧.总之,尽管我不想承认,但我自己心里很清楚,我就是这种人.下面开始言归正传,说说接下来的几章内容归纳. 这本书在前面已经分析了

《大道至简》阅读笔记1

<大道至简>阅读笔记1 不知不觉间看完了第一章,从这个章节里我看到了一些我们都明白可是却自己很难做到的道理. 书中从愚公移山的故事和编程相结合给出了编程的精义就是顺序.分支.循环,这些都是我们所熟悉的,也是老师在教学中耳提面命的,可是我们又有几个人能做到呢. 我们总是在找着各种各样的学不好学不会理由,“它太难了”,“我太笨了”,认真的想一想难道真的是它太难了或者是自己太笨了么?不,答案是否定的,追根究底是懒惰,是没能坚持.从根本上来说,不存在会不会写程序的问题,除了先天智障和后天懒惰者,这要你

构建之法阅读笔记05

2017.5.20 今天阅读的是<构建之法>第8章需求分析的阅读笔记,我们如果要开始做一个软件,最先要进行的就是需求分析,我们应该充分的了解我们这个软件是否具有前景,我们为用户提供的服务是不是用户所需要的,这一章详细的叙述了如何进行需求分析. 首先是获取和引导需求,我们应该找到软件的利益相关者,了解挖掘他们对软件的需求,引导他们表达出真实的需求.然后分析和定义需求,对各个方面的需求进行规整,定义需求内涵,从各个角度将需求量化,然后估计实现这些需求所需要的时间和资源,确定各个需求的优先级.紧接着

《构建之法》阅读笔记(2)

<构件之法>阅读笔记2 看了前面两章,我感觉我现阶段距离一个程序员还很远,软件工程师更是遥不可及.在学校的我学习了很多,如c++,数据结构,面向对象--学的多而不精,纵观现在我就是一个盲目学习的学生,上课时认真听了课后却没有花更多的时间去研究,遇到不懂的容易掉价死胡同,总是花很多时间闷闷思考,不到最后都没有去请教同学,去百度.看着其他很厉害的同学,自己就只能在一旁羡慕嫉妒恨.那现在在怎么样才能将自己对编程的兴趣提高,加强自己的编程思想?提高自己的价值?能够尽早地迈进程序员.软件工程师的行列之中

01软件构架实践阅读笔记之一

软件构架实践是我们下学期要学习的一本书,所以我想将这本书作为我阅读笔记的一本书. 在这本念书的第一章是总序,在其中提到: 1.所谓"正确的"就是在指功能.性能和成本几个方面都能满足用户要求且无缺陷: 2.所谓"无缺陷"就是在指编码后对软件系统进行彻底的穷举测试修复了所有的缺陷,保证所编写的代码本身不存在缺陷: 但是我们知道编写一个软件,并不可能很好的达到这种的效果,所以应该做到作者提到的"创造.应用.和推广"战略.但是我存在这样的问题: 1.创造

《构建之法》阅读笔记(1)

<构建之法>第一章阅读笔记 大马哈鱼洄游模型 软件工程按照经典的瀑布模型 1. 需求分析 2. 设计阶段 3. 实现阶段 4. 稳定阶段 5. 发布阶段 6. 维护阶段 事实上在现实世界中,软件工程师的职业发展与瀑布流程刚好相反 毕业进入公司(或者实习生),开始学习并维护一些已有的软件(维护阶段),主要由自己的师傅(Mentor)带领 能够在项目中改一些 Bug,然后发现发布小规模的更新版本(稳定/发布阶段),联系重构,开始和其他同事打交道 有机会负责重写一个较小的模块,没有多少文档,自己要写

掌握需求过程阅读笔记01

掌握需求过程 第一章什么是需求 阅读笔记 我们为什么要进行需求呢? 这样是为了使效率更高,并且减少错误步骤所不必付出的代价. 在我们构造产品之前就要知道客户的需求是什么,大多数的组织都是通过系统分析来进行的,但是需求过程与系统分析并不是一回事,虽然他们之间有联系,但并不完全相同.除了系统分析以外,需求也是很有必要的.他可以对你的分析师生涯有更进一步的促进.当我们接触到一个新的产品时,业务事件和使用情况逐渐清晰了起来,系统分析可以对产品进行更清楚的建模,并为需求过程提供有价值的反馈.对需求的了解增