您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Nginx 反向代理最常见的三种用法

时间:2020-05-08 10:33:07  来源:  作者:

说到 大名鼎鼎的 Nginx, 大家肯定都不陌生,不管是做运维,做开发,还是做网络的都应该对他很熟悉。Nginx的功能很多,很强大,今天我主要是分享一下 Nginx 反向代理的常见用法。

 

什么是反向代理?

举个例子: 

比如用户去访问百度,用户在浏览器输入www.baidu.com时,对于百度来说,浏览器就是客户端。 
客户端将请求发送到百度的代理服务器,由代理服务器去选择目标服务器获取数据后,在返回给客户端。   

这样做有三个好处: 

1、隐藏了目标服务器IP地址,暴露出去的只是代理服务器 
2、访问量很大的时候可以轻松扩容,目标服务器可以有很多个 
3、客户端对代理是无感知的,客户端不需要任何配置就可以访问

 

看下面这张图 可能更直观一些

 

Nginx  反向代理最常见的三种用法,建议收藏

 

 

现在来看一些Nginx 反向代理的实战用法:

 

1、Nginx 反代 websocket

server {
	listen 80;
	
	server_name XXXXX;
	
	location / {		
      proxy_pass http://192.168.10.100:9504; 
    
		  proxy_set_header X-Real-IP $remote_addr;
		  proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";


	}
} 


# 这里需要注意的是 proxy_http_version 1.1;  这个参数很重要 
# 因为Nginx对HTTP的反向代理,默认使用HTTP 1.0连接到后端,那样没法保持长连接,后端作出HTTP响应后,连接就断了,而websocket是长连接,所以启用HTTP 1.1以支持长连接

 

2、nginx 七层 反向代理

# 七层就是应用层  

例子1:  经典的LNMP 

#在nginx 中添加如下配置:  

location ~ .php$ {

            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }


# 表示把以php 结尾的请求都转发到 127.0.0.1:9000 即 我设置的php-fpm 默认端口  



例子2: 传参式

location ~ ^/api/(.*)$ {
        proxy_pass http://127.0.0.1:9901/$1;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

# 重要指令: proxy_pass 可以包含传输协议、主机名称或IP地址加端口号,URI等 
# http://127.0.0.1:9901/$1 这里的 $1 就是我通过接口传进来的参数

 

3、nginx 四层反向代理

# 四层是网络层,

例子:允许某个IP 可以连接内网的MySQL 数据库

stream {

    upstream mysqldb {
       hash $remote_addr consistent;
      # $binary_remote_addr;
       server 172.18.1.101:3306;
    }
  
    server {
       listen 3306;  
       allow x.x.x.0/24;
       deny all;
       proxy_connect_timeout 10s; 
       proxy_timeout 900s;#设置客户端和代理服务之间的超时时间,如果15分钟内没操作将自动断开。
       proxy_pass mysqldb;
    }
}   

#注意,需要nginx 有 stream模块,在编译的过程中加参数  --with-stream  

 

nginx 反代的用法挺多的,我只是列举出我觉得最实用的几种,如果有错误的地方请指出来,大家共同学习。



Tags:Nginx 反向代理   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
每次从github上拉东西,速度都奇慢无比,本地的时候可以设置代理,但是一些特殊场合并不是特别方便,所以就写了下面的反向代理。建议直接看这个 https://ghostcir.com/s/169.html,通...【详细内容】
2020-10-19  Tags: Nginx 反向代理  点击:(252)  评论:(0)  加入收藏
Nginx前提准备首先是对于linux环境下的安装(本地机器是Windows版本,大家可以使用Vmware,但是需要配置网络连接等,这里就不在展示虚拟机上的演示。这里使用到个人的阿里云云服...【详细内容】
2020-08-10  Tags: Nginx 反向代理  点击:(79)  评论:(0)  加入收藏
一同事求援:后台系统的登录成功了,但不能成功登进系统,仍然跳转到登录页,但同一套代码另一个环境却没有问题。背景经了解,他对同一个项目使用tomcat部署了两个环境,一个在开发服务...【详细内容】
2020-07-13  Tags: Nginx 反向代理  点击:(69)  评论:(0)  加入收藏
说到 大名鼎鼎的 Nginx, 大家肯定都不陌生,不管是做运维,做开发,还是做网络的都应该对他很熟悉。Nginx的功能很多,很强大,今天我主要是分享一下 Nginx 反向代理的常见用法。 什么...【详细内容】
2020-05-08  Tags: Nginx 反向代理  点击:(320)  评论:(0)  加入收藏
1. 什么是反向代理:反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给I...【详细内容】
2019-09-25  Tags: Nginx 反向代理  点击:(159)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(9)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条