nginx反向代理配置

nginx--正向代理、反向代理及负载均衡(图解+配置) 先来看张图~【再举个栗子】某同学喜欢面向搜索引擎编程,想通过百度搜索引擎查找一些学习资料,但是有些网站直接访问可能不太安全,会暴露自己的IP,同学比较苦恼,想着怎样才能使用百度搜索自己想要的学习资料,又不会暴露自己的IP在网站上呢?这时我告诉该同学,我呢手上刚好有一台代理服务器,这台代理服务器通过nginx配置了正向代理转发http和https请求,你呢,只需要在自己的Windows本地电脑的网关配置一下这台代理服务器的IP和端口号,就能正常通过代理服务器访问到百度并搜索相关的学习资料了,~代理。... 阅读详情

nginx反向代理配置

什么是代理

代理在普通生活中的意义就是本来应该你做的事情,你让别人代你做了,那么那个帮你做的人就是你的代理。而在计算机网络中代理的概念差不多,就是本来要客户端要做的网络访问,现在移交给另外一个机器做,那么那个机器就被称为代理服务器,代理服务器帮你来访问。过程如下:

正常情况:
client —(send request)—> server

代理情况:
client —(send request)—> clinet proxy –(send request)—> server

什么又是反向代理

那什么又是反向代理呢?反向代理可不是说本来代理你事务的人,反过来代理别人。反向代理在计算机网络中是指这么一个过程。一般来说正向代理是客户机找人来代理把自己的请求转发给服务端,但是如果反向代理,找代理的人不再是客户机,而是服务器这边把自己接受的请求转发给背后的其他机器。其主要区别:

  • 正向代理中代理的过程是客户端,代理机器是作为一个访问客户的身份的;而在反向代理中代理机器是作为服务身份。
  • 正向代理中代理的过程是服务端,服务端对代理的存在无感知;而在反向代理中客户机对代理的存在无感知。

反向代理情况:
clinet –(send request)–> server proxy –(send request)–>other
server

先让我们看看一个示例

#① part start
#运行nginx进程的账户
user www;
#
worker_process 1;
error_log /var/log/nginx/error.log
pid /var/run/nginx.pid;

events{
    use epoll;
    worker_connections 1024;
}

http{
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    access_log  /var/log/nginx/access.log  main;
    #
    sendfile        on;
    #
    keepalive_timeout  65;
    gzip  on;

    index   index.html index.htm;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    #② part start
    # 定义上游服务器列表组
    upstream web1 {
        server 127.0.0.1:111 weight=1;
        server 127.0.0.1:222 weight=1;
    }
    upstream web2 {
        server 127.0.0.2:111 weight=1;
        server 127.0.0.2:222 weight=6;
        server 127.0.0.2:333 weight=7;
    }
    #定义一个服务器,其监听80端口,配置的域名是www.company.com
    server{
        listen 80;
        # using www  domain to access the main website
        server_name www.company.com;
        access_log  /var/log/nginx/www.log

        location / {
            root /home/website_root;

        }
    }
    #③ part start
    #定义第二个服务器,其同样监听80端口,但是匹配域名是web.company.com
    server{
        listen 80;
        # using web sub domain to access
        server_name web.company.com;
        access_log  /var/log/nginx/web_access.log

        location / {
            root /home/web2_root;
            proxy_pass http://127.0.0.1:8080/web/;
            proxy_read_timeout 300;
            proxy_connect_timeout 300;
            proxy_redirect     off;

            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   Host              $http_host;
            proxy_set_header   X-Real-IP         $remote_addr;
        }
    }
    #定义第三个服务器,其同样监听80端口,但是匹配域名是web1.company.com,并把请求转发到web1上游服务
    server{
        listen 80;
        # using web1 sub domain to access
        server_name web1.company.com;
        access_log  /var/log/nginx/web1_access.log

        location / {
            root /home/web1_root;
            proxy_pass http://web1;
            proxy_read_timeout 300;
            proxy_connect_timeout 300;
            proxy_redirect     off;

            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   Host              $http_host;
            proxy_set_header   X-Real-IP         $remote_addr;
        }
    }
        #定义第三个服务器,其同样监听80端口,但是匹配域名是web2.company.com,并把请求转发到web2上游服务
    server{
        listen 80;
        # using web2 sub domain to access
        server_name web2.company.com;
        access_log  /var/log/nginx/web2_access.log

        location / {
            root /home/web2_root;
            proxy_pass http://web2;
            proxy_read_timeout 300;
            proxy_connect_timeout 300;
            proxy_redirect     off;

            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   Host              $http_host;
            proxy_set_header   X-Real-IP         $remote_addr;
        }
    }
}

