实际开发中,会有不同的环境:

- 开发环境:自己的电脑
- 测试环境:提供给测试人员使用的环境
- 预发布环境:数据是和生成环境的数据一致,运行最新的项目代码进去测试
- 生产环境:项目最终发布上线的环境

如果不同环境使用不同的ip去访问,可能会出现一些问题。为了保证所有环境的一致,在各种环境下都使用域名来访问。

一个域名一定会被解析为一个或多个ip。这一般会包含两步:

- 本地域名解析

浏览器会首先在本机的hosts文件中查找域名映射的IP地址,如果查找到就返回IP ,没找到则进行域名服务器解析,一般本地解析都会失败,因为默认这个文件是空的。

- Windows下的hosts文件地址:`C:/Windows/System32/drivers/etc/hosts`
- Linux下的hosts文件所在路径: `/etc/hosts`

样式:

```shell
# My hosts
127.0.0.1 localhost
0.0.0.0 account.jetbrains.com
127.0.0.1 www.xmind.net
```

- 域名服务器解析

本地解析失败,才会进行域名服务器解析,域名服务器就是网络中的一台计算机,里面记录了所有注册备案的域名和ip映射关系,一般只要域名是正确的,并且备案通过,一定能找到。

虽然域名解决了,但是现在如果我们要访问,还得自己加上端口:`http://api.cms.com:9999/swagger-ui.html`。

项目一般都是直接域名访问:`http://api.cms.com:9999/swagger-ui.html`

这种情况下端口默认是80,如何才能把请求转移到9998端口呢?

这里就要用到:Nginx 它是一个高性能的web和反向代理服务器

nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:

==反向代理,负载均衡,动态路由,请求过滤==
外网服务器:是让所有人访问的服务器
内网服务器:必须连入内部的网络才能访问内部的服务器

前端会发很多请求给nginx,也就是说nginx会负载很多请求,此时nginx就成为网关。
正向代理:当你访问谷歌时,无法访问,你会通过翻墙去访问,这实际上是要先连接到vpn的服务器(代理服务器),然后vpn的服务器再去连接到谷歌的服务器,此时你才能访问到。本质上就是用户直接访问谷歌服务器。但是谷歌服务器只知道是代理服务器发出的请求,他不知道具体是哪个用户发出的。本质上来说代理服务器代理的就是一个个的用户,
---正向代理就是代理客户端,服务端不知道实际发起请求的客户端。
通过客户机的配置,实现让一台服务器代理客户机,客户的所有请求都交给代理服务器处理。
反向代理:
用一台服务器,代理真实服务器,用户访问时,不再是访问真实服务器,而是代理服务器。
---反向代理就是代理服务器
当你要访问内网服务器时 你访问不到,此时就需要通过代理服务器去代理你要访问的内网服务器,你只需要访问代理服务器即可访问内网服务器。
当我们要访问的内网服务器ip+端口为172.0.0.3:9999时 那么我们可以将这个内网服务器代理在代理服务器上 代理服务器的ip+端口为172.0.0.3:80 80可以省略, 当你要访问内网服务器时,先访问代理服务器,代理服务器会将其转发到内网服务器上,而80端口可以省略就解决了隐藏端口的效果。

正向代理:访问的服务器不知道是哪个用户在访问,只知道是哪个代理服务器在访问
反向代理:用户不知道具体要访问的是哪个服务器(当然在nginx中可以通过配置特定的域名来确定),只知道访问的哪个代理服务器

