Nginx的简单操作

Nginx的简单操作

Nginx的介绍

Nginx是由俄罗斯人研发的,应对Rambler的网站并发,并且2004年发布的第一个版本Nginx

  • 稳定性极强,7*24小时不间断运行(就是一直运行)
  • Nginx提供了非常丰富的配置实例
  • 占用内存小,并发能力强

Nginx的安装与启动

利用docker安装简单快捷,可直接docker pull nginx:TAG
或者是通过docker-compose来搭建nginx,执行docker-compose up -d默认再当前目录下查找docker-compose.yml并执行

version: '3.1'
services: 
  nginx:									 #表示服务是nginx
    restart: always							 #表示docker启动时,容器是否自启
    image: daocloud.io/library/nginx:latest  #表示镜像
    container_name: nginx					 #表示容器名称
    ports: 									 #指定端口号
      - 80:80

运行成功后访问80端口看是否成功
在这里插入图片描述

Nginx的配置文件说明

容器内部cat /etc/nginx/nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

#events块之前的称之为全局快
#worker_processes的值越大说明其并发能力越强
#error_log 是其错误日志存储的位置
#pid是nginx运行的一个标识
events {
    worker_connections  1024;
}

#events中的worker_connections的值越大说明并发能力越强

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;

    include /etc/nginx/conf.d/*.conf;
}
# http块
# include表示引入一个外部的文件 --> /mime.types中存放着大量的媒体类型
# include /etc/nginx/conf.d/*.conf; --> 引入了conf.d目录下的以.conf为结尾的配置文件

# location块
		# root:将接收到的请求根据/usr/share/nginx/html去查找静态资源
		# index:默认去上述路径中找到index.html或index.htm
# server块
	# listen: 代表Nginx监听的端口号
	# localhost: 代表Nginx接收请求的ip

修改docker-cpmpose.yml

version: '3.1'
services: 
  nginx:
    restart: always
    image: daocloud.io/library/nginx:latest
    container_name: nginx
    ports: 
      - 80:80
    volumes:
      - /opt/docker_nginx/conf.d/:/etc/nginx/conf.d  #添加容器卷
      #数据卷映射之后,要在对应目录/opt/docker_nginx/conf.d下创建相应的.conf文件

修改完成后,进行以下操作

#重新构建容器
docker-compose bulid
#重新启动容器
docker-compose up -d
#重启nginx
docker-compose restart

Nginx的反向代理

正向代理和反向代理介绍

正向代理
  • 正向代理服务由客户端设立的
  • 客户端知道服务端与代理服务器是谁
  • 提高访问速度,对服务端隐藏客户端ip
    在这里插入图片描述
反向代理
  • 反向代理和正向代理相反,由服务端设立
  • 服务端知道客户端是谁而客户端不知道服务端是谁
  • 达到负载均衡,对客户端隐藏服务端的真实ip

在这里插入图片描述
基于反向代理机制,我们可以用nginx给tomcat配置反向代理
修改default.conf文件
添加以下内容,展示页面

server {
    listen       80;   #监听的端口号
    server_name  localhost;    #接受请求的ip

    location / {
        proxy_pass 192.168.193.128:8080/; #此处为linux宿主机的ip地址
    }
}

重新启动容器docker-compose restart再进入192.168.192.128:80就是Tomcat的首页了
在这里插入图片描述

关于Nginx的location路径映射

优先级关系:
(location = )>(location /xx/yy/zz)>(location ^~)>(location *)>(location /起始路径)>(location /)

# 1. = 匹配
location = / {
	# 精准匹配,主机名后面不能带任何字符串
}
# 2. 通用匹配
location /xxx {
	# 匹配所有以/xxx开头的路径
}
# 3. 正则匹配
location ~ /xxx {
	# 匹配所有以/xxx开头的路径
}
# 4. 匹配开头路径
location ^~ /images/ {
	# 匹配所有以/images开头的路径
}
# 5. ~* \.(gif|jpg)$ {
	# 匹配以gif或jpg为结尾的路径
}

Nginx负载均衡

nginx 分配服务器策略

  • 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
  • weight:weight 代表权重默认为 1,权重越高被分配的客户端越多
  • ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
  • fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。
轮询

在配置文件中添加以下内容

upstream 名字{
    server ip:端口;
    server 域名:端口;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

	location / {
        proxy_pass http://upstream的名字/;	
    }
}

upstream 内部,把需要负载均衡的服务器都写上
重启容器使配置文件生效

weight权重

在配置服务器端口后写上weight=权重数

upstream 名字{
    server ip:端口 weight=权重数;
    server 域名:端口 weight=权重数;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

	location / {
        proxy_pass http://upstream的名字/;	
    }
}
IPhash

实现iphash只要在upstream内容的上添加iphash即可

upstream 名字{
	iphash
    server ip:端口 权重数;
    server 域名:端口 权重数;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

	location / {
        proxy_pass http://upstream的名字/;	
    }
}
fair

在upstream后面加上fair

upstream 名字{
    server ip:端口 权重数;
    server 域名:端口 权重数;
    fair
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

	location / {
        proxy_pass http://upstream的名字/;	
    }
}

动静分离

为什么要动静分离?
在这里插入图片描述
通过上述可知,寻找动态资源时需要有四个过程,而寻找静态资源只有俩个
Nginx的并发能力公式:
worker_processes * worker_connections / 4|2 = Nginx最终的并发能力
所以可以知道,如果采取动静分离能提高nginx的并发能力

动态资源代理

#配置如下
location / {
  proxy_pass 路径; 	#利用proxy_pass指定转发路径为动态请求
}

静态资源代理

location / {
    root /usr/share/nginx/html;
    index index.html;
}

#配置如下
location / {
    root 静态资源路径;
    index 默认访问路径下的什么资源;
    autoindex on;#代表展示静态资源的全部内容,以列表的形式展开
}
# 先修改docker,添加一个数据卷,映射到Nginx服务器的usr/share/nginx/html目录
# 在数据卷的路径下添加静态资源,如index.html或1.jpg
# 修改配置文件,再restart

这是我们再访问的时候匹配到对应的location则会进入到我们指定的静态文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值