Nginx核心服务

news2025/5/22 23:44:56

一.正向代理

正向代理(Forward Proxy)‌是一种位于客户端和原始服务器之间的代理服务器,其主要作用是将客户端的请求转发给目标服务器,并将响应返回给客户端

Nginx 的 正向代理 充当客户端的“中间人”,代表用户访问外部资源并隐藏真实 IP。它是企业内网管控、安全审计与加速访问的核心工具。用于场景一般是:

内网访问控制:限制员工访问特定网站(如社交媒体)

匿名访问:通过代理服务器隐藏用户真实身份。

资源缓存加速:缓存公共资源(如软件包、镜像文件),减少外网带宽消耗

1、编译安装Nginx

1.1、安装支持软件

#关闭防火墙
systemctl stop firewalld

#禁用防火墙
systemctl disable firewalld

#临时关闭内核保护机制
setenforce 0

#永久关闭内核保护机制
vim /etc/sysconfig/selinux

#在配置文件中修改参数为:
SELINUX=disabled

#提供编译安装的环境
dnf -y install gcc zlib-devel pcre-devel openssl-devel

1.2、创建程序用户

useradd -M -s /sbin/nologin nginx

1.3、编译安装 Nginx

#解压
tar zxf nginx-1.26.3_http_proxy.tar.gz

cd nginx-1.26.3

#配置
./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx  \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--add-module=./ngx_http_proxy_connect_module

#编译
make

#编译安装
make install

#做软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

2、Nginx 的运行控制

2.1、检查配置文件

nginx -t

2.2、Nginx的启、停

#开启
nginx

#关闭
nginx -s stop

#查看状态
netstat -anpt | grep nginx

2.3、添加 Nginx 系统服务

#切换目录
cd /lib/systemd/system

#编辑服务文件
vim nginx.service

