转:ginx入门指南,快速搭建静态文件服务器和代理服务器

本文介绍 Nginx 入门基础知识,让你迅速搭建 Nginx 服务器。主要内容包括 Nginx 安装和简单使用、Nginx的简单原理、Nginx 配置文件的结构、如何使用 Nginx 来提供静态文件服务、如何使用 Nginx 来搭建简单的代理服务器等知识。

一、Nginx 的安装和简单使用

关于 Nginx 的安装、简单使用以及详细的命令行参数介绍请参考 http://blog.lifw.org/post/91978153

二、Nginx 的简单原理

如果使用 Nginx 作为web服务器,那么 Nginx 收到请求后将请求内容响应到客户端。如果使用 Nginx 作为代理服务器,那么
Nginx 收到请求后将请求转发到代理服务器(例如tomcat),代理服务器处理完请求后将响应内容发送给 Nginx ,最后 Nginx
将响应内容发送给客户端。

Nginx 是多进程架构,有一个主进程和若干工作进程。主进程主要用来读取并检测配置文件、管理工作进程。工作进程用来处理客户端请求。Nginx 采用基于事件的模型和独立于操作系统的机制来高效地将请求分发到工作进程。工作进程的个数可以在配置文件中显式指定,也可以由 Nginx 根据 CPU 核心数来自动确定。通常工作进程个数和 CPU 核心数相同。

三、Nginx 配置文件结构


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

user  nginx;

worker_processes  1;

error_log 
/var/log/nginx/error.log warn;

pid       
/var/run/nginx.pid;

events {

    worker_connections  1024;

}

http {

    include      
/etc/nginx/mime.types;

    default_type  application/octet-stream;

    access_log 
/var/log/nginx/access.log  main;

    sendfile        on;

    #tcp_nopush     on;

    keepalive_timeout  65;

    server {

      location / {

        root
/data/www;

      }

      location
/images/ {

        root
/data;

      }

    }

}

配置文件基本结构就是这样子,由若干指令(directives)构成。指令分为简单指令(siple directives)和块指令(block directives)。

简单指令由指令名和参数构成,指令名和参数以空格分隔,每条指令以分号结尾。例如

user nginx;

这就是一条简单指令,表示以 nginx 这个用户身份运行 nginx 工作进程。指令名为 user ,参数为 nginx,最后分号结束。

块指令由指令名和若干由花括号{}包围起来的一组指令组成。例如

events {

worker_connections 1024;

}

就是一个块指令,指令名为 events,后面紧跟 {} 包围起来的一组指令。

如果一个块指令内有其他指令,那么这个块指令也成为上下文(context),不在任何上下文中的指令被认为是在主上下文中(main
context)。例如 events 和 http 位于主上下文中,server 位于 http 上下文中,location 则位于
server 上下文中。

以井号#开头的行是注释行,不起作用。

四、使用 Nginx 来提供静态文件服务

Nginx 一大经典使用场景就是用来提供静态文件服务,例如图片、html、脚本、样式文件等,这些文件没有必要交给
tomcat、jboss等应用服务器处理,使用 Nginx 直接处理将大大提高性能。用 Nginx 来提供静态文件服务十分简单,只需要添加一个
server 块指令即可。

假设我们的静态文件位于 /srv/www 目录下,有若干图片、html、脚本、样式等文件,在 http 指令中加入一个 server 指令即可,代码如下


1

2

3

4

5

6

7

8

9

#其他配置省略

...

http {

      server {

         location ~* \.(html|css|js|png|jpg|gif|ico)$ {

            root
/srv/www;

         }

      }

}

location指令用来映射请求到本地文件系统,这里我们使用了简单的正则表达式来匹配html、css、js、png、jpg、gif、ico这些为扩展名的请求,注意
location 指令中使用表达式要用 ~ 或者 ~* 符号指明,~表示区分大小写,~* 表示不区分大小写。而 root
指令用来指定文件在服务器上的基路径,这里指定为 /srv/www。

不是太好理解,举个例子,例如客户端发送了一个 GET 请求 http://localhost/images/logo.png,Nginx
接受到该请求后会将该请求分发到匹配的 location 中处理,显然上面我们写的 location 指令可以截获该请求,接下来 nginx 将
request_uri 和 root 拼接成服务器文件系统路径,这里 request_uri 为 /images/logo.png,root 为
/srv/www ,拼接后路径为 /srv/www/images/logo.png
,最后 nginx 将服务器该图片响应给客户端,如果不存在该文件,则返回 404 。

五、使用 Nginx 来搭建简单的代理服务器

Nginx
另外一大经典使用场景就是用来作为代理服务器,通常和上述的静态文件服务器配合使用,来完成静态文件由 nginx
服务器提供,而复杂业务请求则由后面的应用服务器来处理。配置 nginx 为代理服务器也很简单,同样在 http 上下文中添加一个 server
指令即可,这里我们以 tomcat 为例。


1

2

3

4

5

6

7

8

9

10

11

12

13

#其他配置省略

http {

  server {

     #静态文件由nginx处理

     location ~* \.(html|css|js|png|jpg|gif|ico)$ {

         root
/srv/www;

     }

     #其他所有请求由tomcat处理

     location / {

         proxy_pass http://localhost:8080;

     }

  }

}

