nginx学习


1.基本概念

  • 正向代理
    在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
    在这里插入图片描述
  • 反向代理
    我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器收获数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP地址
    在这里插入图片描述
  • 负载均衡
    早期的架构模式大多是,客户端发送多个请求到服务器,服务器与数据库交互,处理完之后,再返回给客户端,这种模式简单成本低,适合并发量小的情况下搭建,但是随着用户规模越来越大,并发量也迅速提升,显然单纯的增加硬件解决不了根本问题,这时我们就要使用nginx负载均衡策略
    在这里插入图片描述
  • 动静分离
    动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性
    在这里插入图片描述在这里插入图片描述

2.常用命令

  • 查看版本号
    nginx -v
  • 启动nginx
    nginx
  • 查看nginx进程
    ps -ef | grep nginx
  • 停止nginx
    nginx -s stop
  • 重新加载nginx
    nginx -s reload

3.配置文件介绍

cd /etc/nginx
vi nginx.conf

nginx.conf文件主要有这几大模块

  • 全局块
    从配置文件开始到events之间的内容,主要设置一些影响nginx整体运行的配置指令,比如
    worker_processes 1就是用来配置服务器所能支持的并发数,但是也会受硬件与软件的制约
  • events块
    events块主要影响nginx与用户的网络链接,比如worker_connection 1024代表支持的最大连接数
  • http块
    这部分是主要的配置模块,包括负载均衡,反向代理等功能都是在这里面配置的,同时http块又包括http全局块,server块

4.实际部署

反向代理Demo
  • 实现效果:打开浏览器,在浏览栏地址输入www.123.com,跳转到linux的tomcat主页面中

  • 具体实现:
    1.在linux系统下安装tomcat,并且监听8080端口(假设你已经下好tomcat安装包)
    cd /apache-tomcat-x.xx/bin && ./startup.sh
    2.设置对外开放访问的端口,重新加载防火墙,这一篇博客可以参考(感谢这位博主)
    ubuntu配置防火墙端口访问

    3.配置反向代理
    以后访问www.123.com这个网址时,nginx就会自动将这个请求打到tomcat服务器上,但是我们还要在主机host文件中配置这个网址的ip映射(因为我们在浏览器输入一个域名,会先去本地Host查看是否有这个域名,然后再去网上的dns解析器找)
    4.在host文件中配置
    在最后加上 你的主机域名 www.123.com
    再访问在这里插入图片描述
    5.我们接下来去nginx.conf进行修改
    server{
    listen 80; #nginx监听80端口
    server_name www.123.com; #入口地址
    location / {
    root html;
    proxy_pass http://127.0.0.1:8080; #转发路径
    index index.html index.htm;
    }
    }

这样我们再访问www.123.com时,浏览器地址就调到了localhost:8080上
在这里插入图片描述

动静分离Demo

我们将静态资源单独放在磁盘的一个目录下,而非tomcat里,假设我们将其放在
/home/ubuntu/img/
在这里插入图片描述
打开springboot项目下的application.properties文件,首先配置静态资源路径,我们遵循Restful风格命名,以后在nginx服务器上查看静态资源就是这个地址加上文件名

prop.avatarUrl = http://175.24.67.250/image/avatar/

接下来我们再去拦截器中注册拦截静态资源的路径

package com.neteasecommunity.james.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

//配置静态资源服务器路径
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
    @Value("${web.upload-path}")
    private String UPLOAD_FOLDER;
    @Override
    //配置用户头像静态资源
    public void addResourceHandlers(ResourceHandlerRegistry registry){
        registry.addResourceHandler("/img/avatar/**").addResourceLocations("file:"+"/home/ubuntu/img/avatar/");
    }
}

接下来打开nginx配置文件

su root #注意要用root登录
cd /etc/nginx/
vi nginx.conf

在server里面配置一个location,用于代理静态资源路径

 location /image/{
   alias /home/ubuntu/img/;
 }

alias相当于给/image/路径取了别名,比如说,我们访问 http://175.24.67.250/image/avatar/mm.jpg这个图片,那么服务器默认给我们显示的就是磁盘路径为/home/ubuntu/img/avatar/下mm.jpg这张图片,保存完配置后,我们输入地址http://175.24.67.250/image/avatar/mm.jpg
在这里插入图片描述
其实呢,这个文件已经在/home/ubuntu/img/avatar/下了
在这里插入图片描述
这就是使用动静分离的好处:缓解主服务器压力,便于项目维护

负载均衡demo

还是进入nginx.conf,我是进行了如下配置

 upstream cluster{
 #配置上游服务器,使用轮训法,部署三台tomcat依次接受80端口发送过来的请求
                server 175.24.67.250:8080;
                server 175.24.67.250:8081;
                server 175.24.67.250:8082;
        }
    server{              
                listen 80;
                server_name 175.24.67.250;                 
				
				#项目页面根地址
                location /  {
                        root /home/ubuntu/gitHome/musicBox/dist;
                        index index.html index.htm;
                        try_files $uri $uri/ /index.html;
                        }
				#静态资源地址
                location /image/{          
                        alias /home/ubuntu/img/;
                }
				#后端地址
                location ~ /api {
                          proxy_pass  http://cluster;   #记得加上上游请求地址
                          proxy_set_header HOST $http_host;
                          proxy_set_header X-Real-IP $remote_addr;
                          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        }

        }

2020.4.19 (补充)
nginx的user字段要记得加上当前启动服务器的用户
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值