这个示例都做了什么

  1. 第①部分,定义nginx通用规则,包括运行账户,处理进程个数等
  2. 第②部分,开始定义上游服务器组
  3. 第③部分,定义server,并指定怎么使用第②部分定义的upstream

总体来说就是这个提供了4个服务,www,web,web1,web2 4个网站。这个例子很适合只有一台机器,但是有想避免url中携带端口号,统一使用域名的方式访问。4个网站都监听80端口,但是分配不同的二级域名既可以。这就需要nginx的反向代理,把接到的请求转发给背后不同的服务。

为什么需要方向代理

为什么要反向代理?作用服务端的代理,自然就是一台服务器处理不过来了,需要转发、分散请求给其他服务器做。下面罗列些适用场景:

  • 负载均衡
    上面例子中的web1和web2使用了nginx的负载均衡技术,把请求转向一组服务器。具体转发到哪个服务器,nginx提供了多种负载策略,例子中使用的是加权重的方式,web1 upstream是2个请求中,1个请求给111服务器,1个给222服务器。关于跟多的负载均衡的策略,请参看nginx官方文档-负载均衡

  • 一个域名,多个网站。在这里反向代理倒不是为了负责存在,而是为了域名和服务的统一部署。例如一个公司的内部网站需要搭建很多服务——代码管理服、wiki服务、oa……,但是只要一个域名。这时候就可以用反向代理把不同的子域名转发到不同的服务上。下面是一个例子:

  • 当然反向代理的另一大用处就是隐藏后面的实际服务,以此来达到一定的安全性。

仔细讲解每个模块

user

user 设置nginx是以什么用户来运行的,这个非常重要,确保运行nginx的用户能有权限访问读写网站的文件,否则会报404 not found等错误。

events

nginx upstream

upstream 直接翻译就是上游,即上游服务,其封装一组服务器列表,这些服务器可以别proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass和 memcached_pass引用,把接到的请求转发给这些服务器组。
引用方法就是加行http://[upstream module name]

> The ngx_http_upstream_module module is used to define groups of servers that can be referenced by the proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass directives.

例子:

upstream  backend {  #①
    server backend1.example.com       weight=5;
    server backend2.example.com:8080;
    server unix:/tmp/backend3;

    server backup1.example.com:8080   backup;
    server backup2.example.com:8080   backup;
}

server {
    location / {
        proxy_pass http://backend; #②
    }
}

注意有①,和②行的写法。要引用backend模块,只需把它制定成http://backend就行。

http 意义和配置

http就是指配置关于http服务的地方,server等都是http的子模块

server 配置和匹配规则

一个http服务可以有多个server,而对server的路径匹配,反向代理都是在这里配置的。

在server中最重要的一项配置:server_name的配置。server_name决定了来了一个url,到底是哪个server处理该请求。nginx会依次找和url配置的第一次出现的server。server_name可以使用通配符,也可以使用正则表达式。而且一个server的server_name可以多个,以空格分隔。更详细的关于server_name匹配规则,参看这里

location 配置和匹配规则

server_name是定义域名级别的规则,而location则是url中文件部分的规则的。适应例如会对图片等静态资源做单独处理等需求。

参考资料

