一、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

三、Nginx反向署理

3.1 什么是反向署理?

在介绍什么是反向署理之前,咱们首要了解一下正向署理

Nginx 不只能够做反向署理,完成负载均衡,还能用作正向署理来进行上网等功用。

  • 正向署理
    • 概念:假如把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要拜访 Internet,则需求经过署理服务器来拜访,这种署理服务就称为正向署理。
    • 运用场景:因为工作环境原因,日常工作只能局限于单位的局域网,假如想要拜访互联网,怎么办呢?这时就需求用到正向署理,让署理服务器帮助咱们进行资源的拜访。(需求在客户端装备署理服务器进行指定网站拜访)
  • 反向署理
    • 概念:其实客户端对署理是无感知的,因为客户端不需求任何装备就能够拜访。咱们只需求将恳求发送到反向署理服务器,由反向署理服务器去挑选目标服务器获取数据后,在返回给客户端,此时反向署理服务器和目标服务器对外便是一个服务器,露出的是署理服务器地址隐藏真实服务器 IP 地址
    • 运用场景:咱们要拜访网站时无需知道详细的服务器IP,而是经过域名拜访署理服务器,署理服务再来帮咱们进行恳求转发。
  • 正向署理及反向署理示意图

反向署理服务-Nginx

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)进行匹配,对特定的恳求进行处理。 地址定向、数据缓存和应对控制等功用,还有许多第三方模块的装备也在这儿进行。

3.2.6 一图阐明nginx.conf装备

反向署理服务-Nginx

3.3 反向署理实践

3.3.1 需求:运用 Nginx 反向署理,拜访 www.123.com 直接跳转到 127.0.0.1:8080。

3.3.2 示意图

反向署理服务-Nginx

3.3.3 实践进程

  • 进程一:修正hosts文件,装备域名和 ip 对应关系
# hosts文件途径
C:WindowsSystem32driversetc

反向署理服务-Nginx

  • 进程二:装备nginx监听

阐明:nginx 反向署理服务监听 192.168.8.880端口,假如有恳求过来,则转到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 端口。

反向署理服务-Nginx

四、结束语

“——-怕什么真理无量,进一寸有一寸的欢欣。”

微信公众号查找:饺子泡牛奶