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

Nginx阅读笔记的更多相关文章

  1. Nginx阅读笔记(四)之root和alias

    nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应.root与alias主要区别在于nginx如何解释location后面的uri ...

  2. Nginx阅读笔记(三)之proxy_pass用法

    在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走,如果没有/,则会把匹配的路径部分也给代理走. 假设访问 ...

  3. Nginx阅读笔记(二)之location的用法

    两个配置文件 一: server { listen 80; # # 在本机所有ip上监听80,也可以写为192.168.1.202:80,这样的话,就只监听192.168.1.202上的80口 ser ...

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

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

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

    从本篇開始.将深入CI框架的内部.一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说.全局函数具有最高的载入优先权.因此大多数的框架中BootStrap ...

  6. nginx 学习笔记(2) nginx新手入门

    这篇手册简单介绍了nginx,并提供了一些可以操作的简单的工作.前提是nginx已经被安装到你的服务器上.如果没有安装,请阅读上篇:nginx 学习笔记(1) nginx安装.这篇手册主要内容:1. ...

  7. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  8. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  9. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

随机推荐

  1. c# 保存数据到txt (追加)

    StringBuilder sb = new StringBuilder(); sb.AppendLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:s ...

  2. 【记录】AutoMapper Project To not support ResolveUsing

    示例代码: public List<OrderLineDTO> GetLinesForOrder(int orderId) { Mapper.CreateMap<OrderLine, ...

  3. tomcat服务器奇异事件

    我在A电脑里面启动服务器,服务器里面之前上传了XX文件,然后在A电脑浏览器能访问到(但是修改无效),在B电脑也能访问到(修改有效果),现在我把A电脑里面的文件删除,在A电脑都能访问到但是修改不了文件, ...

  4. CentOS 6.x 一键安装PPTP VPN脚本

    环境 CentOS 6.x 32位/64位XEN/KVM/OpenVZ 步骤 依次运行下列命令 #wget http://www.hi-vps.com/shell/vpn_centos6.sh #ch ...

  5. 多线程 or 多进程 (转强力推荐)

    在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在C/S通讯中服务端并发技术 的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进 ...

  6. 【jmeter】逻辑控制器

    JMeter中的Logic Controller用于为Test Plan中的节点添加逻辑控制器. JMeter中的Logic Controller分为两类:一类用来控制Test Plan执行过程中节点 ...

  7. 跟踪对象属性值的修改, 设置断点(Break on property change)

    代码 //Break on property change (function () { var localValue; Object.defineProperty(targetObject, 'pr ...

  8. Apache Maven入门篇(转)

    [上篇] 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这个入门篇分上下两篇.本文着重动手,用 maven 来构建运行 ...

  9. es6开发环境搭建,babel 将es6转化成es5

    工欲善其事,必先利其器.所以我们第1节就是搭建一个基本的ES6开发环境.现在的Chrome浏览器已经支持ES6了,但是有些低版本的浏览器还是不支持ES6的语法,这就需要我们把ES6的语法自动的转变成E ...

  10. UVA1103-Ancient Messages(脑洞+dfs)

    Problem UVA1103-Ancient Messages Accept: 1176  Submit: 6103 Time Limit: 3000 mSec Problem Descriptio ...