Nginx-反向代理(配置教程) 5、数据缓存:加速网站的访问速度,减轻web服务器的负担。如果用户请求的内容在缓存中,可以直接在代理服务器中获取,加速用户的访问速度。4、动静分离:根据用户请求的URI进行区分,将动态资源调度到应用服务器处理,将静态资源调度到静态资源服务器处理。3、负载均衡:将用户的请求,通过调度算法挑选一台合适的节点处理请求。2、路由功能:根据用户请求的URI调度到对应功能的节点处理请求。1、解决网站服务器对外可见的问题、私密性、安全性。 阅读详情

相关推荐

nginx 配置反向代理

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf。你可以直接编辑主配置文件,或者在 /etc/nginx/conf.d/ 目录下创建一个新的配置文件。通过配置 Nginx 反向代理,可以将客户端请求转发到后端服务器,并将响应返回给客户端,同时隐藏后端服务器的真实地址。通过 Nginx 配置反向代理,可以实现请求的转发、负载均衡和安全性增强。可以为反向代理配置 SSL/TLS,以加密客户端与代理之间的通信。

记录学习的过程 1828

Nginx-反向代理详解

Nginx 是一个高性能的开源 Web 服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗等特点,被广泛用于搭建静态资源服务器、负载均衡、反向代理等场景。本文介绍nginx的反向代理,其他内容敬请期待!反向代理是一种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后反向代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。简单理解为用户直接访问反向代理服务器就可以获得目标服务器的资源。这一过程叫反向代理​。

Wzill 8万+

nginx 反向代理配置详解

nginx反向代理配置

Winter_Sun灬的博客 2044

Nginx配置——反向代理

Nginx

scorpio的博客 31万+

Nginx 反向代理的配置及问题解决

安装及定位配置文件 Ubuntu安装用 apt-get install nginx命令 用apt-get安装完之后,配置文件一般在\etc\nginx 可以通过 cat /etc/init.d/nginx查看nginx的区体配置文件路径。 # Try to extract nginx pidfile PID=$(cat /etc/nginx/nginx.conf | grep ...

yekingyan 3764

Nginx实现反向代理:详细配置与代码注释

Nginx是一款高性能的HTTP和反向代理服务器,常用于负载均衡、缓存、SSL终止、静态内容服务以及作为应用程序的反向代理。本文将详细介绍如何使用Nginx实现反向代理功能,包括基本配置、高级特性以及示例代码和详尽注释,以帮助您全面理解和应用Nginx的反向代理能力。

java专栏 3万+

Nginx反向代理配置

nginx反向代理配置

weixin_42751488的博客 9万+

ddr3ip核心_DDR3 IP 核配置

