zoukankan      html  css  js  c++  java
  • 【个人笔记】跟着官方文档学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代理,用不着,先不看



  • 相关阅读:
    关于大文本(txt)导入sqlserver2008数据库的一点感想
    欲则不达
    记录下马上两年的大学吧
    osgi使用 equnix框架 Bridge方式搭建方法(部分来源于ibm网站)
    mavan deploy不出repository.xml
    在项目中使用maven私服
    playbook 若干问题
    Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
    wallwd
    很好的面试记录
  • 原文地址:https://www.cnblogs.com/haon/p/10961838.html
Copyright © 2011-2022 走看看