使用 proxy_pass 指令即可将匹配的请求转发到相应的代理服务器。这里我们同时配置了两个 location,第一个 location
来截获静态文件请求并将请求直接交给 nginx 处理,第二个 location 来截获除了静态文件之外的其他所有请求并将这些请求交给
tomcat 处理。这是 nginx 非常经典的使用方式。

本文链接:http://blog.lifw.org/post/52092805,博主原创文章,欢迎转载,转载请注明出处和链接。

时间: 2024-07-30 18:16:43

转:ginx入门指南,快速搭建静态文件服务器和代理服务器的相关文章

Hexo快速搭建静态博客并实现远程VPS自动部署

这篇文章将如何搭建hexo,以及如何通过git webhooks实现远程vps的自动部署 这篇文件适合的条件: 简单的用于个人博客.公司博客展示,hexo的定位是静态博客,要实现动态服务器的功能并不适合 有自己私有的服务器.vps.域名 git仓库,Github或国内的Coding.net hexo本地部署 流程:先在本机搭建好hexo环境,push到git仓库,再部署到服务器上. 第一步,安装hexo命令行工具,这个工具在服务器端也需要执行安装 1 npm install hexo-cli -

快速搭建静态服务器

一:使用http-server http-server基于Node,所以得先确保有Node环境. 1. 安装http-server 1 npm install http-server -g 2. 启动 1 http-server -a 127.0.0.1 -p 9999 上面的命令表示在本机的9999端口上启动一个静态服务器,应用根目录为执行上面命令的所在目录 优点:简单,快速缺点:命令行一关,服务就中止了.每次开机都要再启一次,麻烦 二:使用ApmServer/XAMPP两者都是PHP的集成环

1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

该APP安装包下载链接: http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk 或者扫描二维码下载 APP源码获取方式:(请阅读宝贝说明) 此APP建立在基础篇,升级篇,数据篇和安全篇.只有把这些篇章全部学过才能看得懂源码! https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.70471debVGb9G8&ft=t&id=56929548602

从零开始,在windows上用nodejs搭建一个静态文件服务器

首先安装nodejs: 新建一个node文件夹 下载node.exe到该文件夹 下载npm然后解压到该文件夹 现在node文件夹是这样的 把该目录加入到path环境变量 在命令行执行 node -v npm -v 如果得到了版本号则表示nodejs安装完成 在命令行中执行 npm config set registry https://registry.npm.taobao.org 以后安装nodejs模块 都会从淘宝的npm镜像中下载 如果想要发布自己的模块到npm要先把npm的registr

快速搭建 Node.js 开发环境以及加速 npm

在公交车上刷微博,还是有很多同学在咨询: 如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本, 或者想快速切换 node 版本, 那么在非 Windows(如 osx, linux) 环境下, 请使用 nvm 来安装你的 node 开发环境, 保持系统的干净. 如果你使用 Windows 做开发,

Chapter 0.SymmetricDS快速入门指南( Quick Start Guide)

本文档是SymmetricDS3.6.14文档的第一章节Quick Start Guide文档的翻译,的目的是帮助读者快速搭建一个SymmetricDS集群并普及一些基本概念术语. 本文档描述了如何在两个SymmetricDS节点之间同步两个相同schema的数据库.下面的例子构建了一个分销业务模型,有一个中央数据库(我们叫它root或者corp节点)和多个零售商店的数据库(我们叫它client或者store节点).对于本教程,我们将只有一个store(商店)节点,如下图.如果你愿意,可以再教程

(SymmetricDS快速入门指南)Chapter 1. Quick Start Guide

本文档是SymmetricDS3.6.14文档的第一章节Quick Start Guide文档的翻译,的目的是帮助读者快速搭建一个SymmetricDS集群并普及一些基本概念术语. 本文档描述了如何在两个SymmetricDS节点之间同步两个相同schema的数据库.下面的例子构建了一个分销业务模型,有一个中央数据库(我们叫它root或者corp节点)和多个零售商店的数据库(我们叫它client或者store节点).对于本教程,我们将只有一个store(商店)节点,如下图.如果你愿意,可以再教程

JWPlayer快速入门指南(中文)

将JW Player嵌入到网页中非常的简单,只需要进行如下3个步骤: 1.解压mediaplayer-viral.zip文件,将jwplayer.js和player.swf文件拷贝到工程中: 2.在页面引入jwplayer.js文件: <script type="text/javascript" src="/jwplayer/jwplayer.js"></script> 3.将下面代码粘贴在body标签内,如下所示: <div id=&

夺命雷公狗---DEDECMS----5快速入门之商城快速搭建实现快递方式和支付方式的显示

我们现在用dedecms快速搭建一个商场,方法如下所示: 如此类推.写多几个栏目,效果 如下所示: 然后我们添加几个商品,记得要刷新下页面噢,不见见不到商品 添加成功后去看看效果如何: 出来了,但是如果您的老板叫你说做一个货到货款的选项,我们就要修改下他的模版了,方法如下所示: 红色框里面的字段也就是我们的商品页的字段如下图所示: 这是一样的,所以我们添加一个即可,如下图所示: 然后在添加多一个: 添加成功后如下所示: 我们先来看看效果如何: 效果已经在后台出现了,那么我们再去商品页看下有没有变