nginx-代理服务

目录

相关指令

相关模块

安装新模块proxy_pass指令

案例

proxy_set_header指令

案例

被代理服务器配置

代理服务器配置

proxy_redirect指令

案例

服务端配置

代理服务器配置

正向代理

需求分析

环境准备

配置

主机配置

服务器配置

主配置文件

web文件配置

不使用代理

代理服务器配置

使用代理

反向代理

需求分析

环境准备

配置

服务器配置

server1

server2

server3

验证配置

server1

​编辑server2

​编辑

server3

代理服务器配置

测试配置

server1

server2

server3


相关指令

相关模块

以下与代理服务相关的命令均来源于模块ngx_http_proxy_module,使用此模块进行解析,该模块在安装nginx时已经默认添加到nginx中,可以使用 nginx -V 进行查看,是否安装此模块,如果没有安装,可以参考下面文章学习在nginx中添加新的模块的方法。

安装新模块

proxy_pass指令

该指令用来设置被代理服务器的地址,可以是主机名称,ip地址加端口号的形式

| 语法 | proxy_pass URL; |
| 默认值 | --- |

位置 location块
[proxy_pass指令表]

URL为要设置的被代理服务器地址,包含传输协议(http,https//),主机名称或者ip地址加端口号,URI等要素。

案例

使用代理服务器(192.168.188.10)对服务器(192.168.188.11)进行代理

bash 复制代码
proxy_pass http://www.baidu.com;
proxy_pass http://192.168.188.11/;

后面的"/"的影响,以下面配置为例:

bash 复制代码
server {
    listen 80;
    server_name localhost;
    location /server {    
        #使用不加"/"的写法:此时访问的代理服务器地址为:http://192.168.200.146/server;
        proxy_pass http:/192.168.200.146;  
        #使用加上"/"的写法,此时访问的代理服务器地址为:http//192.168.200.146/index;
        proxy_pass http:/192.168.200.146/;  
    }
}

proxy_set_header指令

该指令可以更改nginx服务器接收到客户端请求的请求头信息,然后将新的请求头发送给代理的服务器

| 语法 | proxy_set_header field value; |
| 位置 | proxy_set_header Host $proxy_host; peoxy_set_header Connection close; |

默认值 http块,server块,location块
[proxy_set_header指令表]
案例

改变服务器头信息中的username参数,观察代理服务器的输出情况

被代理服务器配置
bash 复制代码
server {
    listen 8080;
    server localhost;
    default_type text/plain;
    return 200 $http_username;
}
代理服务器配置
bash 复制代码
server {
    listen 8081;
    server localhost;
    location /server {
        #192.168.188.18为被代理服务器的ip地址
        proxy_pass http://192.168.188.10:8080/;
        proxy_set_header username Tom;     
        }
}

proxy_redirect指令

使用该指令来重置头信息中的"Location"和"Refresh"的值

使用该命令的好处:

如果不使用该命令,在我们进行访问代理服务器进行跳转时,网站URL也会进行跳转,将服务器ip地址暴露,为了隐藏服务器,因此使用此命令重置Location和Refresh的值

| 语法 | proxy_redirect redirect replacement; proxy_redirect default; proxy_redirect off; |
| 默认值 | proxy_redirect off; |

位置 http块,server块,location块
[proxy_redirect指令表]
案例

隐藏服务器的ip地址,使服务器对用户来说是透明的

服务端配置
bash 复制代码
server {
    listen 8081;
    server_name localhost;
    if (-f $request_filename) {
        return 302 http://192.168.188.10/;
}

}
代理服务器配置
bash 复制代码
server {
    listen 8080;
    server_name localhost;
    location / {
        proxy_pass http://192.168.188.10:8081;
        proxy_pass http:/192.168.200.146/ http://192.168.200.133/;

    }
}

正向代理

需求分析

在不使用代理时,客户端直接访问服务器,在使用代理服务器是,客户端通过访问代理服务器来获取服务器的资源。此时,服务端对客户端来说不是透明存在的。正向代理需要在客户端上进行代理服务器的配置

环境准备

默认web服务使用80端口

ip地址 角色
192.168.188.1 客户端
192.168.188.10 代理服务器
192.168.188.11 服务器
[正向代理资源需求表]

配置

主机配置

在本地主机启用网络代理功能,将代理服务器的ip地址和端口号进行配置

服务器配置
主配置文件
bash 复制代码
server {
    listen 80;
    server_name localhost;   
    error_log /var/log/nginx/www.qfedu.com-error_log error;  
    location / {
        access_log  /var/log/nginx/server.log server;
        root /usr/share/nginx/html;
        index a.html;
    }
}
web文件配置
bash 复制代码
<h1>this is '192.168.188.11'</h1>
不使用代理

使用主机进行访问时,服务器上面的日志显示的客户端为192.168.188.1,显示的服务端为192.168.188.11

代理服务器配置
bash 复制代码
server {
    listen       80;
    resolver 8.8.8.8;
    server_name  localhost;

    location / {
        proxy_pass http://$host$request_uri;
    }
使用代理

使用代理服务器来进行对服务器的访

反向代理

需求分析

Nginx反向代理是一种网络架构技术,通过该技术,Nginx服务器充当客户端和内部服务器之间的中介。客户端发送的请求首先被Nginx接收,然后Nginx根据配置规则将这些请求转发给内部网络中的其他服务器。服务器处理完请求后,将响应发送回Nginx,Nginx再将这个响应返回给原始客户端。

环境准备

|---------------------|-------|---------|
| 服务地址 | 角色 | 服务名 |
| 192.168.188.1 | 客户 | --- |
| 192.168.188.10 | 代理服务器 | --- |
| 192.168.188.11:8081 | 服务器 | server1 |
| 192.168.188.11:8082 | 服务器 | server2 |
| 192.168.188.11:8083 | 服务器 | server3 |
[反向代理准备表]

此时用192.168.188.11的三个端口来模拟三个不同的服务,用户通过访问代理服务器,代理服务器将用户的访问请求发送给服务器,再由服务器返回信息给代理,最后由代理服务器将资源返还给客户端。此时,三个服务为不同服务,后面三个服务相同时,即为nginx的负载均衡配置,后再后面进行讲解

配置

服务器配置

在192.168.188.11的三个端口8081-8083上面配置相关服务,并自定义web页面和日志信息,便于进行验证

server1
bash 复制代码
server {
    listen 8081;
    server_name 192.168.188.11;

    location / {
        access_log  /var/log/nginx/server1.log server;
        root /usr/share/nginx/html;
        index server1.html;
    }
}
server2
bash 复制代码
server {
    listen 8082;
    server_name 192.168.188.11;

    location / {
        access_log  /var/log/nginx/server2.log server;
        root /usr/share/nginx/html;
        index server2.html;
    }
}
server3
bash 复制代码
server {
    listen 8083;
    server_name 192.168.188.11;

    location / {
        access_log  /var/log/nginx/server3.log server;
        root /usr/share/nginx/html;
        index server3.html;
    }
}
验证配置
server1
server2
server3
代理服务器配置

在代理服务器192.168.188.10上面使用proxy_pass命令来对上面三个服务进行代理,使用户可以访问代理服务器来获取服务器资源

bash 复制代码
server {
    listen       80;

    server_name  localhost;

    location /server1 {
        proxy_pass http://192.168.188.11:8081/;
        }
    location /server2 {
        proxy_pass http://192.168.188.11:8082/;
        }
    location /server3 {
        proxy_pass http://192.168.188.11:8083/;
        }
}
测试配置
server1

此时,使用客户端192.168.188.1来访问代理服务器192.168.188.10下的server1,从server1的日志可以看出,代理服务器去访问服务器server1从而返回数据给客户端

server2

此时,使用客户端192.168.188.1来访问代理服务器192.168.188.10下的server2,从server2的日志可以看出,代理服务器去访问服务器server2从而返回数据给客户端

server3

此时,使用客户端192.168.188.1来访问代理服务器192.168.188.10下的server3,从server3的日志可以看出,代理服务器去访问服务器server3从而返回数据给客户端

相关推荐
青瓦梦滋10 分钟前
【在线五子棋对战】session
服务器·网络·网络协议
集智飞行1 小时前
解决mavros2 ros2版本cpu占用高的问题
java·服务器·前端
Java后端的Ai之路1 小时前
昇腾NPU显存管理避坑指南:从npu-smi输出精准识别空闲卡的底层逻辑与实战
服务器·网络·数据库·npu·大模型服务
YH行业报告分析2 小时前
2026电缆铺设设备市场:自动化敷设与电网升级驱动增长
运维·自动化
ajassi20003 小时前
AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南
运维·服务器·人工智能·ai·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎3 小时前
linux 进程信号(下)
linux·运维·服务器
Mikko73 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
蓝胖的四次元口袋3 小时前
Jenkins知识梳理(2)
运维·jenkins
yumgpkpm3 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
Liuqy-053 小时前
特殊进程——孤儿、僵尸、守护进程
linux·运维·服务器