一、Nginx简介
Nginx
是一个很强大的高功用Web和反向署理服务,它具有许多十分优胜的特性:
- Nginx专为功用优化而开发,功用是其最重要的考量,完成上十分注重功率。其优点是占有内存少,并发能力强,能够支持高达 50,000 个并发衔接数的呼应。
- Nginx作为负载均衡服务:Nginx 既能够在内部直接支持 Rails 和 PHP 程序对外进行服务,也能够支持作为 HTTP署理服务对外进行服务。
- 处理静态文件,索引文件以及主动索引;打开文件描述符缓冲。
- 无缓存的反向署理加速,简略的负载均衡和容错。
- 模块化的结构。
二、Docker下装置Nginx
2.1 装置思路
进程一:发动一个临时的nginx;
进程二:仿制nginx装备至需求挂载的本地目录;
进程三:创立并运转新的nginx容器。
2.2 详细执行进程
# 1. 创立要挂载的装备目录。
$ mkdir -p /mydata/nginx/conf
# 2. 发动临时nginx容器。
$ docker run -p 80:80 --name nginx -d nginx:1.10
# 3. 仿制出 Nginx 容器的装备。
# 3.1 将nginx容器中的nginx目录仿制到本机的/mydata/nginx/conf目录。
$ docker container cp nginx:/etc/nginx /mydata/nginx/conf
# 3.2 仿制的是nginx目录,将该目录的所有文件移动到 conf 目录。
$ mv /mydata/nginx/conf/nginx/* /mydata/nginx/conf/
# 3.3 删去多余的 /mydata/nginx/conf/nginx目录。
$ rm -rf /mydata/nginx/conf/nginx
# 4. 删去临时nginx容器。
# 4.1 停止运转 nginx 容器。
$ docker stop nginx
# 4.2 删去 nginx 容器。
$ docker rm nginx
# 5. 发动新的 nginx 容器。
$ docker run -p 80:80 --name nginx
-v /mydata/nginx/html:/usr/share/nginx/html
-v /mydata/nginx/logs:/var/log/nginx
-v /mydata/nginx/conf/:/etc/nginx
-d nginx:1.10
# 6. 设置 nginx 随 Docker 发动。
$ docker update nginx --restart=always
2.3 测试是否装置成功
- 修正
index
页展示作用
$ echo '<h1>hello nginx!</h1>'
>/mydata/nginx/html/index.html
- 经过
yourIp
进行页面拜访
三、Nginx反向署理
3.1 什么是反向署理?
在介绍什么是反向署理之前,咱们首要了解一下正向署理。
Nginx
不只能够做反向署理,完成负载均衡,还能用作正向署理来进行上网等功用。
-
正向署理 :
-
概念:假如把局域网外的
Internet
想象成一个巨大的资源库,则局域网中的客户端要拜访Internet
,则需求经过署理服务器来拜访,这种署理服务就称为正向署理。 - 运用场景:因为工作环境原因,日常工作只能局限于单位的局域网,假如想要拜访互联网,怎么办呢?这时就需求用到正向署理,让署理服务器帮助咱们进行资源的拜访。(需求在客户端装备署理服务器进行指定网站拜访)
-
概念:假如把局域网外的
-
反向署理:
-
概念:其实客户端对署理是无感知的,因为客户端不需求任何装备就能够拜访。咱们只需求将恳求发送到反向署理服务器,由反向署理服务器去挑选目标服务器获取数据后,在返回给客户端,此时反向署理服务器和目标服务器对外便是一个服务器,露出的是署理服务器地址,隐藏了真实服务器
IP
地址。 -
运用场景:咱们要拜访网站时无需知道详细的服务器
IP
,而是经过域名拜访署理服务器,署理服务再来帮咱们进行恳求转发。
-
概念:其实客户端对署理是无感知的,因为客户端不需求任何装备就能够拜访。咱们只需求将恳求发送到反向署理服务器,由反向署理服务器去挑选目标服务器获取数据后,在返回给客户端,此时反向署理服务器和目标服务器对外便是一个服务器,露出的是署理服务器地址,隐藏了真实服务器
- 正向署理及反向署理示意图:
3.2 装备文件
3.2.1 查看装备:
# 切换至装备文件地点目录。
$ cd /mydata/nginx/conf/
# 查看装备文件。
$ cat nginx.conf
3.2.2 装备阐明:
# 主进程叫master,负责管理子进程,子进程叫worker
# worker_processes装备项表明开启几个事务进程,一般和cpu核数有关
worker_processes 1;
events {
worker_connections 1024;
}
http {
# include表明能够引进其他文件,此处表明引进http mime类型
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 虚拟主机,能够装备多个
server {
listen 80;
server_name localhost;
location / {
# 途径匹配之后,哪个目录下去匹配相应的网页,html是相对途径
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3.2.3 榜首部分:大局块:
worker_processes 1;
阐明:
-
从装备文件开端到
events 块
之间的内容,首要会设置一些影响Nginx
服务器全体运转的装备指令。 -
首要包含:装备运转
Nginx
服务器的用户(组)、答应生成的worker process
数,进程PID
存放途径、日志存放途径和类型以及装备文件的引进等。 -
上面这行
worker_processes
装备,是Nginx
服务器并发处理服务的要害装备,该值越大,能够支持的并发处理量也越多,可是会受到硬件、软件等设备的制约。
3.2.4 第二部分:events 块:
events {
worker_connections 1024;
}
阐明:
-
events
块触及的指令首要影响Nginx
服务器与用户的网络衔接。 -
常用的设置包含:是否开启对多
work process
下的网络衔接进行序列化,是否答应一起接收多个网络衔接,选取哪种事情驱动模型来处理衔接恳求,每个work process
能够一起支持的最大衔接数等 -
上述例子就表明每个
work process
支持的最大衔接数为 1024。这部分的装备对Nginx
的功用影响较大,在实际中应该灵敏装备。
3.2.5 第三部分:http 块:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
阐明:
-
这算是
Nginx
服务器装备中最频繁的部分,署理、缓存和日志界说等绝大多数功用和第三方模块的装备都在这儿。 -
需求留意的是:
http 块
也能够包含http大局块
、server 块
。 -
http大局块:装备的指令包含文件引进、MIME-TYPE 界说、日志自界说、衔接超时时刻、单链接恳求数上限等。
-
server 块:这块和虚拟主机有密切关系,虚拟主机从用户视点看,和一台独立的硬件主机是完全一样的,该技能的产生是为了 节约互联网服务器硬件成本。每个
http 块
能够包含多个server 块
,而每个server 块
就相当于一个虚拟主机。而每个server 块
也分为大局 server 块
,以及能够一起包含多个locaton 块
。-
大局 server 块:最常见的装备是本虚拟机主机的监听装备和本虚拟主机的名称或
IP
装备。 -
location 块:一个 server 块能够装备多个 location 块。首要作用是基于
Nginx
服务器接收到的恳求字符串(例如 server_name/uri-string),对虚拟主机名称 (也能够是IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的恳求进行处理。 地址定向、数据缓存和应对控制等功用,还有许多第三方模块的装备也在这儿进行。
-
大局 server 块:最常见的装备是本虚拟机主机的监听装备和本虚拟主机的名称或
3.2.6 一图阐明nginx.conf装备:
3.3 反向署理实践
3.3.1 需求:运用 Nginx
反向署理,拜访 www.123.com 直接跳转到 127.0.0.1:8080。
3.3.2 示意图:
3.3.3 实践进程
- 进程一:修正hosts文件,装备域名和 ip 对应关系:
# hosts文件途径
C:WindowsSystem32driversetc
- 进程二:装备nginx监听:
阐明:
nginx
反向署理服务监听192.168.8.8
的80
端口,假如有恳求过来,则转到proxy_pass
装备的对应服务器上。
server {
listen 80;
server_name 192.168.8.8;
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8080
}
}
- 进程三:浏览器拜访测试:
阐明:不加端口号时默认为
80
端口。
四、结束语
“——-怕什么真理无量,进一寸有一寸的欢欣。”
微信公众号查找:饺子泡牛奶。