#通过nginx部署前后端项目

  • 前端:vue项目
  • 后端:jar包
    具体nginx配置
#虚拟主机04--开启科研管理系统server {listen       80;#域名,该域名指向公网ipserver_name  scientific.lovelsj.com;#前端地址,这里是绝对路径location / {root   /www/dist;index  index.html index.htm;}#后端路径,注意这里的Scientific是application.yml里面的server-servlet-context-path: /Scientific,寻找/Scientific下的接口location /Scientific{proxy_pass http://192.168.30.131:8060;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

nginx笔记

nginx介绍

nginx担当高性能的web服务器负载均衡器,流量网关,日志网关,日志服务器,贯穿了整个项目

  1. nginx开源版本比较干净,就是一个负载均衡和高性能服务器–开源
  2. nginx-plus东西更多,是nginx升级版本
  3. 将nginx和Lua脚本进行整合–开源
  4. 更安全,更稳定,性能更高–开源

虚拟机的安装

  1. 准备软件:

    1. Vmware
    2. Virtualbox
    3. Parallels
  2. 准备镜像
    1. Centos7.4镜像
  3. 安装与配置操作系统
    1. 配置虚拟机上网
      先配置网卡,修改配置文件


2. 配置静态ip地址

  • 配置静态的ip地址,否则虚拟机会随即生成ip地址,每次连接比较麻烦

Nginx开源版本的安装

  • 首先进行解压缩nginx的tar包

  • 解压完之后进入目录用编译安装的方式进行安装,用configure配置进行安装,如图,他缺少c语言编译

  • 随即安装gcc

  • 安装nginx,挑选位置进行安装
yum install -y gcc
./configure ==prefix=/usr/local/nginx

  • 发现缺少库,随即安装perl库
yum install -y pcre pcre-devel

  • 发现缺少zlib库,安装zlib库
yum install -y zlib zlib-devel

  • 接下来执行:make , makei nstall

启动Nginx

  • 安装成功之后进入安装好的目录** /usr/local/nginx/sbin**
  • 启动nginx
./nginx
  • 快速停止nginx
./nginx -s stop
  • 优雅关闭nginx,在退出前完成已经接受的连接请求
./nginx -s quit
  • 重新加载配置nginx
./nginx-s reload

  • 进入目录之后输入 ./nginx启动nginx之后可以在浏览器输入ip地址,发现进不去,这时候是防火墙的问题

关于防火墙

  • 关闭防火墙
systemctl stop firewalld.service
  • 禁止防火墙开机启动
systemctl disable firewalld.service
  • 放行端口
firewalld-cmd --zone=public --add-port=80/tcp --permanent
  • 查看防火墙状态
systemctl status firewalld
  • 重启防火墙
firewall-cmd --reload
  • 我们关闭防火墙


随后能进去网页

  • 随后关闭开机自启防火墙

安装系统服务

  • 因为我们每次都得自启动太麻烦,所以可以写一个脚本
  1. 创建脚本服务
vi /usr/lib/systemd/system/nginx.service
  1. 服务脚本内容—注意脚本中的路径
[Unit]Description=nginx - web serverAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stopExecQuit=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]WantedBy=multi-user.target
  • 先关闭之前的nginx服务
  1. 重新加载系统服务
systemctl daemon-reload
systemctl reload nginx
  • 通过脚本启动nginx: systemctl start nginx
  • 查看nginx状态: systemctl status nginx
  1. 开机启动
systemctl enable nginx.service

  • reboot关机,在启动试一下nginx是否自启动

目录结构与基本运行原理

  1. 目录
  • sbin中放的是启动nginx的主程序
  • html中的index.html是加载的默认页面
    • 50x.html是报错后的页面
  • logs是记录日志的
    • access.log记录访问日志,记录访问时间,请求具体文件,等等,所以这个日志可能会很大,达到一定程度会报错.
    • error.log记录错误日志
    • nginx.pid记录着893就是nginx的进程pid

  1. 更改默认页

    就是更改index.html

  2. 基本运行原理

客户端发起一个请求,nginx端主目录下/sbin有个nginx可执行文件,将这个文件跑起来,会开启master的主的进程,在主进程中读取配置文件并且再次做一个校验,然后开启子进程worker,主进程不处理业务,子进程解析请求

