当前位置: 首页 > news >正文

Nginx核心服务

一.正向代理

正向代理(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.gzcd 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.confproxy_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服务器

    相关文章:

  1. Typescript学习教程,从入门到精通,TypeScript 面向对象编程指南:抽象类、接口及其应用知识点及案例代码(9)
  2. 论文阅读:Auto-Encoding Variational Bayes
  3. 学习路之uniapp--unipush2.0推送功能--服务端推送消息
  4. 【Python】使用 Python 构建 Weaviate 工具类:实现数据插入、语义搜索、混合检索与集合管理
  5. 服务器安装xfce桌面环境并通过浏览器操控
  6. Vue大数据量前端性能优化策略
  7. 为什么服务器突然变慢?从硬件到软件的排查方法
  8. 【Linux笔记】防火墙firewall与相关实验(iptables、firewall-cmd、firewalld)
  9. 服务器网络配置 netplan一个网口配置两个ip(双ip、辅助ip、别名IP别名)
  10. 每日算法刷题计划Day12 5.21:leetcode不定长滑动窗口求最短/最长3道题,,用时1h40min(有点长了)
  11. SQLMesh 宏操作符详解:@IF 的条件逻辑与高级应用
  12. 使用 Matter.js 创建封闭箱体与里面的小球
  13. Python学习Day1:安装
  14. 数独求解器3.0 增加latex格式读取
  15. 通过TDE透明加密实现SQL Server数据库免改造加密
  16. SQL 数值计算全解析:ABS、CEIL、FLOOR与ROUND函数深度精讲
  17. 红杉资本2025 AI 峰会之Cybersecurity
  18. 一文理解TCP与UDP
  19. [CSS3]百分比布局
  20. 第十三届蓝桥杯国赛PythonA题解
  21. 郑州政府网站建设/seo关键词布局案例
  22. 营销型网站设计文章/seo课程培训机构
  23. 积分商城网站开发/域名收录
  24. 网站全屏视频怎么做/免费网站推广软件
  25. 舆情报告单/seowhy论坛