DDR3 控制器 IP 核2.DDR3 IP核配置点击 Flow Navigator 面板下的“Project Manager -->IP Catalog”。 在“Memories & Storage Elements -->Memory Interface Generators”分类展开后,可以看到名为“Memory Interface Generator (MIG 7 ...

weixin_33049919的博客 2935

Nginx反向代理实现与配置

Nginx反向代理配置

qq_36551991的博客 1万+

ZYQN7000系列VxWorks驱动开发:VxWorks系统移植

文章目录ZYQN7000驱动开发:VxWorks系统移植1.硬件环境2.编译vsb和vip工程2.1修改设备树文件2.2添加调试打印组件3.选择uboot来启动VxWorks内核4.尝试在开发板上启动内核4.1 拷贝镜像和设备树至SD卡4.2开发板上电4.2.1 uboot成功启动4.2.2 启动VxWorks5.添加shell和cmd组件 ZYQN7000驱动开发:VxWorks系统移植 1.硬件环境 正点原子领航者开发板 2.编译vsb和vip工程 vsb和vip工程的编译过程可以参考之前的文章,htt

明故宫的记忆 5507

【福建dem】原始高程数据tif格式

DEM(Digital Elevation Model,数字高程模型)是一种地理信息系统中的关键数据集,它提供了地表地形的三维信息,通常用于分析地貌特征、模拟水文过程、规划建设、灾害预警等多个领域。这种数据对于地理分析非常有价值,例如,它可以用于计算坡度、坡向、地形粗糙度等地形特征,或者进行洪水模拟、地质灾害评估、太阳能辐射分析等。“福建dem原始高程数据tif格式”是研究和理解福建省地形地貌的重要资源,结合GIS工具,可以揭示丰富的地理信息,为科研、工程和决策提供有力支持。

鸿业远图科技 944

Nginx 反向代理配置

Nginx 作为反向代理服务器,在 Web 服务架构中发挥着至关重要的作用。通过反向代理配置,Nginx 能够帮助分担流量、提供负载均衡、提高安全性、加速请求响应等。本文介绍了 Nginx 反向代理的基本配置方法,以及如何通过负载均衡、SSL 反向代理、WebSocket 代理等功能,进一步扩展其能力。

Flying_Fish_roe的博客 2417

SAP-PP MD04详解一

MD04是SAP运行MRP后的结果查询事务码,其他功能强大,标准功能比如:查询/更改物料主数据、转换计划订单到生产订单/采购申请、查询/更改各个MRP元素对应的单据等等。而且还可以附加标准的菜单或者自定义添加事务码上去。老铁将做一个MD04详细说明系列,本篇为第一篇之MRP元素说明。 我们来看看MD04基本界面 可以看到主要的数据显示界面,有日期、MRP元素、MRP元素数据、再计划日期、收货/需求、可用数量、工厂、库存地点等栏位。光标定位到MRP元素列,按F1即可看到各类MRP元素的说...

weixin_52158549的博客 1万+

Nginx配置反向代理

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

m0_70746078的博客 2230

融合Retinex理论与Transformer的YOLOv8低光照目标检测增强方法【YOLOv8】

图像分解:将输入图像分解为光照成分和反射成分。光照估计:估计光照图以消除暗光区域。图像重建:将光照增强后的反射图像重建成最终图像。Retinexformer通过在Transformer中引入Retinex的图像增强思路,使得低光照图像的细节能够得到充分保留。本文提出了一种基于Retinexformer的低光照增强方法,用于改进YOLOv8模型在夜间和低光照环境下的目标检测性能。

博客 1929

[转]Nginx配置——反向代理

其他话不多说,下面来学习一下的反向代理。如果没有和环境,可以参考前两篇文章。VirtualBox安装Centos7在Centos7下安装Nginx在介绍反向代理之前,先来了解一下正向代理。正向代理:如果把局域网外的想象成一个巨大的资源库,则局域网中的客户端要访问,则需要通过代理服务器来访问,这种代理服务就称为正向代理,下面是正向代理的原理图。由于工作环境原因,日常工作只能局限于单位的局域网,如果想要访问互联网,怎么办呢?这就需要用到正向代理,本人经常用正向代理来进行上网。 反向代理:看下面原理图,就一目了

jiaoqi6132的博客 5802

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(五)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 1511

Nginx的反向代理及ssl配置

Nginx的反向代理及ssl配置

jks212454的博客 2201

建立时间与保持时间

建立时间与保持时间的计算 文章目录1、建立时间与保持时间概述及模型2、寄存器之间数据传输时建立时间与保持时间3、寄存器之间数据传输时建立时间余量与保持时间余量计算4、 FPGA允许的最大时钟频率或最小时钟周期5、计算FPGA时钟所允许的最大频率或最小时钟周期6、违反建立和保持时间会发生什么? 1、建立时间与保持时间概述及模型 建立时间(Tsu): 在时钟采样之前,输入必须稳定一段时间,该时间量称为建立时间。 理想最优建立时间: 保持时间(Th): 在时钟沿之后输入到触发器稳定所需的最短时间。 理想最优

Crazzy_M的博客 3万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Nginx配置之反向代理

其他话不多说,下面来学习一下Nginx的。如果没有Linux和Nginx环境,可以参考前两篇文章。

qq_50523945的博客 971

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: mondrian cmdRunner 使用实例
下一篇: 随手收藏,python中的各种类型转换
miniDan__
博客等级 码龄18年 8粉丝 23原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值