Nginx基础配置 (最重要的内容)

  1. 最小配置文件
  • 位置: /usr/local/nginx/conf/nginx.conf
  • nginx配置文件大量的注释文件,去掉注释文件之后的简化conf
  1. 核心配置
  2. 虚拟主机配置
#工作的子进程个数,一个cpu内核对应一个进程
worker_processes  1;events {
//每一个worker进程对应的连接数worker_connections  1024;
}
#核心配置
http {#引用其他的配置文件mime.types到主配置文件里,记录所有mime的type,mime的type就是请求的头,头里面记录着返回或者发送的文件是什么类型include       mime.types;#如果mime.types里面没有对应的类型,哪么就用默认流形式default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;#虚拟主机,每一个主机之间互相不干扰server {#监听80端口listen       80;server_name  localhost;  #域名,主机名#http://lsj.cash/xxoo/index.html,location是匹配域名后面的资源  /xxoo/index.htmllocation / {#相对路径root   html;index  index.html index.htm;}#http://lsj.cash/50x.htmlerror_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}}

虚拟主机和域名解析

  • 域名,dns,ip地址的关系
  • 浏览器,nginx与http协议
  • 虚拟主机原理
    • 通过ip地址打到这台服务器上,遵循的http协议,把数据报文返回给nginx,一台主机上可以对外来说一个公网ip就能访问了,但是一台主机不是实时有这么高的访问量,主机的资源会浪费的,我们可以在开一台主机,虚拟主机的话,我们可以把一台主机虚拟出来,本来我们通过域名才能访问到主机,一个域名对应一个ip地址,我们能不能想一下让多个域名对应到一个ip地址上,由nginx服务器端来判断你究竟的是访问哪一个域名,指向不同站点的目录就行,本质上也是访问一些资源,把资源放在不同的目录下,比如说我访问atguigu.com,http请求打过来了,访问的域名是atguigu.com,然后解析成一个ip地址,然后通过这个ip发送一个数据报文给nginx,nginx读到这个请求之后去对应的目录之下找数据资源,找到之后返回给客户端,以上的都是单机
    • 那如果是两个域名同时解析到一个ip地址,那么就会在协议层上也就是http协议上增加一些内容,在请求的报文请求头上,加上要请求的域名是啥,因为请求目标的ip地址是一样的,在一个ip上绑定了两个域名,想要把他们区分开,把资源划分在不同的目录下,那么在请求下,除了ip地址那么把域名也写下来,nginx知道他请求的某一个域名,nginx去特定目录找资源另外一个域名也是,解析到了一个域名去相关目录下找资源
  • 域名解析与泛域名解析实战
    • 我们可以更改本地hosts文件里的域名,第三个就是添加的虚拟机的域名和ip

  • 我们ping一下这个域名看能不能通,这是在本机虚拟的情况下

  • 测试一下能够展示

  • 进行公网域名解析

主机记录填写*这个是泛解析,前缀不管是啥都行

  • 再ping一下公网域名

  • 域名解析相关企业项目实战技术架构

    1. 多用户二级域名
      比如说淘宝或者微博的二级域名系统,商家申请店铺的时候会生成一个网址,lsj.taobao.com,然后nginx通过反向代理到java后台的业务逻辑,通过查询数据库(查询域名前缀lsj),然后返回信息给nginx,然后返回给客户端

  1. 短网址
    肯定有一个短网址运维的系统,用户访问一个短网址 dwz.cn/asdhaksd2456,先提交一个真实地址存到数据库里,再经过系统返回一个短网址,可以用UUID作为key,真实的网址作为value,存到数据库里面,nginx作为请求打到这个系统里面,取到后面的那个字符串进行数据库查询,然后通过redirect转向

  1. httpdns

  • Nginx中的虚拟主机域名配置

    • 进行不同域名地址对应的资源配置

  • 创建好资源之后,就去nginx.conf改配置
#需要注意,端口号+域名是唯一的就行#虚拟主机01server {listen       80;server_name  localhost;
#前面没有/,就是相对路径,相对于nginx的安装目录location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}#虚拟主机02server {listen       80;server_name  video.lovelsj.com;
#没有从根目录开始就是相对路径,从根目录开始就是绝对路径:  /www/video;location / {root   /www/video;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}#虚拟主机03server {listen       80;server_name  pic.lovelsj.com;
#没有从根目录开始就是相对路径,从根目录开始就是绝对路径:  /www/pic;location / {root   /www/pic;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
  • 随后我们访问

    1. www.lovelsj.com

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tNKV0Ful-1656209981199)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f39bf796bebe4b50b4ddd86e79bf6971~tplv-k3u1fbpfcp-watermark.image?)]
2. video.lovelsj.com


