Nginx之日志切割,正反代理,HTTPS配置

1 nginx日志切割

1.1 日志配置

./configure --prefix=path指定的path中切换进去,找到log文件夹,进去后找到都是对应的日志文件
在这里插入图片描述
其中的nginx.pid是当前nginx的进程号,当使用ps -ef | grep nginx获得就是这个nginx.pid的值

nginx.conf中定义的日志格式如下:

#定义日志main 的格式
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的地址
access_log  logs/access.log  main;

局部日志:在每个server中都配置单独的日志文件
全局日志:在http那里配置的是全局日志

1.2 日志切分

第一:如何实现日志切分,编写shell脚本
第二:定时任务对脚本进行调度:crontab -e

1.2.1 切分日志的shell脚本

#!/bin/sh
BASE_DIR=/usr/local/nginx
BASE_FILE_NAME=access.log
CURRENT_PATH=$BASE_DIR/logs
BAK_PATH=$BASE_DIR/datalogs
CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME
#假设是每分钟都要备份一次的
BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`
BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME
echo $BAK_FILE
$BASE_DIR/sbin/nginx -s stop
mv $CURRENT_FILE $BAK_FILE
$BASE_DIR/sbin/nginx

1.2.2 定时任务调度

执行crontab -e后:

*/1 * * * * sh /usr/local/nginx/sbin/log.sh

crontab语法 :
crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用-u user的话,就是表示设定自己的时程表。
crontab参数 :

  • -e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 VI
  • -r [UserName]: 删除目前的时程表
  • -l [UserName]: 列出目前的时程表
  • -v [UserName]:列出用户cron作业的状态

crontab时程表的格式如下 :

  • f1 f2 f3 f4 f5 program
  • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天,program 表示要执行的程式
  • f1 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
  • f1a-b时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2a-b 时表示从第 a 到第 b 小时都要执行,其余类推
  • f1*/n 时表示每 n 分钟个时间间隔执行一次,f2*/n表示每 n 小时个时间间隔执行一次,其余类推
  • f1a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推

注意:新创建的 cron 任务,不会马上执行,至少要过2分钟后才可以,当然你可以重启 cron 来马上执行

2 正向与反向代理

2.1 定义

2.1.1 正向代理(Forward Proxy)

一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。
关于正向代理的概念如下:
正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。如下图
在这里插入图片描述
从上面的概念中,我们看出,文中所谓的正向代理就是代理服务器替代访问方【用户A】去访问目标服务器【服务器B】
这就是正向代理的意义所在。而为什么要用代理服务器去代替访问方【用户A】去访问服务器B呢?这就要从代理服务器使用的意义说起。

使用正向代理服务器作用主要有以下几点:

  1. 访问本无法访问的服务器B
    在这里插入图片描述
    我们抛除复杂的网络路由情节来看上图,假设图中路由器从左到右命名为R1,R2
    假设最初用户A要访问服务器B需要经过R1和R2路由器这样一个路由节点,如果路由器R1或者路由器R2发生故障,那么就无法访问服务器B了。但是如果用户A让代理服务器Z去代替自己访问服务器B,由于代理服务器Z没有在路由器R1或R2节点中,而是通过其它的路由节点访问服务器B,那么用户A就可以得到服务器B的数据了。
    现实中的例子就是"Over the wall"。不过自从VPN技术被广泛应用外,"Over the wall"不但使用了传统的正向代理技术,有的还使用了VPN技术。
  2. 加速访问服务器B
    这种说法目前不像以前那么流行了,主要是带宽流量的飞速发展。早期的正向代理中,很多人使用正向代理就是提速。还是如上图
    假设用户A到服务器B,经过R1路由器和R2路由器,而R1到R2路由器的链路是一个低带宽链路。而用户A到代理服务器Z,从代理服务器Z到服务器B都是高带宽链路。那么很显然就可以加速访问服务器B了
  3. Cache作用
    Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了Cache(缓存)技术。还如上图所示,如果在用户A访问服务器B某数据J之前,已经有人通过代理服务器Z访问过服务器B上得数据J,那么代理服务器Z会把数据J保存一段时间,如果有人正好取该数据J,那么代理服务器Z不再访问服务器B,而把缓存的数据J直接发给用户A。这一技术在Cache中术语就叫Cache命中。如果有更多的像用户A的用户来访问代理服务器Z,那么这些用户都可以直接从代理服务器Z中取得数据J,而不用千里迢迢的去服务器B下载数据了。
  4. 客户端访问授权
    这方面的内容现今使用的还是比较多的,例如一些公司采用ISA SERVER做为正向代理服务器来授权用户是否有权限访问互联网
    在这里插入图片描述
    上图防火墙作为网关,用来过滤外网对其的访问。假设用户A和用户B都设置了代理服务器,用户A允许访问互联网,而用户B不允许访问互联网(这个在代理服务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器B,而用户B因为没有被代理服务器Z授权,所以访问服务器B时,数据包会被直接丢弃。
  5. 隐藏访问者的行踪
    如下图所示,我们可以看出服务器B并不知道访问自己的实际是用户A,因为代理服务器Z代替用户A去直接与服务器B进行交互。如果代理服务器Z被用户A完全控制(或不完全控制),会惯以“肉鸡”术语称呼。
    在这里插入图片描述

我们总结一下:
正向代理是一个位于客户端原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。

2.1.2 反向代理(reverse proxy)

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

使用反向代理服务器的作用如下:

  1. 保护和隐藏原始资源服务器
    在这里插入图片描述
    用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。
  2. 负载均衡
    如下所示:
    在这里插入图片描述
    当反向代理服务器不止一个的时候,我们甚至可以把它们做成集群,当更多的用户访问资源服务器B的时候,让不同的代理服务器Z(x)去应答不同的用户,然后发送不同用户需要的资源。
    当然反向代理服务器像正向代理服务器一样拥有CACHE的作用,它可以缓存原始资源服务器B的资源,而不是每次都要向原始资源服务器B请求数据,特别是一些静态的数据,比如图片和文件,如果这些反向代理服务器能够做到和用户X来自同一个网络,那么用户X访问反向代理服务器X,就会得到很高质量的速度。这正是CDN技术的核心
    在这里插入图片描述

反向代理结论与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
基本上,网上做正反向代理的程序很多,能做正向代理的软件大部分也可以做反向代理。开源软件中最流行的就是squid,既可以做正向代理,也有很多人用来做反向代理的前端服务器

2.1.3 透明代理

如果把正向代理反向代理透明代理按照人类血缘关系来划分的话。那么正向代理透明代理是很明显堂亲关系,而正向代理和反向代理就是表亲关系了
透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了
透明代理实践的例子就是时下很多公司使用的行为管理软件
在这里插入图片描述

用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户A或B,如上图,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据

2.2 正反代理区别

  • 位置不同
    正向代理:架设在客户端与目标主机之间
    反向代理:架设在服务器端
  • 代理对象不同
    正向代理:代理客户端,服务器不知道实际发起请求的客户端
    反向代理:代理服务器端,客户端不知道实际提供服务的服务端
    类似于在前端和后端服务之间的中介,中间倒了一把手

2.3 配置反向代理

2.3.1 只获得代理ip

找到conf/nginx.conf文件,在相应的server中添加关键字proxy_pass ,这样可以隐藏web端访问地址,而后端服务获得的是代理后的nginxip地址

# 把任何后缀为jsp的都用https://192.168.1.2:8080地址为代理
location ~ \.jsp$ {   # \.中的\是转义点符号proxy_pass https://192.168.1.2:8080;
}

2.3.2 获得客户端真实ip

如果想让后端得到真正的web端地址添加如下:

# nginx的配置如下
location ~ \.jsp$ {   #proxy_set_header 是把正确ip放到请求头中 X-real-ip是自定义的变量名proxy_set_header X-real-ip $remote_addr;proxy_pass http://192.168.1.2:8080;
}# 后端配置如下,就可以得到真正的ip
request.getHeader("X-real-ip");

3 HTTPS配置

3.1 检查环境

查看 nginx 是否安装 http_ssl_module 模块
nginxsbin目录下执行.nginx -V来查看

nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix=/home/software/nginx-1.18.0

如果出现 configure arguments:--with-http_ssl_module, 则已安装,否则需要安装

3.2 安装SSL模块

./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module

再次验证,执行.nginx -V
在这里插入图片描述

3.3 配置HTTPS

ssl证书 *.crt 和 私钥 *.key 拷贝到/home/software/nginx-1.18.0/conf目录中
新增 server 监听 443 端口:

# ----------HTTPS配置-----------
server {# 监听HTTPS默认的443端口  listen       443;# 监听 配置的项目的域名 访问部署了nginx那台服务器的域名、ip、localhostserver_name  www.imoocdsp.com;# 开启sslssl     on;# 输入域名后,首页文件所在的目录  root html;  # 配置首页的文件名  index index.html index.htm index.jsp index.ftl; # 配置ssl证书ssl_certificate      1_www.imoocdsp.com_bundle.crt;# 配置证书秘钥ssl_certificate_key  2_www.imoocdsp.com.key;# ssl会话cachessl_session_cache    shared:SSL:1m;# 停止通信时,加密会话的有效期,在该时间段内不需要重新交换密钥 ssl_session_timeout  5m;# 配置加密套件,写法遵循 openssl 标准,服务器支持的TLS版本  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;# TLS握手时,服务器采用的密码套件ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;# 开启由服务器决定采用的密码套件ssl_prefer_server_ciphers on;location / {proxy_pass http://tomcats/;index  index.html index.htm;}
}# ---------HTTP请求转HTTPS-------------  
server {  # 监听HTTP默认的80端口  listen 80;  # 如果80端口出现访问该域名的请求  server_name www.xxx.com;  # 将请求改写为HTTPS(这里写你配置了HTTPS的域名)  rewrite ^(.*)$ https://www.xxx.com;  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/420673.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞芯微RK3566鸿蒙开发板OpenHarmony标准系统应用兼容性测试指导

本文OpenHarmony标准系统应用兼容性测试指导,适用鸿蒙系统软件开发测试的新手入门学习课程。设备为触觉智能的瑞芯微RK3566开发板,型号Purple Pi OH。是Laval官方社区主荐的一款鸿蒙开发主板。支持Openharmony、安卓Android、Linux的Debian、Ubuntu系统。…

【Flutter】Flutter安装和配置(mac)

1、准备工作 升级Macos系统为最新系统安装最新的Xcode电脑上面需要安装brew https://brew.sh/安装chrome浏览器(开发web用) 2.、下载flutter https://docs.flutter.dev/release/archive?tabmacos 大家网页后,选择对应的版本【Tips&#x…

【STM32 HAL库】IIC通信与CubeMX配置

【STM32 HAL库】IIC通信与CubeMX配置 前言理论IIC总线时序图IIC写数据IIC读数据 应用CubeMX配置应用示例AHT20初始化初始化函数读取说明读取函数 前言 本文为笔者学习 IIC 通信的总结,基于keysking的视频内容,如有错误,欢迎指正 理论 IIC总…

[网络]从零开始的计算机网络基础知识讲解

一、本次教程的目的 本次教程我只会带大叫了解网络的基础知识,了解网络请求的基本原理,为后面文章中可能会用到网络知识做铺垫。本次我们只会接触到网络相关的应用层,并不涉及协议的具体实现和数据转发的规则。也就是说,这篇教程是…

第四届长城杯部分wp

还是太菜了,要经常练了 1.BrickGame 读源码可以看到时间的值是由js设定的,所以控制台将timeleft的时间改成999999 通过游戏就可以得到flag 2.SQLUP 一道文件上传的题目,在登陆页面我用admin和1登陆成功了,但是按照正常的应该是…

Android 语言国际化三步

1.罗列: 可以多罗列几个 不需要全部实现 res下创建这个文件:locale-config <locale-config xmlns:android"http://schemas.android.com/apk/res/android"><locale android:name"zh" /><locale android:name"en" /><lo…

Proteus仿真综合实例(1)

分享一些基于Proteus的仿真实例&#xff0c;供大家学习参考。 1、51单片机230个Proteus仿真实例 包含基于51单片机的230个仿真实例&#xff0c;涉及定时器、中断、LCD显示、DS18B20温度测量、DS1621温度测量、PWM生成等充足电路模型案例。 2、51交通灯 模拟实现基于51单片机…

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688&#xff0c;功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算&#xff0c;可支持 16 路高清视频实时分析&#xff0c;灵活应对图像、语音、自…

灭火器目标检测数据集 3700张 灭火器 带标注 voc yolo

数据集名称&#xff1a; 灭火器目标检测数据集 数据集规模&#xff1a; 图像数量&#xff1a;3700张标注类型&#xff1a;灭火器检测格式兼容性&#xff1a;支持VOC和YOLO标注格式 数据集内容&#xff1a; 该数据集旨在用于训练和评估计算机视觉模型&#xff0c;特别是针对灭…

7个最佳实践的潜在客户捕获登录页面案例

什么是线索捕获页面&#xff1f; 线索捕获页面是一个着陆页&#xff0c;它向潜在客户提供某种回报以换取他们的电子邮箱地址或其他信息。任何带表单的页面&#xff0c;包括电子书下载页面、演示请求页面或新闻通讯注册页面&#xff0c;都可以视为线索捕获页面。 与您网站上的…

九盾叉车U型区域警示灯,高效照明和安全警示

叉车运作的环境比较复杂&#xff0c;在方便人们物流运输的同时也存在着很大的安全隐患&#xff0c;特别是叉车碰撞人的事故发生率很高&#xff0c;那我们该怎么在减少成本的同时又能避免碰撞事故的发生呢&#xff1f; 九盾叉车U型区域警示灯&#xff0c;仅需一盏灯安装在叉车尾…

ElasticSearch的DSL查询④(DSL查询、RestClient的DSL查询)

目录 一、DSL查询 1.1 快熟入门 1.2 叶子查询 1.2.1 全文检索查询 1&#xff09;match查询 2&#xff09;multi_match查询 1.2.2 精确查询 1&#xff09;term查询 2&#xff09;range查询 3&#xff09;ids查询 1.3 复合查询 1.3.1 bool查询 1.3.2 算分函数查询 …

AI对未来教育领域的改变!如何使用ChatGPT,一个高效提问的指令构建模型,通过ChatGPT有效提高学习效率

AI 到底有多厉害&#xff0c;要取决于你自己有多厉害。ChatGPT 是一种生成性 AI&#xff0c;生成性的意思就是它会创造内容&#xff0c;但发挥到什么程度&#xff0c;完全取决于你将如何使用。 ChatGPT 虽然以 Chat 开头&#xff0c;但是如果我们只把它当成一个像 QQ 一样的聊…

记录类(record(java14开始))

1.不变类 a.使用final修饰class类&#xff0c;无法派生子类。 b.每个字段使用final修饰&#xff0c;保证创建实例后无法修改任何字段。 2.record关键字 a.java14后用此关键字定义不变类。 b.编译器自动编译为使用final修饰的类和每个字段&…

一键快速制作和印刷样本册,推荐一个优质网站:FLBOOK

​在当前的数字化时代&#xff0c;样本册的制作和印刷已经不再是一件复杂的事情。为了满足广大用户的需求&#xff0c;越来越多的在线制作平台应运而生。今天&#xff0c;我要向大家推荐一个优质网站——FLBOOK&#xff0c;它可以帮助您快速制作和印刷样本册。 FLBOOK是一个在线…

走进低代码报表开发(二):高效报表设计新利器

在前面的文章中&#xff0c;我们已经详细介绍了勤研低代码开发平台的报表数据源可视化设计&#xff0c;接下来&#xff0c;让我们一起来继续了解勤研低代码平台的报表设计&#xff0c;在当今数字化快速发展的时代&#xff0c;高效便捷的开发工具对于企业和开发者来说至关重要。…

开关电源综合测试平台自动生成报告,智能分析电源测试参数

在电源模块的检测过程中&#xff0c;数据的准确性和分析效率至关重要&#xff0c;开关电源综合测试平台的数据报告和数据分析功能为企业的电源测试带来了便利。 NSAT-8000开关电源综合测试平台是集自动化测试与数据收集分析于一体的综合测试软件&#xff0c;打破了传统测试系统…

Java数组的定义及遍历

数组的声明 长度不能超过定义的长度。超过则会报错通过下标来访问 数组的遍历 最常用最简单的方法是增强for循环。

Django 如何全局捕获异常和DEBUG

DEBUG 默认&#xff1a;False 一个开启、关闭调试模式的布尔值。 永远不要在 DEBUG 开启的情况下将网站部署到生产中。 调试模式的主要功能之一是显示详细的错误页面。如果你的应用程序在 DEBUG 为 True 时引发了异常&#xff0c;Django 会显示一个详细的回溯&#xff0c;包…

mfc140u.dll文件错误的相关修复方法,4种方法修复mfc140u.dll

当面对基于Microsoft Visual C开发的应用程序出现启动或运行失败时&#xff0c;mfc140u.dll文件错误往往是罪魁祸首之一。这个动态链接库&#xff08;DLL&#xff09;文件对于许多Windows软件来说是必不可少的&#xff0c;因为它包含了重要的编程代码和数据。如果发现此文件损坏…