目录
1 什么是nginx
2 Nginx功能
2.1 正向代理
2.2 反向代理
2.3 负载均衡
2.4 动静分离
3 区别
4 Docker 安装nginx
5 nginx配置文件介绍
nginx是一个高性能的http和反向代理服务器,特点是占有内存少、并发能力强,事实上nginx的并发能力的确在同类的服务器中表现较好。
nginx转为性能优化开发,性能是其最重要的考量。实现上非常注重于效率。有报表指出其能支持高达50000个并发连接数。
正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
Nginx不仅可以做反向代理,实现负载均衡,还能够用正向代理进行上网等功能。
如果想要访问局域网外的资源,则需要通过代理服务器来访问,这种代理服务称为正向代理。像:访问外网时用到的
反向代理:反向代理其实是以一个代理服务器来接收客户端的请求,然后将请求转发给内部的服务器,从而将服务器上得到的结果返还给客户端,此时代理服务器对外表现就是一个反向代理服务器。
比如:平时在开发的时候,浏览器请求的地址不是我们后端服务器上真正的IP地址,而是nginx上服务器的地址,然后再由nginx转发到真正的服务器上。这个时候nginx其实就是一个反向代理服务器。
单个服务解决不了,我们增加服务器的数量,通过反向代理服务器将请求分发给各个服务器上,将原先的请求集中到单个服务器上的情况改为请求到多个服务器,将负载分发到不同的服务器上,也就是所说的负载均衡。
加快网站的解析速度,可以把动态页面和静态页面由不同的服务器解析,加快解析速度,降低原来单个服务器的压力
正向代理服务器和反向代理服务器都是介于客户端和服务端之间,所做的事情也是将客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有区别的。
1 正向代理其实是客户端的代理,帮助客户端访问其无法访问服务器的资源。反向代理是服务器的代理,帮助服务器做负载均衡和安全防护。
2 正向代理服务器都是客户端架设的,比如在自己电脑上安装一个电脑软件。反向代理是服务器架设的,比如在自己机器集群中部署一个反向代理服务器。
3 正向代理服务器不知道真正的客户端是谁,以为访问自己的就是真实的客户端。反向代理中,客户端不知道谁是真正的服务器,认为自己所访问的就是真正的服务器。
4 正向代理和反向代理的作用和目的不同,正向代理主要是用来解决访问限制的问题,而反向代理是用来提供负载均衡、安全防护等作用,二者皆能提高访问速度。
拉取镜像
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/
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /home/qiuguo/projects/qiuguo-ui;
try_files $uri $uri/ /index.html;
index index.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块就相当于一个虚拟地址