深度详解什么是Nginx正向代理与反向代理

下面是关于“深度详解什么是Nginx正向代理与反向代理”的完整攻略。

什么是代理

在计算机网络中,代理是一种网络应用程序,它可以作为客户端或服务器的中间人来处理网络请求和响应。代理通常来用于保护客户端隐私,加速访问速度或访问限制资源等。

代理主要有两种类型:正向代理和反向代理。

正向代理

正向代理的工作原理是:客户端向代理服务器发送请求,代理服务器将请求转发给目标服务器并获取响应,再将响应转发给客户端。这样,客户端实际上是通过代理服务器来访问目标服务器的,而不是直接与目标服务器通信。

正向代理的主要用途是在客户端和目标服务器之间建立一个代理服务器,使得客户端可以通过代理服务器访问互联网上没有直接访问权限的资源。例如,在中国使用代理服务器可以访问谷歌或者一些国外的网站。

反向代理

反向代理的工作原理是:客户端向反向代理服务器发送请求,反向代理服务器将请求转发给目标服务器并获取响应,再将响应转发给客户端。这样,在客户端看来,它实际上是在和反向代理服务器对话,而不是直接和目标服务器对话。

反向代理的主要用途是负载均衡、隐藏服务器细节和提高安全性。

Nginx正向代理和反向代理示例

现在,我们以Nginx为例,来说明如何实现正向代理和反向代理。

正向代理示例

首先,我们需要安装Nginx,并配置正向代理。假设Nginx已经安装在我们的服务器上。

第一步

打开 Nginx 配置文件 /etc/nginx/nginx.conf ,加入以下配置(注意缩进):

http {

...

    upstream proxy_server {
        server backend_server_ip:backend_server_port;
    }

    server {
        listen 80;
        server_name www.example.com;
        charset utf-8;

        location / {
            proxy_pass http://proxy_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

...

}

其中, backend_server_ip:backend_server_port 是实际提供服务的服务器。proxy_server 是代理服务器的别名,用户可以自行定义。

第二步

在终端中输入以下命令,重新加载 Nginx 配置文件:

sudo nginx -s reload

第三步

现在,客户端可以通过代理服务器访问目标服务器。例如,在客户端中输入以下命令:

curl -x "http://proxy_server:80" www.google.com

它就会得到谷歌主页的 HTML 代码。

反向代理示例

接下来,我们来实现反向代理的示例。

注意:在反向代理模式中,我们可以使用域名和端口号实现反向代理。

第一步

打开 Nginx 配置文件 /etc/nginx/nginx.conf ,加入以下配置(注意缩进):

http {

...

    upstream backend_server {
        server backend_server_ip1;
        server backend_server_ip2;
    }

    server {
        listen 80;
        server_name www.example.com;
        charset utf-8;

        location / {
            proxy_pass http://backend_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

...

}

其中, backend_server_ip1 和 backend_server_ip2 是实际提供服务的服务器。backend_server 是反向代理服务器的别名,用户可以自行定义。

第二步

在终端中输入以下命令,重新加载 Nginx 配置文件:

sudo nginx -s reload

第三步

现在,客户端可以通过反向代理服务器访问目标服务器。例如,在客户端中输入以下命令:

curl http://www.example.com

它就会得到实际提供服务的服务器的响应。

总结:以上就是关于深度详解 Nginx 正向代理和反向代理的攻略,通过这两个示例,我们可以更加了解代理的原理和用途,以及在 Nginx 中如何实现它们。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深度详解什么是Nginx正向代理与反向代理 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • nginx配置 解决ajax请求跨域问题

    文章来源:http://to-u.xyz/2016/06/30/nginx-cors/ 背景描述 最近在研究RESTful API接口设计,使用的是Nginx,要实现本地http://127.0.0.1跨域访问服务器端http://api.zlzkj.com,并且要支持DELETE PUT等请求。 跨域配置 只需要在Nginx配置文件里加入以下配置,即可开启…

    2023年4月9日
    00
  • Centos7安装nginx

    一、下载、解压 在centos下载依赖库: yum install gcc-c++ yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel   在centos进入到自己要保存nginx压缩包的位置,再到nginx下载页…

    Nginx 2023年4月13日
    00
  • 前后端分离,使用nginx解决跨域问题

    前端:vue.js+nodejs+webpack 后台:SpringBoot 反向代理服务器:nginx 思想:将前端代码打包,让nginx指向静态资源,nginx对后台请求进行转发。 1、将前端代码打包: npm run build 会生成一个dist文件夹。包含一个index.html文件和一个static文件夹,路径以我本地为例: /Users/xxx…

    Nginx 2023年4月11日
    00
  • LNMP编译安装之nginx安装配置方法图文教程

    以下是“LNMP编译安装之nginx安装配置方法图文教程”的完整攻略,包含两条示例说明。 LNMP编译安装之nginx安装配置方法图文教程 安装前准备 在开始安装nginx之前,需要确保已经按照教程安装好了编译环境和所需软件包。 示例一:安装nginx 下载nginx源码包: wget http://nginx.org/download/nginx-1.16…

    Nginx 2023年5月16日
    00
  • 如何配置Nginx的Websocket?

    要配置 Nginx 使用 WebSocket,需要完成以下几个步骤: 安装 Nginx 首先需要在服务器上安装 Nginx。可以通过包管理器获取或者下载源代码进行编译安装。 配置 Nginx 在 Nginx 配置文件中,在 http 块下添加以下内容: map $http_upgrade $connection_upgrade { default upgra…

    Nginx 2023年4月19日
    00
  • nginx实现动静分离的方法示例

    当网站同时存在动态请求和静态请求时,为了提高网站访问速度和性能,通常采用“动静分离”的方式来处理请求。Nginx是一个高性能的Web服务器,通过Nginx实现动静分离是一个不错的选择。下面,我们将详细讲解如何通过Nginx实现动静分离。 实现动静分离的方法 方法一:基于URL的动静分离 Nginx通过匹配URL中的关键词来判断是否为静态请求,进而分别处理。具…

    Nginx 2023年5月16日
    00
  • nginx结合openssl实现https的方法

    下面是详细讲解nginx结合openssl实现https的方法的完整攻略。 准备工作 在开始前,需要准备两个东西: SSL证书 nginx服务器 如果你没有SSL证书,可以使用openssl命令自己生成一个。若已经购买了证书,需要按照购买商的提供的指南进行操作。 生成SSL证书 运行以下命令生成SSL证书: openssl req -newkey rsa:2…

    Nginx 2023年5月16日
    00
  • nginx: [emerg] BIO_new_file(“/etc/nginx/ssl_key/server.crt”) failed (SSL: error:02001002:syste

    Centos 7.5  nginx+web集群配置https报错 报错信息: [root@lb01 conf.d]# nginx -tnginx: [emerg] BIO_new_file(“/etc/nginx/ssl_key/server.crt”) failed (SSL: error:02001002:system library:fopen:No …

    Nginx 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部