前言:

  工作两年多了,一直感觉技术上没有太大的长进,好多东西感觉会但是给别人讲起来的时候又感觉和没学过一样。以后希望能坚持写博客,把看过的东西都一点一滴积累下来。言归正传,今天要说的是nginx与hosts以及hosts的一个小插件的使用,此文只是便于开发理解,并不会涉入太深的东西。有错误的地方,还望大家多指正。

1.几个概念

1)DNS

  DNS是Domain Name System的缩写,即域名系统。DNS是internet的一项服务,一般叫域名服务或者域名解析服务,主要是提供网站域名与ip地址的相互转换的服务。

2)域名与ip之间的关系

  域名与IP地址之间是呈一一对应的关系,但多个域名可以对应同一个IP地址。就像一个人的姓名和身份证号码之间的关系,显然记忆人的名字要比身份证号容易的多。IP地址是网络上标识用户站点的数字地址,为了简单好记,采用域名来代替IP地址表示站点地址,DNS讲域名解析成IP地址,使其一一对应。

3)DNS是如何工作的?

  在Internet上,一个域名要由两台域名服务器提供“权威性的”域名解析。如果是国际域名,域名注册管理机构就是Interinc,如果是国内域名,域名注册管理机构就是CNNIC。所有的域名必须在两个注册机构上注册才能正常使用。

  下面用详细事例说明:

  比如,你现在要访问一个网站,例如www.baidu.com,你的电脑需要知道这个站点的IP地址是多少才能访问。于是它会自动向您所在区域的“主控DNS”服务器发出询问,即“www.baidu.com”的IP是多少?如果该服务器上没有该域名的记录,它会到上一级的DNS去查找,一直重复进行直到找到为止,如果到最后一级仍然没有找到。此时会到权威性的DNS上查找,然后把对应的ip信息返回给你的电脑。你的电脑就可以与www.baidu.com对应的服务器进行通信了。这样一级一级的查询被称为“递归式”的查询。

4)hosts文件。

  hosts文件是本地的一个无后缀的系统文件,需要管理员权限才能修改其内容。从上面DNS的解析过程可以看出,每次DNS解析可能会经过很多DNS服务器的转发最终才能获取到真正的IP地址,这样会很没效率。所以在计算机的本地也有一个DNS解析文件,即hosts文件。当你把hosts中的   www.baidu.com指向正确的百度服务器地址的时候,电脑会与正确的服务器进行交互。如果本地hosts,没有配置映射关系,那么它会到局域网的DNS服务器寻找对应的映射关系。如果仍然没有,它就会在本地对应节点的DNS去查找,重复上面所说的步骤。

2.nginx的反向代理

代理:其实就是中介,A和B本来可以直连,但是在A和B之间加入了C。

正向代理:即上面的dns,它代理的是客户端,为客户端收发请求,对server断是透明的。用浏览器访问 http://www.google.com 时,被残忍的block,于是你可以在国外搭建一台代理服务器,让代理帮我去请求google.com,代理把请求返回的相应结构再返回给我。

反向代理:即nginx的一个功能,它代理的是服务器,它为server端转发请求,对client端是透明的。当我们请求 www.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。

3.使用nginx加hosts在本机做多域名映射

  比如你的两个应用的域名是mem.test.com和memsys.test.com。

  1)找到C:\Windows\System32\drivers\etc目录下的hosts文件,用超级管理员权限打开。在文件尾部加入

    mem.test.com 127.0.0.1

    memsys.test.com 127.0.0.1

  2)修改nginx.conf文件(由于nginx.conf的配置很多,这里只是用最简单的事例说明)

    在http的{}内部加入server。加入内容如下:

server {
  listen 80;
  server_name mem.test.com;   //填入自己项目对应的域名
  charset utf-8;
  error_log logs/error.log;
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:8082; //填入自己项目的ip加端口号(此处的项目没有工程上下文,只有端口号)
  }
}

server {
  listen 80;
  server_name memsys.test.com;   //填入自己项目对应的域名
  charset utf-8;
  error_log logs/error.log;
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:8083; //填入自己项目的ip加端口号(此处的项目没有工程上下文,只有端口号)
  }
}

    修改完以后,再重新加载nginx配置文件,nginx.exe -s reload

  

4.chrome的hosts小插件

平时在开发的时候经常需要在不同的环境切换,每次切换的时候还得修改hosts文件。由于hosts在操作系统和浏览器中都有缓存,有时候修改hosts以后,dns解析不一定生效。造成开发的时候很麻烦。现在可以使用chrome的hosts小插件。

