nginx-代理服务

news/2024/12/26 18:20:50 标签: 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指令表
语法proxy_pass  URL;
默认值---
位置location块

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

案例

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

proxy_pass http://www.baidu.com;
proxy_pass http://192.168.188.11/;

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

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指令表
语法proxy_set_header  field  value;
位置

proxy_set_header Host $proxy_host;

peoxy_set_header Connection close;

默认值http块,server块,location块
案例

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

被代理服务器配置
server {
    listen 8080;
    server localhost;
    default_type text/plain;
    return 200 $http_username;
}
代理服务器配置
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指令表
语法

proxy_redirect redirect  replacement;

proxy_redirect default;

proxy_redirect off; 

默认值proxy_redirect off;
位置http块,server块,location块
案例

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

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

}
代理服务器配置
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地址和端口号进行配置

服务器配置
主配置文件
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文件配置
<h1>this is '192.168.188.11'</h1>
不使用代理

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

代理服务器配置
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
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
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
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命令来对上面三个服务进行代理,使用户可以访问代理服务器来获取服务器资源

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从而返回数据给客户端


http://www.niftyadmin.cn/n/5800807.html

相关文章

单片机:实现SYN6288语音播报(附带源码)

单片机实现SYN6288语音播报 SYN6288是一款广泛应用于语音合成的IC&#xff0c;可以通过串口与单片机&#xff08;如51系列、STM32等&#xff09;进行通信&#xff0c;实现场景化的语音播报。通过连接外部存储设备&#xff08;如SD卡&#xff09;存储语音文件或直接通过内部语音…

3.银河麒麟V10 离线安装Nginx

1. 下载nginx离线安装包 前往官网下载离线压缩包 2. 下载3个依赖 openssl依赖&#xff0c;前往 官网下载 pcre2依赖下载&#xff0c;前往Git下载 zlib依赖下载&#xff0c;前往Git下载 下载完成后完整的包如下&#xff1a; 如果网速下载不到请使用网盘下载 通过网盘分享的文件…

K8s - openeuler2203SP1安装 K8s + flannel

环境说明 [rootmaster-1 ~]# uname -a Linux master-1 5.10.0-136.12.0.86.oe2203sp1.x86_64 #1 SMP Tue Dec 27 17:50:15 CST 2022 x86_64 x86_64 x86_64 GNU/Linux安装过程 1、安装 containerd 下载 tar 包 # 确保没有使用官方仓库的containerd [rootlocalhost ~]# yum rem…

【计算机视觉】超简单!傅里叶变换的经典案例

Hey小伙伴们&#xff01;今天来给大家分享一个 计算机视觉 中非常经典且重要的技术——傅里叶变换&#xff08;Fourier Transform, FT&#xff09;。傅里叶变换在图像处理、信号分析等领域有着广泛的应用&#xff0c;它可以帮助我们从频域的角度理解图像的特性&#xff0c;进行…

Gmsh有限元网格剖分(Python)---点、直线、平面的移动

Gmsh有限元网格剖分(Python)—点、直线、平面的移动和旋转 最近在学习有限元的网格剖分算法&#xff0c;主要还是要参考老外的开源Gmsh库进行&#xff0c;写一些博客记录下学习过程&#xff0c;方便以后回忆嘞。 Gmsh的官方英文文档可以参考&#xff1a;gmsh.pdf 但咋就说&a…

C语言:指针4(常量指针和指针常量及动态内存分配)

常量指针与指针常量 常量&#xff1a;分为字面量和只读常量&#xff0c;字面量就是我们平时直接操作的量&#xff1a; printf("%d\n",12);/printf("%s\n","hello");只读常量使用关键字 const 修饰&#xff0c;凡是被这个关键字修饰 的变量&…

C语言:指针3(函数指针与指针函数)

函数指针 定义&#xff1a;函数指针本质上是指针&#xff0c;它是函数的指针&#xff08;定义了一个指针变量&#xff0c;变量中存储了函数的地 址&#xff09;。函数都有一个入口地址&#xff0c;所谓指向函数的指针&#xff0c;就是指向函数的入口地址。这里函数名就代 表入…

Python调用Elasticsearch更新数据库

文章目录 Elasticsearch介绍Python调用Elasticsearch更新数据库 Elasticsearch介绍 Elasticsearch是一个基于Lucene的搜索引擎&#xff0c;它提供了一个分布式、多租户能力的全文搜索引擎&#xff0c;具有HTTP web接口和无模式的JSON文档。Elasticsearch是用Java开发的&#x…