nginx反向代理理解的更多相关文章

  1. Nginx反向代理理解误区之proxy_cookie_domain

    基本内容 Nginx做反向代理的时候,我们一般习惯添加proxy_cookie_domain配置,来做cookie的域名转换,比如 ... location /api { proxy_pass htt ...

  2. nginx反向代理跨域基本配置与常见误区

    最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器.同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决问题的同时,发现网上有些方案的确是存在一 ...

  3. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  4. Nginx反向代理部署指南

    一.反向代理 我们都知道,80端口是web服务的默认端口,其他主机访问web服务器也是默认和80端口进行web交互,而一台服务器也只有一个80端口,这是约定俗成的标准. 我们来看下面两个场景: 1.服 ...

  5. Linux 下的 Nginx 反向代理配置.

    最近实践中遇到了需要利用 nginx 进行反向代理服务器请求的需求,以前没怎么碰触过,因此花了1个多小时,快速阅览了一下nginx官网在反向代理服务中给出的基本定义: 说实话,官网给予的定义是精准的, ...

  6. Nginx 反向代理、负载均衡

    ## Nginx 反向代理. (一)简介 一.什么是代理服务器 客户机原本发送给服务器的请求,不会直接发送给服务器,而是先发送给代理服务器:经过代理服务器处理后转发给服务器:服务器数据处理后转回给代理 ...

  7. CentOS 7 学习(二) 配置Nginx反向代理

    CentOS 7 学习(二) 配置Nginx反向代理 Nginx可以通过php-fpm来运行PHP程序,也可以转向apache,让apache调用php程序来运行. 不过对于Nginx来说,其反向代理 ...

  8. Nginx(三)------nginx 反向代理

    Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能,比如后面会介绍的负载均衡.本篇博客我们会先介绍 Nginx 的反向代理,当然 ...

  9. nginx反向代理-解决前端跨域问题

    1.定义 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源.注意:跨域限制访 ...

随机推荐

  1. login shell 和 non-login shell 的相关问题

    问题:通过su命令切换用户并没有进入该用户的shell环境.这是为什么?      要解决这个问题,我们必须清楚用login shell 和non-login shell的区别.   login sh ...

  2. OpenStack (horizon Web管理界面)

    horizon 简介 Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 , 管理员可以使用通过 WE ...

  3. php小程序-文章发布系统(mvc框架)

    php小程序-文章发布系统(mvc框架) 一 项目视图 二 项目经验 通过对mvc微型框架的实现,对mvc理论加深,有利于以后框架的学习 三 项目源码 http://files.cnblogs.com ...

  4. 若依管理系统RuoYi-Vue(一):项目启动和菜单创建

    若依管理系统应该是国内最受欢迎的完全开源的后端管理系统了吧,看看gitee上的star数量,着实惊人.若依系统有很多个版本 版本 gitee地址 说明 前后端不分离版本 https://gitee.c ...

  5. charles(1)解决charles抓包乱码问题

    前言 当使用Charles抓包时,发现数据都是乱码,这时需要安装证书 解决办法 1.点击charles窗口,点击左上角Help-> SSL Proxying -> Install Char ...

  6. Hive配置Tez引擎踩坑

    框架版本 Hadoop 2.7.7 Hive 2.3.7 Tez 0.9.2 保证hadoop集群启动,hive元数据服务启动 上传tez到HDFS tar -zxvf apache-tez-0.9. ...

  7. Hive创建HBase,ES外部表

    1.创建HBase外部表 CREATE EXTERNAL TABLE `ods_women`( `rowkey` string COMMENT 'from deserializer', `articl ...

  8. UDP实现多人聊天

    发送端 package com.zy.exercise; import java.net.DatagramPacket; import java.net.DatagramSocket; import ...

  9. HDU5739 Fantasia【点双连通分量 割点】

    HDU5739 Fantasia 题意: 给出一张\(N\)个点的无向图\(G\),每个点都有权值\(w_i\),要求计算\(\sum_{i=1}^{N}i\cdot G_i % 1e9+7\) 其中 ...

  10. CodeForces833 B. The Bakery 线段树维护dp

    题目链接:https://vjudge.net/problem/CodeForces-833B 题意:给长度为n的数组a,和一个整数k要求把数组分成连续的k段,每段的权值是该段中不同数的个数,输出最大 ...