在google chrome的应用商店里面搜索"HostAdmin App",直接安装即可。安装完成以后,在浏览器输入chrome://apps/,打开就能看到刚刚安装的插件。点击进入如下界面:该插件支持单域名ip的切换,使用哪个域名直接在对应的ip上打钩即可,添加新的映射关系的时候可以直接在hosts文件里添加即可。另外在该插件中还有一个groups的概念,一个groups下面可以定义多个域名与ip的映射关系。如果你的你有你的每个环境下面有多个域名与ip的映射关系,你可以采取这种方式。语法如下:在groups开始前加#====,在groups结束时加#====即可。

修改以后hostAdmin效果

本地nginx多域名映射的更多相关文章

  1. nginx配置多域名映射方法(本地hosts)

    本地测试网站的时候如果不想用localhost/xxxx的形式访问,可能就需要修改hosts文件来映射了,但是一个网站还好,假如有多个网站的话就不行了. 这时就需要配置多域名映射 比如hosts中配置 ...

  2. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock

    笔记 6.微信扫码登录回调本地域名映射工具Ngrock         简介:讲解微信扫码回调本地域名ngrock讲解 1.为什么要用这个,微信扫码需要配置回调,需要配置对应的域名          ...

  3. wampserver本地配置域名映射

    本地开发时,一般是在浏览器输入 http://localhost/项目文件夹名 来测试网页文件,你有没有想过在本地在浏览器输入你自己设定的一个域名进入项目文件夹中去,本地配置多域名可以测试二级域名以及 ...

  4. NGINX本地服务器解析域名

    1.找到hosts文件 ,添加需要解析的域名 2.在cmd命令窗口中检测解析是否生效 3 找到本地服务器的域名配置文件:添加绑定的域名,更改访问的目录 4.添加pathinfo.隐藏index.php ...

  5. win7下IIS配置以及域名映射方法

    win7下IIS配置以及域名映射方法 第一步:打开控制面板,选择程序与功能,如下图: 第二步:双击打开程序与功能面板,如下图: 第三步:打开”打开或关闭windows功能”(红线圈起来的地方),如下图 ...

  6. 聊聊host中ip/域名映射记录的解析规则

    今天宝叔突然在群里发了个问题; host做如下配置,a.com会指向哪里?或者说ping一下a.com结果会是什么? 127.0.0.1 a.com 192.168.4.106 a.com 192.1 ...

  7. nginx web端口映射

    nginx web端口映射 举例: 问:在一台有外网的宿主机上部署了一个kvm虚拟机,在虚拟机上部署了web,需要外网访问此web,但虚拟机只有内网ip,只和宿主机通,怎么实现外网访问web服务? 答 ...

  8. Linux\Nginx 虚拟域名配置及测试验证

    使用 Nginx 虚拟域名配置,可以不用去购买域名,就可以通过特定的域名访问本地服务器.减少发布前不必要的开支. 配置步骤 1. 编辑 nginx.conf 配置文件 sudo vim /usr/lo ...

  9. nginx二级域名反向代理

    nginx二级域名反向代理 添加两个开发测试的域名 test.xxx.com :8088 testmobile.xxx.com: 8089 内网地址:127.0.0.1 外网地址:127.0.0.1 ...

随机推荐

  1. hdu 1116

    欧拉回路,利用并查集来实现: 代码: #include<cstdio> #include<cstring> #include<vector> using names ...

  2. SPRING IN ACTION 第4版笔记-第一章-003-AOP介绍

    一.目标 要在BraveKnight调用embarkOnQuest()前后各做一些处理(调用Minstrel的方法) 二. 1.minstrel.xml <?xml version=" ...

  3. [OJ] Find Minimum in Rotated Sorted Array II

    LintCode 160. Find Minimum in Rotated Sorted Array II (Medium) LeetCode 154. Find Minimum in Rotated ...

  4. mysql 区间锁 对于没有索引 非唯一索引 唯一索引 各种情况

    The locks are normally next-key locks that also block inserts into the "gap" immediately b ...

  5. Oracle core05_事务和一致性

    事务和一致性 oracle的redo和undo机制保证了数据库的ACID特性,以及高性能和可恢复特性. redo的数据是记录着数据块变更的顺序的正向数据流, commit时,保证redo同步持久化,保 ...

  6. 如何编译Support7Demos测试appcompat

    目录(?)[-] 简介 在Eclipse中编译 使用Gradle编译 简介 Google发布的API-18中带上的support-v7包含了appcompat组件,可以在小于API-11的androi ...

  7. Java如何将Exception.printStackTrace()转换为String输出

    package com.test1; import java.io.PrintWriter; import java.io.StringWriter; public class T010 { /** ...

  8. HDU-1241 Oil Deposits (DFS)

    Oil Deposits Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

  9. HDU- Who Gets the Most Candies?

    Who Gets the Most Candies? Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 262144/131072K (J ...

  10. linux 以root用户登录ftp

    ftp默认禁止以root用户登录. 可以修改 /etc/ftpusers 文件,把root注释掉,即可以root用户登录ftp