Nginx核心服务

一.正向代理

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

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

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

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

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

1、编译安装Nginx

1.1、安装支持软件

bash 复制代码
#关闭防火墙
systemctl stop firewalld

#禁用防火墙
systemctl disable firewalld

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

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

#在配置文件中修改参数为:
SELINUX=disabled
bash 复制代码
#提供编译安装的环境
dnf -y install gcc zlib-devel pcre-devel openssl-devel

1.2、创建程序用户

bash 复制代码
useradd -M -s /sbin/nologin nginx

1.3、编译安装 Nginx

bash 复制代码
#解压
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、检查配置文件

bash 复制代码
nginx -t

2.2、Nginx的启、停

bash 复制代码
#开启
nginx

#关闭
nginx -s stop

#查看状态
netstat -anpt | grep nginx

2.3、添加 Nginx 系统服务

bash 复制代码
#切换目录
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、配置正向代理

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

bash 复制代码
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 ""

重启服务并测试

bash 复制代码
#查看访问日志
cat /usr/local/nginx/logs/access.log

在Linux系统上访问

bash 复制代码
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上操作:

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

192.168.10.103上操作:

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

1.2、配置七层代理

192.168.10.101上操作:

bash 复制代码
#使用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;

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

1.3、测试

轮询显示

2、配置nginx四层代理

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

2.1、配置四层代理

192.168.10.101上操作:

bash 复制代码
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服务器

相关推荐
一心0922 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上2 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
你想考研啊3 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins
代码老y3 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
典学长编程4 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
DuelCode4 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
你想考研啊6 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins
Code blocks6 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins
饥饿的半导体7 小时前
Linux快速入门
linux·运维
还是奇怪9 小时前
Linux - 安全排查 2
linux·运维·安全