1、静态HTTP服务器

首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。

配置:

1
2
3
4
5
6
server {listen 80; # 端口号location / {root /usr/share/nginx/html; # 静态文件路径}
}

2、反向代理服务器

什么是反向代理?

客户端本来可以直接通过HTTP协议访问某网站应用服务器,如果网站管理员在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。
反向代理
配置:

1
2
3
4
5
6
server {listen 80;location / {proxy_pass http://192.168.20.1:8080; # 应用服务器HTTP地址}
}

既然服务器可以直接HTTP访问,为什么要在中间加上一个反向代理,不是多此一举吗?反向代理有什么作用?继续往下看,下面的负载均衡、虚拟主机,都基于反向代理实现,当然反向代理的功能也不仅仅是这些。

3、负载均衡

当网站访问量非常大,网站站长开心赚钱的同时,也摊上事儿了。因为网站越来越慢,一台服务器已经不够用了。于是将相同的应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。

Nginx可以通过反向代理来实现负载均衡。
负载均衡
配置:

1
2
3
4
5
6
7
8
9
10
upstream myapp {server 192.168.20.1:8080; # 应用服务器1server 192.168.20.2:8080; # 应用服务器2
}
server {listen 80;location / {proxy_pass http://myapp;}
}

4、虚拟主机

的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。

例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {listen 80 default_server;server_name _;return 444; # 过滤其他域名的请求,返回444状态码
}
server {listen 80;server_name www.aaa.com; # www.aaa.com域名location / {proxy_pass http://localhost:8080; # 对应端口号8080}
}
server {listen 80;server_name www.bbb.com; # www.bbb.com域名location / {proxy_pass http://localhost:8081; # 对应端口号8081}
}

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,有兴趣的同学可以研究一下HTTP协议。

另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

5、FastCGI

Nginx本身不支持PHP等语言,但是它可以通过FastCGI来将请求扔给某些语言或框架处理(例如PHP、Python、Perl)。

1
2
3
4
5
6
7
8
9
server {listen 80;location ~ \.php$ {include fastcgi_params;fastcgi_param SCRIPT_FILENAME /PHP文件路径$fastcgi_script_name; # PHP文件路径fastcgi_pass 127.0.0.1:9000; # PHP-FPM地址和端口号# 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock;}
}

配置中将.php结尾的请求通过FashCGI交给PHP-FPM处理,PHP-FPM是PHP的一个FastCGI管理器。有关FashCGI可以查阅其他资料,本文不再介绍。

fastcgi_pass和proxy_pass有什么区别?下面一张图带你看明白:

Nginx——基本功能介绍相关推荐

  1. nginx常用功能介绍

    一.什么是nginx? nginx是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器.主要有反向代理,负载均衡的功能. 官方网站为:http://nginx.or ...

  2. Fiddler抓包使用教程-基本功能介绍

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72932886 本文出自[赵彦军的博客] Fiddler 基本页面 会话列表功能介绍 ...

  3. Nginx RTMP 功能研究

    Nginx-RTMP功能调研 1. RTMP协议介绍...2 2.RTMP server.3 2.1当前的流媒体server.3 2.2Wowza功能...3 3.Nginx-based RTMP s ...

  4. 网络云盘项目——HTTP接口介绍、功能介绍、服务端/客户端代码解析

    一.本文目的 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部 ...

  5. cell-blog 功能介绍与安装

    title: cell-blog 功能介绍与安装 date: 2020-07-25 20:51:11 tags: PHP Laravel Markdown categories: Backend PH ...

  6. MarkDwon功能介绍

    文章目录 MarkDown功能介绍 一. 标题 1. 使用=和-标记一级和二级标题 二. 段落 1. 段落格式 2. 字体 3. 分割线 4. 删除线.下划线.脚注.注释 三. 列表 1. 无序列表 ...

  7. [转]Nginx RTMP 功能研究(Nginx流媒体)

    转自:http://blog.csdn.net/cccallen/article/details/8440191 看点: 1.    Nginx 配置信息与使用.  (支持 rtmp与HLS配置) 2 ...

  8. HOJ 系统常用功能介绍 部署快速入门 c++ python java编程语言在线自动评测 信息奥赛一本通 USACO GESP 洛谷 蓝桥 CSP NOIP题库

    技术支持微 makytony 服务器配置需求 腾讯云 2H4G 5M 60GB 轻量应用服务器  承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛. 系统镜像选 ...

  9. [转]Nginx基本功能极速入门

    原文链接:Nginx基本功能极速入门 | 叉叉哥的BLOG 本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. 静态HTTP服务器 首先 ...

最新文章

  1. R可视化在回归曲线中添加回归方程式
  2. ECC加密算法入门介绍
  3. python代码示例图形-Python使用matplotlib绘制三维图形示例
  4. 【深度学习】真正的即插即用!盘点11种CNN网络设计中精巧通用的“小”插件...
  5. [数论]Gcd/ExGcd欧几里得学习笔记
  6. Java将五个整数存入整形数组_异常处理:从命令行输入5个整数,放入一整型数组,然后打印输出。。。...
  7. Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)
  8. 15、sql编程基本语法介绍
  9. ubuntu安装谷歌浏览器 typora+出现编码错误‘ascii‘ codec can‘t encode character ‘\u6b66‘+docker里安装tensorrt报错
  10. Oracle技术之索引与Null值对于Hints及执行计划的影响
  11. fir滤波器课程设计matlab,Matlab课程设计---FIR数字滤波器
  12. JAVA蓝桥杯:杨辉三角形
  13. RedisTemplate存数据时指定过期时间
  14. 使用迁移学习在(选定)农业作物中的自动疾病分类
  15. 如何快速将所有东西从旧的Intel Mac迁移到新的M1 MacBook
  16. 正则表达式校验特殊格式
  17. NHibernate 的 ID 标识选择器
  18. 德邦快递——快递鸟电子面单API模板预览效果 解析接口返回json字符串
  19. 新浪微博html不完整,新浪微博显示不正常怎么解决
  20. 2022年潜江中级工程师职称申报材料和申报渠道是什么呢?甘建二

热门文章

  1. 在html中标记bdo,HTML_HTML非常用标签 optgroup、sub、sup和bdo示例代码,optgroup 用在select 标记中 可以 - phpStudy...
  2. json 插入数据_让繁琐的工作自动化——python处理JSON文件
  3. oracle 天转换成月函数_oracle中to_date详细用法示例(oracle日期格式转换)
  4. python api接口调用_python 调用有道api接口的方法
  5. AWT_Swing_初始化(Java)
  6. 获取当前时间以及模拟倒计时(Java)
  7. Python十进制转十五进制
  8. JSCore的基本使用
  9. Node.js 学习笔记(三)
  10. 智能家居火了这么久 何时到我家?