域名与Ngnix

1.域名

在互联网上,所有的地址都是ip地址,现阶段主要是IPv4(比如:110.110.110.110)。但是这些ip地址太难记了,所以就出现了域名(比如http://baidu.com),通过域名解析能够将域名转换为ip地址。

2. Nginx

Nginx就是反向代理服务器,代理服务器是介于客户端和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页,而是通过向代理服务器发送请求,信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

正向代理服务器代理的对象是客户,隐藏真实客户端。
举个栗子:A同学在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,于是他决定去找马云爸爸借钱,可想而知,最后碰一鼻子灰回来了,情急之下,他想到一个办法,找关系开后门,经过一番消息打探,原来A同学的大学老师王老师是马云的同学,于是A同学找到王老师,托王老师帮忙去马云那借500万过来,当然最后事成了。不过马云并不知道这钱是A同学借的,马云是借给王老师的,最后由王老师转交给A同学。这里的王老师在这个过程中扮演了一个非常关键的角色,就是代理,也可以说是正向代理,王老师代替A同学办这件事,这个过程中,真正借钱的人是谁,马云是不知道的,这点非常关键。

反向代理服务器:反向代理代理的对象是服务端,隐藏真实服务端。
举个栗子:大家都有过这样的经历,拨打10086客服电话,可能一个地区的10086客服有几个或者几十个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是你的问题能不能得到专业的解答,你只需要拨通了10086的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务人的是谁。

3.域名的nginx配置

域名和nginx本身没有直接的关联,我们通过对域名进行Nginx配置,从而实现了不同的域名类型。
办公网域名:Nginx配置时限制访问该域名ip必须为办公网, 一般用于办公网浏览器通过该域名进行服务访问
机房网域名:Nginx配置时限制访问该域名ip必须为办公网, 一般用于机房网后端应用直接通过该域名进行服务访问:
公网域名:无论处于哪种环境都可以进行服务访问

举个栗子:我们为某一个服务申请一个域名(dm.baidu.com),并在对应主机上进行Nginx配置(本文域名和IP地址只是为了展示)

server {
  listen 6004 default_server;
  server_name _;
  return 404;
}

server {
    server_name dm.baidu.com;
	# 前端路径访问时
    location / {
        client_max_body_size 200m;
        proxy_pass http://dm-dev-http;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-From-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        include conf.d/Office-Gateway-IPs;
    }

	# 后端路径访问时
    location ^~ /api {
        proxy_pass http://dm-dev-server;
    }
}
upstream dm-dev.http {
	# 前端服务地址
    server 127.0.0.1:7004;
    server 127.0.0.2:7004
    check interval=3000 rise=2 fall=3 timeout=3000 type=http default_down=false;
    check_http_send "GET /v1/health/status HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;
}

upstream dm-dev-server {
	# 后端服务地址
    server 127.0.0.1:9000;
    server 127.0.0.2:9000;
}

因此,客户端(浏览器)发送请求时,dns将其解析成具体ip+port(上文中nginx服务端口6004),进入到对应IP的nginx服务中,进一步根据请求路径进入 location /,其中配置include conf.d/Office-Gateway-IPs;限制只有办公网才能访问。如果是办公网,请求被nginx代理服务器随机发送到某一台前端服务器。

  1. 前端服务器处理时如果需要调用后端服务,则发送请求进入 location ^~ /api,nginx代理服务随机选择一台后端服务器进行处理并将获得到的处理结果发送给前端服务器,前端服务完成页面渲染到浏览器
  2. 前端服务器如果不需要调用后端服务,则直接进行页面渲染到浏览器。

你可能感兴趣的:(大数据之路)