3. pic.lovelsjcom

ServerName匹配规则

  • 我们可以再同一servername中匹配多个域名

    • 在server_name后面写域名加一个空格在写一个域名即可
  • 完整匹配
    • 他会从头到尾去匹配,第一个匹配上了就不会往后去匹配上,从虚拟主机01-03
  • 通配符匹配
    • 我们可以在server_name后面加一个 *.lovelsj.com

  • 还有正则表达匹配

反向代理----高性能

  1. 网关、代理和反向代理
    反向代理流程图,后端服务器只能往外传数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FYfZnIvF-1656209981200)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4e5d079e7765475bb8d457306b2f0d12~tplv-k3u1fbpfcp-watermark.image?)]

  1. 反向代理再系统架构中的应用场景
    nginx做请求中转

  2. Nginx的反向代理配置

  • 关键字proxy_pass
    proxy_pass 和root目录是二选一的,只要写了proxy_pass,那么就不会去执行root

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FDID0Sez-1656209981200)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f47195e648474d75b9f91be3792b9a83~tplv-k3u1fbpfcp-watermark.image?)]

  1. 基于反向代理的负载均衡器
    upstream定义一组服务器,这个和server是同一级别的

  1. 负载均衡策略
  • 故障转移
    nginx后面有许多业务服务器,负载均衡就是有一台服务器不可用了,就可以吧故障转移,另一台服务器提供的服务与第一台的服务相同,需要被负载均衡的服务器焦作服务器的集群,全都服务都一样,当用户请求数据的时候,nginx反向代理给集群的每一台服务器这种负载均衡叫做(轮询,但是无法保持会话)

  • 权重(weight)
    比例
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D5VBWjBK-1656209981200)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c219342ee4a9496ab9c86e75c260ca5d~tplv-k3u1fbpfcp-watermark.image?)]

  • down是不参与负载均衡,让他休息一会,让他下线

  • backup是正常使用不用他,因为是备用机,当没有机器用的时候,那么就用备用机

下面是不太常用的负载均衡策略

动静分离

  • 使用动静分离场景
  • 动静分离原理
  • Nginx动静分离配置

URL-Rewrite

Https证书配置

首先http端口是80,https端口是443

  • 不安全的Http协议
  • Https原理
    • CA机构
    • 证书
    • 客户端(浏览器)
    • 服务器端
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。HTTPS和HTTP的区别主要如下:1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
  • 在线证书申请


点击下载


一共两个,一个是pem,一个是key,证书和私钥

  • 证书样例
  • 我的证书安装文件,要把证书和密钥放到conf文件夹里面,然后用相对路径去找,也可以放到别的地方去用绝对路径查找

    我们弄好之后一般重启会报错,那是因为nginx默认没有安装openssl,我们需要重新安装openssl
  1. 先找到当初解压nginx的目录,然后xshell进入该目录输入ls

  1. 随后输入命令安装openssl,注意安装的目录,可能需要依赖openssl
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module#依赖
yum -y install pcre-devel openssl openssl-devel

  1. 随后make,make之后进行备份,退出nginx,覆盖之前nginx,然后查看版本确认一下

  1. 网址输入确认

下周复习并发和多线程

