【个人笔记】跟着官方文档学nginx——Beginner’s Guide

前言

安装和nginx简介,我是看的视频,由于不懂make,make install等编译命令,所以,我就先讲了,非常推荐大家先去看看视频说nginx是什么,能做什么,记下来,再来看官方文档学习怎么用。

所以这里掠过安装和介绍,准备好虚拟机,和官方文档http://nginx.org/en/docs/同步进行学习吧!

先试试服务器能不能跑起来,启动nginx

访问竟然报403了,但看得出来nginx已经启动,解决方法:https://www.cnblogs.com/haon/p/10959934.html,非403错误试着关闭一下防火墙

 以下黑色字为文档的我个人的翻译,我对文档的学习理解标注为红色斜体 代表与文档无关的内容

开始

这篇文档分为四节,最后一节先不看了我

  • nginx信号量命令
  • nginx.conf文件结构
  • 如何处理静态资源
  • 做一个简单的服务器代理
  • 做一个FastCGI代理(这什么东东?)

一、信号量命令

熟悉java线程的朋友,应该听过Semaphore类(我不懂只是大概知道是做线程通信用的?),不熟悉也不要紧,这里只要记住这个单词S开头和进(线)程通信就好了,有助于记忆这个命令。

命令长这样

四个signal可选

  • stop 快速关闭
  • quit 区别于stop的关闭,这个会先把请求处理完再关
  • reload 重载配置文件
  • reopen 重写日志文件

ex:nginx -s stop 

文档只详细讲了reload这个命令,(前置知识你得知道nginx是由一个master进程和多个worker进程组成),master进程收到reload命令后会检验和应用配置文件,如果验证通过,启动新的worker进程,通知原先的worker关闭,并平滑转移请求,否则,master进程会回滚继续用旧配置,并且通知旧的worker停止接受新请求并在处理完当前所有连接后关闭

master进程和worker进程,以下简称主线程和工作线程

我对这两个进程是望文生义,主线程应该是负责接收请求的,工作线程负责处理请求,像在SocketServer,当accept()到请求后交给线程池处理。当然现实并不如此,nginx能处理高并发的请求得益于AIO模型,当然这里我举的例子只是我猜测两个进程的地位。

关于如何回滚,这里并没有提到,不知道是不是和kill -usr2一样的原理。

二、nginx.conf文件配置

讲的和我看的安装视频差不多,分享给大家

ex:指令块 {

指令 xxxxx;

指令 xxxxx;

}

介绍了主要的4个代码块 ,含义我需要百度来看看

  • events 管理连接配置
  • http HTTP服务器配置
  • server 虚拟服务器配置,可能看到后面我才能理解
  • location URI路径匹配

这四个代码块是有嵌套关系的,events和http是顶级代码块,server在http里,location在server里,结构大致如下

 三、处理静态请求

 这里就是结合上面的知识对上面的一些配置,指令做个demo应用,跟着做就行了,这里用到了一个新命令

root:location负责匹配请求路径,这里location是优先最长匹配策略,root则是nginx主目录里的真实文件夹路径

ex:

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

如果URL是/images/1.jpg,那么真实文件得在 安装目录/data/images/1.jpg 才不会报404

我写的时候遇到一个小问题,以为指令块要用分号结尾,指令才需要分号,reload命令的时候,报错了,改完再reload没问题。

四、设置简单代理服务器

这里大概讲了三个东西

1、root指令也可以写在server下,功能一样

ex:

server {
    listen 8080;
    root /data/up1;

    location / {
    }
}

2、proxy_pass 指令,配置代理

ex:

server {
    location / {
        proxy_pass http://localhost:8080;
    }

    location /images/ {
        root /data;
    }
}

3、location 接正则表达式

ex:

location ~ \.(gif|jpg|png)$ {
    root /data/images;
}

五、配置FastCGI代理,用不着,先不看



猜你喜欢

转载自www.cnblogs.com/haon/p/10961838.html