目录

1 什么是nginx

2 Nginx功能

2.1 正向代理

2.2 反向代理

2.3 负载均衡

2.4 动静分离

3 区别

4 Docker 安装nginx

5 nginx配置文件介绍

1 什么是nginx

nginx是一个高性能的http和反向代理服务器,特点是占有内存少、并发能力强,事实上nginx的并发能力的确在同类的服务器中表现较好。

nginx转为性能优化开发,性能是其最重要的考量。实现上非常注重于效率。有报表指出其能支持高达50000个并发连接数。

2 Nginx功能

2.1 正向代理

正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。

Nginx不仅可以做反向代理,实现负载均衡,还能够用正向代理进行上网等功能。

如果想要访问局域网外的资源,则需要通过代理服务器来访问,这种代理服务称为正向代理。像:访问外网时用到的vpn

2.2 反向代理

反向代理:反向代理其实是以一个代理服务器来接收客户端的请求,然后将请求转发给内部的服务器,从而将服务器上得到的结果返还给客户端,此时代理服务器对外表现就是一个反向代理服务器。

比如:平时在开发的时候,浏览器请求的地址不是我们后端服务器上真正的IP地址,而是nginx上服务器的地址,然后再由nginx转发到真正的服务器上。这个时候nginx其实就是一个反向代理服务器。

2.3 负载均衡

单个服务解决不了,我们增加服务器的数量,通过反向代理服务器将请求分发给各个服务器上,将原先的请求集中到单个服务器上的情况改为请求到多个服务器,将负载分发到不同的服务器上,也就是所说的负载均衡。

2.4 动静分离

加快网站的解析速度,可以把动态页面和静态页面由不同的服务器解析,加快解析速度,降低原来单个服务器的压力

3 区别

正向代理服务器和反向代理服务器都是介于客户端和服务端之间,所做的事情也是将客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有区别的。

1 正向代理其实是客户端的代理,帮助客户端访问其无法访问服务器的资源。反向代理是服务器的代理,帮助服务器做负载均衡和安全防护。

2 正向代理服务器都是客户端架设的,比如在自己电脑上安装一个电脑软件。反向代理是服务器架设的,比如在自己机器集群中部署一个反向代理服务器。

3 正向代理服务器不知道真正的客户端是谁,以为访问自己的就是真实的客户端。反向代理中,客户端不知道谁是真正的服务器,认为自己所访问的就是真正的服务器。

4 正向代理和反向代理的作用和目的不同,正向代理主要是用来解决访问限制的问题,而反向代理是用来提供负载均衡、安全防护等作用,二者皆能提高访问速度。

4 Docker 安装nginx

拉取镜像

docker pull nginx

创建挂载目录

启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)是因为Nginx本身容器只存在/etc/nginx目录 , 本身就不创建 nginx.conf 文件。

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

运行一个nginx容器

# 生成容器

docker run –name nginx -p 9001:80 -d nginx

解释:在Docker中运行一个名为nginx的容器,以后台的形式运行。并将容器的80端口映射到主机的9001端口。这样你就可以通过访问http://localhost:9001来访问Nginx服务器。-d nginx表示 后台运行名为nginx的容器,-d是指在后台运行容器,不会显示容器的输出

复制目录

# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

5 nginx配置文件介绍

worker_processes1;events {worker_connections1024;}http {include mime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;server {listen 80;server_namelocalhost;location / {root /home/qiuguo/projects/qiuguo-ui;try_files $uri $uri/ /index.html;indexindex.html index.htm;}location /prod-api/{proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://qiuguo-gateway:8080/;}error_page 500 502 503 504/50x.html;location = /50x.html {root html;}}}# requirepass 123456

nginx配置文件中有三部分组成:

第一部分:全局块

从配置文件开始到events开始之间的内容,主要设置一些影响nginx服务器整体运行的指令,比如:worker_processes 1;worker_processes的值越大,可支持的并发数也越多,只不过会收到机器硬件的影响。

第二部分:events块

events块涉及的指令主要影响Ngiinx服务器与用户的网络连接,比如:worker_connections 1024;

第三部分:http块

nginx服务器中配置最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

注意:http块也包括http全局快和server块

http全局配置指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上线。

http块可以包含多个server块,而每个server块就相当于一个虚拟地址