Nginx是什么
Nginx是一种高性能的HTTP的web服务器,项目中我们一般使用Nginx来实现负载均衡 反向代理 动静分离等功能。Nginx的作者是俄罗斯人,他在2014年开发的。
什么是反向代理
首先说下什么是正向代理,大家想访问某个网站,但是这个网站不能直接访问,你需要通过代理服务器访问目标网站。此时我们需要在自己的电脑上配置代理服务器。
在来说说反向代理,所谓的反向代理是客户端对代理无感知的,客户端不需要进行任何的配置,我们只需要将请求发送给反向代理服务即可。代理服务器去目标服务器查找资源,然后代理服务器在将数据返回给客户端。代理服务器和目标服务器是一个服务,暴露的是代理服务器的IP地址。目标服务器的IP地址被隐藏。
什么是负载均衡
假设我们有个在线售票系统,在线售票系统分为订单模块 节目模块 票务模块 顾客模块 基础模块。随着系统访问量的增加。有可能单个系统中的某个模块扛不住那么高的并发量,例如节目模块,当有大量的用户查看节目信息时,节目模块首先扛不住。我们可以将一个售票系统拆分成几个微服务。例如订单微服务 节目微服务 售票微服务 顾客微服务。一个节目微服务扛不住,我们可以多部署几个节目微服务。通过使用Nginx将高并发请求分发到不同的节目微服务上,减轻系统压力。
什么是动静分离
将网站中的静态资源放到单独的文件系统中。动态请求交给Tomcat进行处理。从而减轻Tomcat服务器的压力。
如何安装Nginx(使用Docker安装Nginx
拉取nginx镜像 docker pull nginx
使用nginx镜像创建nginx容器 docker run --name tmp-nginx-container -d nginx
在Linux宿主机上创建/docker/nginx文件夹 mkdir /docker/nginx
将创建的nginx容器中的nginx.conf文件拷贝到宿主机上的/docker/nginx目录下:docker cp tmp-nginx-container:/etc/nginx/nginx.conf /docker/nginx/nginx.conf
将创建的nginx容器中的html文件夹拷贝到宿主机上的/docker/nginx目录下:docker cp -a tmp-nginx-container:/usr/share/nginx/html /docker/nginx
删除创建的nginx容器 docker rm -f tmp-nginx-container
重新创建nginx容器,并且制定容器的时区,并将Nginx容器的80端口和Linux宿主机上的是8000端口进行映射,同时将Nginx容器中的目录和宿主机的目录进行挂载。docker run --name mynignx -e TZ="Asia/Shanghai" -d -p 8000:80 -v /docker/nginx/html:/usr/share/nginx/html -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx/logs:/var/log/nginx nginx
修改Linux宿主机上的nginx.conf文件的配置(因为宿主机的目录和容器中的目录进行了挂载,所以当我们修改宿主机上的nginx.conf文件的配置就相当于修改了容器中的对应的配置文件)
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
访问地址测试nginx是否安装成功(访问自己Linux宿主机的IP地址) http://192.168.8.132:8000