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

news2024/11/15 17:39:38

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、localhost
    server_name  www.imoocdsp.com;
    # 开启ssl
    ssl     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会话cache
    ssl_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.coloradmin.cn/o/2121800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全测试:全面指南!

引言 随着互联网技术的快速发展,网络安全威胁日益增多。企业不仅需要保护其数据资产免受外部攻击,还需要确保内部系统的安全性。安全测试作为软件开发生命周期中的关键环节,旨在识别潜在的安全漏洞和风险点,从而提高产品的整体安…

Return arguments from function calling with OpenAI API when streaming?

题意:在使用OpenAI API进行流式传输时,如何返回函数调用的参数? 问题背景: Ive made a simple OpenAI API example with function calling. Im only using function calling to format the response, Im not calling multiple fu…

沪农商行半年报“双正增”:分红率提升,业绩增速却放缓明显

《港湾商业观察》施子夫 王璐 虽然上半年业绩增速上有所放缓,但沪农商行(601825.SH)33%的分红率至少对投资者来说无疑是个好消息。 今年上半年(报告期内),沪农商行实现营业收入139.17亿元,同比增长0.23%&#xff1b…

TikTok运营需要的独立IP如何获取?

TikTok作为当下炙手可热的社交媒体平台,吸引了众多个人创作者和企业进驻。在进行TikTok运营时,许多经验丰富的用户都倾向于选择独立IP。那么,TikTok运营为什么需要独立IP?又该如何获取呢?本文将详细为您解答这些问题。…

HivisionIDPhotos

在服务器Ubuntu22.04系统下,HivisionIDPhotos的部署 一、安装环境:ubuntu基本环境配置1.更新包列表:2. 安装GPU驱动程序3.查看显卡信息4.下载并安装 CUDA 12.3 二、安装miniconda环境1. 下载miniconda32. 安装miniconda33. 打开用户环境编辑页…

英文站外链如何建设?

在建设英文站外链时,关键在于高质量和低质量(数量多)链接的合理搭配。几百条外链想提升网站是不现实的,所以数量是绝对的,当然,更重要的是,这些外链能够为你的网站SEO带来实际的提升 GPB外链就是…

Vue学习:计算属性Computed

计算属性可以实时监听 data节点中数据的变化,并 return 一个计算后的新值,供组件渲染 DOM 时使用,计算属性需要以 function 函数的形式声明到组件的 computed 节点中。 计算属性的使用注意点: (1)计算属性…

PDF转换器竟能如此简单?这款工具让无数人为之疯狂,你试过吗?

现在大家都用电脑办公,PDF文件因为不管在哪儿都能打开,而且内容不会乱,所以特别受欢迎。但有时候也挺麻烦的,比如你得改改里面的内容或者转成别的格式。到了2024年,如果你还被PDF文件搞得头疼,那就试试这四…

Cross Explosion

考查找。 线性查找上下左右四个方向看到的第一个的墙的位置复杂度O(n^2)&#xff0c;在Q取到2e5的情况下直接爆掉。 这里应使用二分查找&#xff0c;对某一行、列进行二分&#xff0c;使用set实现墙的位置存储。 #include<bits/stdc.h> using namespace std; #define…

IBM中国研发部裁员:全球化背景下的IT产业变局与应对之道

裁员风波中的思考与机遇 前言了解霍尼韦尔的“东方服务东方”施耐德电气的“中国中心”战略对比与分析 中国信息技术(IT)行业展现出蓬勃发展的前景**政府支持与政策导向****技术创新与应用****市场规模与需求****人才培养与就业**国际化与开放合作总结 前言 如何看待IBM中国研发…

C#--CM+Fody+HCWPF开发组合

CM&#xff1a;Caliburn.Micro(简称CM)一经推出便备受推崇&#xff0c;作为一款MVVM开发模式的经典框架&#xff0c;越来越多的受到wpf开发者的青睐.我们看一下官方的描述&#xff1a;Caliburn是一个为Xaml平台设计的小型但功能强大的框架。Micro实现了各种UI模式&#xff0c;用…

大学生租房平台:SpringBoot技术实现详解

第3章 系统分析 面对即将开发的系统&#xff0c;进行提前的分析是必要的。这也是开发流程中必须有的环节。通常分析系统期间&#xff0c;主要涉及的内容包括系统开发可行性问题&#xff0c;对系统功能和性能的分析等问题。 3.1 可行性分析 在正式对需要建设的项目进行投资前&am…

Gmtracker_深度学习驱动的图匹配多目标跟踪项目启动与算法流程

Gmtracker深度学习驱动的图匹配多目标跟踪项目启动与算法流程 说明&#xff1a;对于Gmtracker多目标跟踪算法中涉及到的QP或者是QAP等一些有关图匹配的问题&#xff0c;不做过多的说明只提供源代码中通过图网络的具体实现细节。 对于配置环境时产生的报错的具体信息&#xff0c…

Unity Apple Vision Pro 开发(八):模型分离与组装

XR 开发者社区链接&#xff1a; SpatialXR社区&#xff1a;完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 课程试看&#xff1a;https://www.bilibili.com/video/BV11b421E74g 课程完整版&#xff0c;答疑仅社区成员可见&#xff0c;可以通过文章开头的链接加入…

调度算法及其性能指标

一、调度算法的评价指标 1.CPU利用率 由于早期的CPU造价极其昂贵&#xff0c;因此人们会希望让CPU尽可能多地工作 CPU利用率:指CPU“忙碌”的时间占总时间的比例。 利用率忙碌的时间/总时间 Eg: 某计算机只支持单道程序&#xff0c;某个作业刚开始需要在CPU上运行5秒&a…

python画图|极坐标中画散点图

python极坐标画图时&#xff0c;不仅可以画实线图&#xff0c;也可以画散点图。 实线图画法如下述链接。 python画图|极坐标画图基础教程-CSDN博客 今天我们一起学习一下散点图画法。 【1】官网教程 首先依然是导航到官网&#xff0c;乖乖学习官网教程&#xff1a; Scatt…

产品3D交互展示是什么?3D可视化有什么优势?

产品3D交互展示是一种通过互联网平台&#xff0c;利用3D技术对产品进行全方位、多角度展示的方式。它允许用户通过旋转、缩放、移动等操作&#xff0c;以更直观、更互动的方式了解产品的外观、结构和细节。这种展示方式不仅提升了用户的参与感和体验感&#xff0c;还增强了产品…

【触想智能】工业一体机在物流领域上的四大应用分析

随着物流业的快速发展&#xff0c;工业一体机在物流领域上的应用越来越普遍。工业一体机是一种高级智能设备&#xff0c;是多种技术的综合应用&#xff0c;包括机械、电子、计算机、通讯等。 在物流行业中&#xff0c;工业一体机可以发挥其先进的技术和功能&#xff0c;提高物流…

重磅资源来袭。快看看有没有你要的那一款!

Java 相关的技能主要包括以下几个方面‌&#xff1a; 资源在末尾 ‌Java编程语言基础‌&#xff1a;这是Java开发的基础&#xff0c;包括熟悉Java的语法、数据类型、控制结构、异常处理、面向对象编程&#xff08;OOP&#xff09;等基本概念。‌Java EE和Spring框架‌&#x…

【算法】模拟退火

一、引言 模拟退火算法&#xff08;Simulated Annealing, SA&#xff09;是一种启发式搜索算法&#xff0c;它通过模拟物理中的退火过程来解决优化问题。这种算法能够跳出局部最优解&#xff0c;寻找全局最优解&#xff0c;特别适用于解决复杂的优化问题。 二、算法原理 模拟退…