#编写内容:
[Unit]
Description=cyauhiojpkl67tfyjop0k[ldrtuyfgiuvjnko
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/sbin/nginx
ExecStop=/usr/sbin/nginx -s stop
ExecReload=/usr/local/sbin/nginx -s reload

[Install]
WantedBy=multi-user.targe

备注:
fork 其实本身就是一个进程。
当执行 Execstart 启动 nginx 进程的时候,fork 进程自身以 daemon 模式运行,将 nginx作为一个子进程,并启动起来这个 nginx 的子进程。然后 fork 父进程退出。并将 fork 出的 nginx 子进程作为服务主进程进行跟踪

    2、配置正向代理

    编辑主配置文件添加正向代理相关配置:

    vim /usr/local/nginx/conf/nginx.conf
    
    proxy_connect;
    
    # 允许代理到 80 和 443 端口
    proxy_connect_allow 443 80;
    
    proxy_connect_connect_timeout 10s;
    
    proxy_connect_read_timeout 10s;
    
    proxy_connect_send_timeout 10s;
    
    # 动态协议
    proxy_pass $scheme://$http_host$request_uri;
    proxy_set_header Host $http_host;
    
    # 优化缓冲区
    proxy_buffers 256 4k;
    proxy_max_temp_file_size 0;
    
    # 保持连接
    proxy_http_version 1.1;
    proxy_set_header Connection ""
    

    重启服务并测试

    #查看访问日志
    cat /usr/local/nginx/logs/access.log

    在Linux系统上访问

    curl -x http://192.168.10.101:8080 www.baidu.com

    二、反向代理

    Nginx 的七层(应用层)反向代理基于 HTTP/HTTPS 协议,深度解析应用层内容(如 URL、Header、Cookie),将客户端请求精准转发至后端服务器。作为企业级架构的“智能调度器”,它实现了负载均衡、安全隔离与性能优化的核心能力。

    应用场景
    负载均衡将流量分发至多台后端服务器,避免单点故障
    动静分离静态资源(图片、CSS/JS)由 Nginx 直接响应,动态请求(PHP、API)转发至 Apache/Tomcat
    SSL 终端统一处理 HTTPS 加密/解密,降低后端服务器计算压力
    灰度发布根据请求特征(如 IP、Header)将部分流量导向新版本服务

    Nginx 的四层(网络层)反向代理基于 TCP/UDP 协议,直接转发原始数据流,不解析应用层内容。它专为高性能、低延迟的传输层场景设计,是数据库、游戏服务器等非 HTTP 服务的理想选择。

    应用场景
    数据库代理对外暴露统一端口,内部转发至 MySQL、Redis 集群
    游戏服务器代理 UDP 协议,实现实时数据包负载均衡
    SSH 跳板机通过端口映射安全访问内网服务器
    高可用服务TCP 服务(如 MQTT)的主备切换与健康检查

    反向代理,指的是浏览器/客户端并不知道自己要访问具体哪台目标服务器,只知道去访问代理服务器 ,代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。

    反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的

    1、配置nginx七层代理

    通过配置nginx七层代理实现转发nginx请求至后端的httpd服务,通过该转发也能实现nginx+httpd的动静分离

    1.1、环境安装

    192.168.10.102上操作:

    systemctl stop firewalld
    dnf -y install httpd
    echo "我是102服务器" >/var/www/html/index.html
    systemctl start httpd
    
    

    192.168.10.103上操作:

    systemctl stop firewalld
    dnf -y install httpd
    echo "我是103服务器" >/var/www/html/index.html
    systemctl start httpd

    1.2、配置七层代理

    192.168.10.101上操作:

    #使用upstream定义后端应用服务器的地址池设置
    upstream aaa{
    
    server 192.168.10.102:80;    #后端主机设置
    server 192.168.10.103:80;    #后端主机设置
    
            }
    
    
    #请求转发
    proxy_pass http://aaa; 
    
    proxy_set_header Host $host;
    
    #返回客户端的真实IP
    proxy_set_header X-Real-IP $remote_addr;
    

    location代码块中
    proxy_pass http://aaa;使用 转发请求至后端地址池
    proxy_set_header Host $host;将请求中的Host头部设置为客户端请求的主机名
    proxy_set_header X-Real-IP $remote_addr;将请求中的 X-Real-IP 头部设置为客户端的真实 IP 地址

    1.3、测试

    轮询显示

    2、配置nginx四层代理

    SSH协议是基于TCP协议的,配置nginx的四层代理,实现代理ssh请求至后端服务器,用以登录内网服务器场景

    2.1、配置四层代理

    192.168.10.101上操作:

    stream {                                                                        
        #定义后端地址池    
        upstream ssh_cluster {  
            #设置后端地址和服务端口
            server 192.168.10.102:22;    
            server 192.168.10.103:22; 
        }
    
        server {
            listen 2222;
            proxy_pass ssh_cluster;  
            #连接超时时间
            proxy_connect_timeout 5s;
            #长连接保持时间
            proxy_timeout 1h;         
        }
    }
    

    通过上面的验证发现,通过202的2222端口登录后,实际上是登录到201服务器

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

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

    相关文章

    第22天-Python ttkbootstrap 界面美化指南

    环境安装 pip install ttkbootstrap 示例1:基础主题切换器 import ttkbootstrap as ttk from ttkbootstrap.constants import *def create_theme_switcher():root = ttk.Window(title="主题切换器", themename="cosmo")def change_theme():selected = t…

    Kubernetes控制平面组件:Kubelet详解(七):容器网络接口 CNI

    云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…

    web应用技术第6次课---Apifox的使用

    Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能,接口开发、测试、联调效率,提升 10 倍。最好用的接口文档管理工具,接口自动化测试工具。 第一个问题:为什么需要用Apif…

    Redis队列与Pub/Sub方案全解析:原理、对比与实战性能测试

    一、为什么选择Redis实现消息队列? Redis凭借其内存级操作(微秒级响应)、丰富的数据结构以及持久化能力,成为构建高性能消息队列的热门选择。相比传统消息队列(如Kafka/RabbitMQ),Redis在以下场…

    OBOO鸥柏丨AI数字人触摸屏查询触控人脸识别语音交互一体机上市

    OBOO鸥柏丨AI数字人触摸屏查询触控人脸识别语音交互一体机上市分析 OBOO鸥柏品牌推出的AI数字人触摸屏查询触控人脸识别语音交互一体机,是其在智能交互设备领域的又一创新产品。该一体机整合了触摸屏查询、AI人脸识别、AI声源定位语音麦克风,触控交互以…

    第5天-python饼图绘制

    一、基础饼图绘制(Matplotlib) 1. 环境准备 python 复制 下载 pip install matplotlib numpy 2. 基础饼图代码 python 复制 下载 import matplotlib.pyplot as plt# 数据准备 labels = [1, 2, 3, 4] sizes = [30, 25, 15, 30] # 各部分占比(总和建议100) colors…

    2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛) 解题报告 | 珂学家

    前言 题解 2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)。 vp了下,题目挺好的,难度也适中,但是彻底红温了。 第二题,题意不是那么清晰, M i n ( K 1 , K 2 ) Min(K_1, K_2) Min(K1​,K2​)容易求&#x…

    LabVIEW风机状态实时监测

    在当今电子设备高度集成化的时代,设备散热成为关键问题。许多大型设备机箱常采用多个风机协同散热,确保系统稳定运行。一旦风机出现故障,若不能及时察觉,可能导致设备损坏,造成巨大损失。为满足对机箱内风机状态实时监…

    十一、面向对象底层逻辑-Dubbo过滤器Filter接口

    一、引言:分布式系统中的可观测性与治理基石 在分布式服务调用链路中,如何在服务调用前后植入通用逻辑(如日志记录、权限校验、性能监控等),是构建可观测、可治理系统的关键需求。Dubbo通过Filter接口实现了面向切面编…

    linux安装nginx和前端部署vue项目

    1、打包前端项目 npm run build 执行完后会在根目录下生成一个dist文件夹,这个dist文件夹就是我们后面要部署到nginx的东西。 2、将dist文件夹上传到服务器中 自己建一个目录,上传即可(尽量不要在root目录下,可能涉及权限问题…

    软件设计师“数据流图”真题考点分析——求三连

    数据流图考点分析 1. 考点分值占比与趋势分析 综合知识题分值统计表 年份考题数量分值分值占比考察重点2018111.33%数据流图基本元素2019222.67%数据流图绘制原则2020111.33%数据流图与控制流图的区别2021334.00%数据字典与数据流图的关系2022222.67%分层数据流图的分解原则…

    基于R语言的贝叶斯网络模型实践技术应用:开启科研新视角

    在现代科研领域,变量间的因果关系推断是生态学、环境科学、医学等多学科研究的核心问题。然而,传统的统计学方法往往只能揭示变量间的相关关系,而非因果关系。贝叶斯网络作为一种结合图论与统计学理论的新型模型,不仅能够统合多种…

    【Git】远程操作

    Git 是一个分布式版本控制系统 可以简单理解为,每个人的电脑上都是一个完整的版本库,这样在工作时,就不需要联网 了,因为版本库就在自己的电脑上。 因此, 多个人协作的方式,譬如说甲在自己的电脑上改了文件…

    DeepSpeed简介及加速模型训练

    DeepSpeed是由微软开发的开源深度学习优化框架,专注于大规模模型的高效训练与推理。其核心目标是通过系统级优化技术降低显存占用、提升计算效率,并支持千亿级参数的模型训练。 官网链接:deepspeed 训练代码下载:git代码 一、De…

    openlayer:10点击地图上某些省份利用Overlay实现提示省份名称

    实现点击地图上的省份,在点击经纬度坐标位置附近利用Overlay实现提示框提示相关省份名称。本文介绍了如何通过OpenLayers库实现点击地图上的省份,并在点击的经纬度坐标位置附近显示提示框,提示相关省份名称。首先,定义了两个全局变…

    upload-labs通关笔记-第13关 文件上传之白名单POST法

    目录 一、白名单过滤 二、%00截断 1.截断原理 2、截断条件 &#xff08;1&#xff09;PHP版本 < 5.3.4 &#xff08;2&#xff09;magic_quotes_gpc配置为Off &#xff08;3&#xff09;代码逻辑存在缺陷 三、源码分析 1、代码审计 &#xff08;1&#xff09;文件…

    数据库健康监测器(BHM)实战:如何通过 HTML 报告识别潜在问题

    在数据库运维中,健康监测是保障系统稳定性与性能的关键环节。通过 HTML 报告,开发者可以直观查看数据库的运行状态、资源使用情况与潜在风险。 本文将围绕 数据库健康监测器(Database Health Monitor, BHM) 的核心功能展开分析,结合 Prometheus + Grafana + MySQL Export…

    Oracle 11g 单实例使用+asm修改主机名导致ORA-29701 故障分析

    解决 把服务器名修改为原来的&#xff0c;重启服务器。 故障 建表空间失败。 分析 查看告警日志 ORA-1119 signalled during: create tablespace splex datafile ‘DATA’ size 2000M… Tue May 20 18:04:28 2025 create tablespace splex datafile ‘DATA/option/dataf…

    OpenCV CUDA模块图像过滤------用于创建一个最大值盒式滤波器(Max Box Filter)函数createBoxMaxFilter()

    操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 createBoxMaxFilter()函数创建的是一个 最大值滤波器&#xff08;Maximum Filter&#xff09;&#xff0c;它对图像中每个像素邻域内的像素值取最…

    Redis数据库-消息队列

    一、消息队列介绍 二、基于List结构模拟消息队列 总结&#xff1a; 三、基于PubSub实现消息队列 (1)PubSub介绍 PubSub是publish与subscribe两个单词的缩写&#xff0c;见明知意&#xff0c;PubSub就是发布与订阅的意思。 可以到Redis官网查看通配符的书写规则&#xff1a; …