转:nginx入门指南,快速搭建静态文件服务器和代理服务器
本文介绍 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,博主原创文章,欢迎转载,转载请注明出处和链接。
转:nginx入门指南,快速搭建静态文件服务器和代理服务器的更多相关文章
- CentOS 6(64-bit) + Nginx搭建静态文件服务器
Nginx搭建静态文件服务器 使用命令打开Nginx配置文件: sudo vim /etc/nginx/conf.d/default.conf 将配置改为: server { ...... ..... ...
- Ubuntu 14.04TLS Nginx搭建静态文件服务器
Nginx搭建静态文件服务器 [官方教程]https://www.nginx.com/resources/admin-guide/serving-static-content/ 打开Nginx的配置文 ...
- DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客
DigitalOcean 之前买了个便宜的VPS并且在上面搭建了我自己写的博客程序,后来VPS里运行MongoDB经常自己挂掉就索性没理了.直到现在VPS已经过期,服务器被强制关掉了.周末在家索性想着 ...
- ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件
前言 随着Asp .Net Core的升级迭代,很多开发者都逐渐倾向于.net core开发. .net core是一个跨平台的应用程序,可以在windows.Linux.macOS系统上进行开发和部 ...
- 用node搭建静态文件服务器
占个坑,写个node静态文件服务器
- Hexo快速搭建静态博客并实现远程VPS自动部署
这篇文章将如何搭建hexo,以及如何通过git webhooks实现远程vps的自动部署 这篇文件适合的条件: 简单的用于个人博客.公司博客展示,hexo的定位是静态博客,要实现动态服务器的功能并不适 ...
- 1-开发共享版APP(搭建指南)-快速搭建到自己的服务器
该APP安装包下载链接: http://www.mnif.cn/appapk/IotDevelopmentVersion/20190820/app-debug.apk 或者扫描二维码下载 注:该下载可 ...
- Appium入门指南 - 环境搭建和Case编写
本文档将详细介绍如何搭建 Appium 的运行环境,以及如何编写一个简单的 UI 自动化测试用例.其中,也会穿插讲解一些 Appium 的基本知识.关于 Appium 的更多信息,大家可以查看官方文档 ...
- nginx 配一个简单的静态文件服务器 和一个虚似机
下面是个图片服务器: server { listen ; server_name img.xxx.xxx.com; root /data/site/img.xxx.xxx.com; access_lo ...
随机推荐
- P1332 血色先锋队
P1332 血色先锋队 题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重 ...
- list 集合addAll 和 add 方法小坑
1.问题 我们经常会遍历 list集合,在遍历的过程中,如果在遍历的过程中添加了 add() 或者 addAll() 方法修改了遍历的list列表,那么会报错. 代码演示: List<Inte ...
- Python 3基础教程17-提问频率较高的几个Python问题
这里,介绍几个初学者经常上网查询的问题,直接看下面的例子 # 常见的一些常识问题汇总 #!/user/bin/python # 这个是linux下python文件的写法,告诉程序,这个文件是pytho ...
- 玩玩自动化测试之selenium篇
现如今社会科技发展太快了,纯功能点点点已经落后别人好几条街了,所以为了让自己多点职业生涯年限,得挺起肩,傲起头.自动化测试,其本质是用代码程序测试程序,所以其实第一步应该学好编程语言,后再自己开发自动 ...
- 可以完成99%的静态页面的HTML标签
HTML:一套浏览器认知的规则HTML分为两个部分,头和身体.一个完整的网页相当于一个裸体的人,我们利用HTML给它穿上衣服,使它更好看.下面我将为大家介绍一下HTML一些基本的标签,而这些基本的标签 ...
- 利用jquery操作dom时,用event.target优化dom操作
html: <ul id="contents"> <li data-link="#part1">Part 1</li> &l ...
- windows下自己常用的几个bat
1.samba映射盘符和解除 net use Z: "\\sambaserver ip\dir" "password" /user:"username ...
- lnmp1.4,400,500,错误
Thinkphp5或其他主流框架,入口文件未放在根目录下,比如Thinkphp5 入口文件放在/public/index.php vhost需要指向/public目录 一键安装包通常会报 open_b ...
- 正则awk和查看文件行数
[root@WebServer aa]# cat oldboy.txt I am oldboy myqq is 49000448[root@WebServer aa]# cat oldboy.txt ...
- js+jquery 常用选择器函数
一.获取当前标签 JS: this,如下: <button onclick="fun(this)"></button> Jquery,如下: $(" ...