Nginx 代理与 Proxy 插件整合的最佳实践

推荐一个AI网站,免费使用豆包AI模型,快去白嫖👉海鲸AI

写在前面

本文将介绍 Nginx 的正向代理配置以及如何与 Proxy 插件进行整合。正向代理是一种代理服务器,它代表客户端向目标服务器发送请求,并将响应返回给客户端。Proxy 插件可以增强 Nginx 的代理功能,提供更多的特性和灵活性。

一、概述

正向代理是一种网络代理技术,它允许客户端通过代理服务器访问目标服务器。在正向代理中,客户端与代理服务器建立连接,并将请求发送给代理服务器。代理服务器接收到请求后,代表客户端向目标服务器发送请求,并将目标服务器的响应返回给客户端。

Proxy 插件是 Nginx 的一个扩展模块,它提供了更多的代理功能和特性。通过整合 Proxy 插件,Nginx 可以支持更多的协议和功能,例如 HTTP/HTTPS、FTP、SMTP 等。

二、正向代理配置

2.1、配置

以下是一个基本的 Nginx 正向代理配置示例:

server {listen       80;server_name  proxy.example.com;location / {proxy_pass http://target.example.com/;}
}

在上述配置中,我们创建了一个名为 proxy.example.com 的虚拟服务器,并监听 80 端口。location / 块指定了所有请求都将被代理到 http://target.example.com/

2.2、验证

要验证正向代理是否正常工作,可以使用以下步骤:

  1. 在客户端的浏览器中输入 proxy.example.com
  2. 浏览器将向 Nginx 代理服务器发送请求。
  3. Nginx 代理服务器将请求转发到 target.example.com
  4. target.example.com 将响应返回给 Nginx 代理服务器。
  5. Nginx 代理服务器将响应返回给客户端的浏览器。

如果一切正常,你应该能够在浏览器中看到 target.example.com 的内容。

三、使用插件实现 HTTP/HTTPS 正向代理

要使用 Proxy 插件实现 HTTP/HTTPS 正向代理,你需要安装并配置相应的插件。以下是一个基本的示例:

  1. 安装 Proxy 插件。
  2. 在 Nginx 配置文件中添加以下内容:
server {listen       80;server_name  proxy.example.com;location / {proxy_pass http://target.example.com/;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;}location ~ /.well-known {root /var/www/html;}
}

在上述配置中,我们添加了 proxy_set_header 指令来设置请求头,以便目标服务器能够正确识别客户端的真实 IP 地址和主机名。

四、在 CentOS 7 上整合 Proxy 插件

4.1、环境准备

在 CentOS 7 上整合 Proxy 插件,你需要确保以下环境已经准备好:

  1. CentOS 7 系统。
  2. Nginx 已经安装。
  3. Proxy 插件已经安装。

4.2、配置 Nginx

在 CentOS 7 上配置 Nginx,你需要编辑 /etc/nginx/nginx.conf 文件,并添加以下内容:

http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;upstream backend {server backend1.example.com;server backend2.example.com;}server {listen       80;server_name  proxy.example.com;location / {proxy_pass http://backend;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;}location ~ /.well-known {root /var/www/html;}}
}

在上述配置中,我们创建了一个名为 backend 的上游服务器组,并指定了两个后端服务器 backend1.example.combackend2.example.com。然后,我们创建了一个名为 proxy.example.com 的虚拟服务器,并将请求代理到 backend 上游服务器组。

4.3、编译 Nginx

在 CentOS 7 上编译 Nginx,你需要执行以下步骤:

  1. 解压 Nginx 源代码包。
  2. 进入 Nginx 源代码目录。
  3. 执行 configure 命令,指定编译选项。
  4. 执行 make 命令,编译 Nginx。
  5. 执行 make install 命令,安装 Nginx。

4.4、测试

在 CentOS 7 上测试 Nginx,你需要执行以下步骤:

  1. 启动 Nginx 服务。
  2. 在客户端的浏览器中输入 proxy.example.com
  3. 浏览器将向 Nginx 代理服务器发送请求。
  4. Nginx 代理服务器将请求转发到 backend 上游服务器组。
  5. backend 上游服务器组将响应返回给 Nginx 代理服务器。
  6. Nginx 代理服务器将响应返回给客户端的浏览器。

如果一切正常,你应该能够在浏览器中看到后端服务器的内容。

五、在 Windows 上编译 Nginx 并整合 Proxy 插件

5.1、环境准备

在 Windows 上编译 Nginx 并整合 Proxy 插件,你需要确保以下环境已经准备好:

  1. Windows 系统。
  2. Nginx 已经安装。
  3. Proxy 插件已经安装。

5.2、配置 Nginx

在 Windows 上配置 Nginx,你需要编辑 nginx.conf 文件,并添加以下内容:

http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;upstream backend {server backend1.example.com;server backend2.example.com;}server {listen       80;server_name  proxy.example.com;location / {proxy_pass http://backend;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;}location ~ /.well-known {root html;}}
}

在上述配置中,我们创建了一个名为 backend 的上游服务器组,并指定了两个后端服务器 backend1.example.combackend2.example.com。然后,我们创建了一个名为 proxy.example.com 的虚拟服务器,并将请求代理到 backend 上游服务器组。

5.3、编译 Nginx

在 Windows 上编译 Nginx,你需要执行以下步骤:

  1. 解压 Nginx 源代码包。
  2. 进入 Nginx 源代码目录。
  3. 执行 configure 命令,指定编译选项。
  4. 执行 make 命令,编译 Nginx。
  5. 执行 make install 命令,安装 Nginx。

5.4、创建完整 Nginx

在 Windows 上创建完整 Nginx,你需要执行以下步骤:

  1. 复制 Nginx 可执行文件到一个新的目录。
  2. 复制 nginx.conf 文件到同一个目录。
  3. 复制所有的 Nginx 模块到同一个目录。
  4. 复制所有的 Nginx 依赖库到同一个目录。

5.5、测试

在 Windows 上测试 Nginx,你需要执行以下步骤:

  1. 启动 Nginx 服务。
  2. 在客户端的浏览器中输入 proxy.example.com
  3. 浏览器将向 Nginx 代理服务器发送请求。
  4. Nginx 代理服务器将请求转发到 backend 上游服务器组。
  5. backend 上游服务器组将响应返回给 Nginx 代理服务器。
  6. Nginx 代理服务器将响应返回给客户端的浏览器。

如果一切正常,你应该能够在浏览器中看到后端服务器的内容。

六、整合 Proxy 插件并创建 Nginx Docker 镜像

6.1、编写 Dockerfile

在项目根目录下创建一个名为 Dockerfile 的文件,内容如下:

FROM nginx:latestRUN apt-get update && apt-get install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-devWORKDIR /usr/src/nginx-1.21.6/COPY conf /etc/nginx/conf.d/RUN./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=/usr/src/nginx-1.21.6/modules/nginx-auth-ldap-module-master --add-module=/usr/src/nginx-1.21.6/modules/ngx_http_proxy_connect_module-masterRUN make && make installCMD ["nginx", "-g", "daemon off;"]

在这个文件中,我们使用了官方的 nginx:latest 镜像作为基础镜像。然后,我们更新了系统包,并安装了一些必要的依赖库。接着,我们将项目中的 conf 目录复制到 /etc/nginx/conf.d/ 目录下。然后,我们执行了 configure 命令来编译和安装 Nginx,并添加了一些模块。最后,我们设置了 Nginx 的启动命令。

6.2、构建镜像

在项目根目录下执行以下命令来构建 Docker 镜像:

docker build -t nginx-proxy:1.0.0.

在这个命令中,我们使用了 docker build 命令来构建 Docker 镜像。-t 选项用于指定镜像的名称和标签,nginx-proxy:1.0.0 是我们指定的镜像名称和标签。最后的 . 表示当前目录。

6.3、docker-compose.yml 配置

在项目根目录下创建一个名为 docker-compose.yml 的文件,内容如下:

version: '3'services:nginx-proxy:container_name: nginx-proxyimage: nginx-proxy:1.0.0ports:- "80:80"

在这个文件中,我们定义了一个名为 nginx-proxy 的服务,它使用了我们刚刚构建的 nginx-proxy:1.0.0 镜像。然后,我们定义了一个名为 ports 的部分,将容器的 80 端口映射到主机的 80 端口。

6.4、测试

在项目根目录下执行以下命令来启动容器:

docker-compose up -d

在这个命令中,我们使用了 docker-compose up -d 命令来启动容器。-d 选项表示在后台运行容器。

6.5、镜像导入导出

在项目根目录下执行以下命令来导入镜像:

docker load -i nginx-proxy:1.0.0.tar

在这个命令中,我们使用了 docker load -i 命令来导入镜像。nginx-proxy:1.0.0.tar 是我们要导入的镜像文件。

在项目根目录下执行以下命令来导出镜像:

docker save -o nginx-proxy:1.0.0.tar nginx-proxy:1.0.0

在这个命令中,我们使用了 docker save -o 命令来导出镜像。nginx-proxy:1.0.0.tar 是我们要导出的镜像文件,nginx-proxy:1.0.0 是我们要导出的镜像名称和标签。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】- HBase集群部署 [19]

简介 apache HBase是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样,HBase是一款KeyValue型存储的数据库。 不过和Redis涉及方向不同 Redis设计为少量数据,超快检索HBase设计为海量数据,快速检索 HBase在大数据邻域…

【python】python省市水资源数据分析可视化(源码+数据)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

2024年失业率狂飙18.1%,史上最难就业季即将来临,该如何逆袭?_2024年失业潮

【2024年被称为最难就业年,1158万大学生面临难题】 距离2024年毕业季还剩不到4个月,毕业学员将面临空前严峻的就业压力!具国家统 计局的数据显示,1-2月份,16至24岁年轻人的失业率飙到18.1%,也就是说&…

JS之Reduce

reduce 是 JavaScript 中 Array 对象的一个方法,用于对数组中的每个元素执行一个提供的函数(称为 reducer 函数),并将其结果汇总为单个返回值。它是一种高阶函数,可以用于数组的累积操作,例如求和、计算乘积…

微服务:利用RestTemplate实现远程调用

打算系统学习一下微服务知识,从今天开始记录。 远程调用 调用order接口,查询。 由于实现还未封装用户信息,所以为null。 下面我们来使用远程调用用户服务的接口,然后封装一下用户信息返回即可。 流程图 配置类中注入RestTe…

文心一言 VS 讯飞星火 VS chatgpt (265)-- 算法导论20.1 4题

四、假设不使用一棵叠加的度为 u \sqrt{u} u ​ 的树,而是使用一棵叠加的度为 u 1 k u^{\frac{1}{k}} uk1​的树,这里 k 是大于 1 的常数,则这样的一棵树的高度是多少?又每个操作将需要多长时间?如果要写代码&#xf…

模板中的右值引用(万能引用)、引用折叠与完美转发

模板中的右值引用(万能引用)、引用折叠与完美转发 文章目录 模板中的右值引用(万能引用)、引用折叠与完美转发一、万能引用与引用折叠1. 模板中的右值引用2. 自动类型推导(auto)与万能引用3. 引用折叠与万能引用4. lambda表达式捕…

数据可视化第十天(爬虫爬取某瓣星际穿越电影评论,并且用词云图找出关键词)

开头提醒 本次爬取的是用户评论,只供学习使用,不会进行数据的传播。希望大家合法利用爬虫。 获得数据 #总程序 import requests from fake_useragent import UserAgent import timefuUserAgent()headers{User-Agent:fu.random }page_listrange(0,10) …

音视频入门基础:像素格式专题(3)——FFmpeg源码解析BMP格式图片的底层实现原理

音视频入门基础:像素格式专题系列文章: 音视频入门基础:像素格式专题(1)——RGB简介 音视频入门基础:像素格式专题(2)——不通过第三方库将RGB24格式视频转换为BMP格式图片 音视频…

创建一个vue3项目

## 1.创建命令 npm create vuelatest ## 2.具体配置 ## 配置项目名称 √ Project name: vue3_test ## 是否添加TypeScript支持 √ Add TypeScript? Yes ## 是否添加JSX支持 √ Add JSX Support? No ## 是否添加路由环境 √ Add Vue Router for Single Page Application de…

人工智能+量子计算:飞跃现实边界还是科技幻想?

人工智能量子计算,这是一种可能改变世界的伙伴关系。 在科技的前沿,两大革命性技术——人工智能(AI)和量子计算——正站在合作的十字路口。人工智能,以其强大的数据分析能力和模式识别,正在改变着我们生活…

传感器通过Profinet转Modbus网关与PLC通讯在生产线的应用

Profinet转Modbus(XD-MDPN100/300)网关可视作一座桥梁,能够实现Profinet协议与Modbus协议相互转换,支持Modbus RTU主站/从站,并且Profinet转Modbus网关设备自带网口和串口,既可以实现协议的转换&#xff0c…

前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代

前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代 WebAssembly基础概念工作原理概览WebAssembly实战示例基本使用 安全性与性能优化防范漏洞实践实际工作中的使用技巧结语与讨论 随着Web技术的飞速发展,前端开发者面临越来越…

全文检索ElasticSearch简介

1 全文检索 1.1 什么是全文检索 全文检索是一种通过对文本内容进行全面索引和搜索的技术。它可以快速地在大量文本数据中查找包含特定关键词或短语的文档,并返回相关的搜索结果。全文检索广泛应用于各种信息管理系统和应用中,如搜索引擎、文档管理系统、电子邮件客户端、新闻…

Mac虚拟机工具 CrossOver 24.0.0 Beta3 Mac中文版

CrossOver是一款在Mac上运行Windows应用程序的软件,无需安装虚拟机或重启计算机,简化了操作过程,提高了工作效率,为用户带来便捷体验。前往Mac青桔下载,享受前所未有的便利和高效。摘要由作者通过智能技术生成 CrossOv…

【FAQ】HarmonyOS SDK 闭源开放能力 —IAP Kit(2)

1.问题描述: 应用内支付IAP Kit和Payment Kit的区别以及适用场景? 解决方案: IAP Kit是四方支付,仅支持在线虚拟商品,如会员,游戏钻石等,双框架支持全球,目前单框架暂时只支持国内…

Qml:线程

import QtQuick import QtQuick.Controls Window {width: 640height: 480visible: truetitle: qsTr("Test Thread")//定时器测试//显示时钟Text {id: xtimex:parent.width-220y:parent.height-30text:"time"MouseArea{anchors.fill:parentonClicked:{timer…

【MySQL精通之路】SQL优化(1)-查询优化(8)-嵌套联接优化

主博客: 【MySQL精通之路】SQL优化(1)-查询优化-CSDN博客 上一篇: 【MySQL精通之路】SQL优化(1)-查询优化(7)-嵌套循环联接-CSDN博客 下一篇: 【MySQL精通之路】SQL优化(1)-查询优化(9)-外部联接优化-CSDN博客 与SQL标准相比&#xff0c…

robosuite导入自定义机器人

目录 目的:案例一:成果展示具体步骤:URDF文件准备xml文件生成xml修改机器人构建 目的: 实现其他标准/非标准机器人的构建 案例一: 成果展示 添加机器人JAKA ZU 7 这个模型 具体步骤: URDF文件准备 从…