Nginx复习总结学习总结相关推荐

  1. nginx源码学习资源

    nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源. 首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的. 看了nginx源码,发现这是一份完全没 ...

  2. Nginx + Tomcat + Session学习 - ﹎敏ō - 博客园

    Nginx + Tomcat + Session学习 - ﹎敏ō - 博客园 Nginx + Tomcat + Session学习 - ﹎敏ō - 博客园 Nginx + Tomcat + Ses ...

  3. linux下nginx软件的学习

    参考博客 1.nginx是什么 nginx是一个开源的,支持高性能,高并发的web服务和代理服务软件.它是开源的软件. nginx比它大哥apache性能改进许多,nginx占用的系统资源更少,支持更 ...

  4. nginx 源码学习笔记(二十一)—— event 模块(二) ——事件驱动核心ngx_process_events_and_timers

    首先继续回忆下,之前子线程执行操作里面有一个未涉及的内容ngx_process_events_and_timers,今天我们就来研究下这个函数. 本篇文章来自于:http://blog.csdn.ne ...

  5. centos nginx重启_nginx学习笔记

    中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯. 是连接两个独立应用程序或独立系统的软件. web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多个应用上进行逻辑 ...

  6. markdown格式_第1篇:如何将Markdown笔记转入ANKI复习? | 学习骇客

    用技术和心理学改善学习 第128次 摘要:将日常使用的Markdown笔记软件与复习工具ANKI结合起来,于ANKI用户而言可以简化学习过程,于一般的学习者而言可以解决笔记"记而不学&quo ...

  7. nginx的基础学习+实战

    文章目录 一.前言 二.反向代理 三.负载均衡 四.动静分离 参考视频: 尚硅谷Nginx教程(2019发布) 参考链接: Windows下Nginx负载均衡实现 一.前言 Nginx (engine ...

  8. 信息系统项目管理师复习方法学习计划

    2019年下半年信息系统项目管理师部分地方已经开始报名了,而如何备考也自然而然的成为了考友们比较关心的话题,那下面强哥就为大家分享复习方法和学习计划供考友们参考. 一.适合人群 建议大家正常备考,准备 ...

  9. 云开发版高效学习微信小程序源码包含复习资料学习共享护眼精灵等功能

    ☑️ 编号:X0016 ☑️ 品牌:暂无 ☑️ 语言:微信小程序 ☑️ 数据库:无需数据库 ☑️ 类型:微信小程序 ☑️ 规格:小程序 ※ 欢迎关注私信(发消息不限制),领取福利 ※ ☑️ 源码介绍: ...

  10. 整理一些linux命令必须熟练掌握常的命令(复习+扩展学习Linux命令)

    文章目录 说明: 0.Linux后台执行nohup 一.磁盘管理 ①.ls命令 ②.cd命令(切换工作目录) ③. pwd命令 ④.df命令 ⑤.du命令 ⑥.mkdir命令(创建文件夹) ⑦.sta ...

最新文章

  1. 深度学习:Opencv的BlobfromImage如何工作
  2. 一个撇脚的java压缩文件工具类
  3. python一节课多久_第一节课 python简介
  4. asp.net mysql 中文乱码_mysql4导入mysql5中文乱码问题
  5. 【Level 08】U07 Mixed Feelings L6 State of the Nation
  6. 数据库系统概论第五版(笔记)
  7. hashmap的底层
  8. javaweb mysql毕业生管理系统_javaweb高校毕业生就业管理系统, springmvc+mysql
  9. 硕士期间两篇计算机sci二区,我院青年教师陈新华今年连续两篇论文在中科院二区SCI期刊见刊...
  10. OTA,一个万亿市场的风口
  11. 主干(trunk)、分支(branch )、标记(tag) 用法示例 + 图解
  12. 张栋_机器学习的照片 - 微相册
  13. CTF php反序列化总结
  14. http://jackwang1.blog.163.com/blog/static/39534478201182651610201/
  15. 神经网络学习4【误差传递与权重更新】
  16. FIR数字滤波器的设计[Matlab][带源码]
  17. 获取mysql 自增id 和mysql 下一个自增id的方法
  18. Java 字符串数组定义_「string数组」string 数组怎么定义
  19. [CF1534H]Lost Nodes
  20. 实时通信 socketio nio 总结

热门文章

  1. Elasticsearch-Kibana 8.3.2 集群安装搭建-Linux
  2. 算法:工作窃取算法(work-stealing)。
  3. VennDiagram 画文氏图/维恩图/Venn
  4. RHCEansible静态主机清单
  5. android神器,android神器:tasker
  6. laravel seeder factory填充数据
  7. Spring| AOP之 引入(Introductions)
  8. 【离散数学】 MIT 6.042J 笔记 - Lecture 1 Introductions and Proofs
  9. 如何设置添加页眉 计算机知识,怎么设置页眉页脚-轻松解决计算机二级之页眉页脚不再是问题...
  10. thinkphp5.1+uniapp+mysql5.7开发的朋友圈社区程序源码