Nginx作为反向代理

反向代理:nginx接受来自客户端(浏览器)的请求,并将其转发给后端服务器进行处理

修改host文件(C:\windows\system32\drivers\etc ),添加虚拟机地址,如下
192.168.56.10  mall.com

这样,访问mall.com[:80]就等同于访问192.168.56.10[:80]
虚拟机中的80端口是Nginx,所以上面两个url会访问到虚拟机的Nginx
同理,访问mall.com:9200(9200是ElasticSearch)会访问到虚拟机的ES

浏览器发送gulimall.com请求来到虚拟机的Nginx,Nginx再负载均衡给网关,网关再负载均衡给服务

不经过网关,由Nginx直接转到指定服务:

步骤:

  1. 使用SwitchHosts修改host文件,使得访问域名(如gulimall.com)时访问到虚拟机的Nginx

  2. Nginx作为反向代理,即 将来自gulimall.com的请求转给某个服务
    修改Nginx配置文件的server块,改完重启Nginx

下列是由Nginx直接转到windows(192.1668.56.1)的端口为10000的微服务的nginx的配置

server {
	listen          80;
	server_name     gulimall.com;
    .
    .
    .
	location / {
		proxy_pass http://192.168.56.1:10000;
	}   
}

解释:
在windows里指定了mall.com映射的是虚拟机ip,所以访问mall.com会来到虚拟机,虚拟机的Nginx监听了80端口,Nginx又将请求(mall.com)代理到windows(192.168.56.1)的10000端口,绕一圈又回到windows

缺点:
假设10000端口为商品服务,如果有多个商品微服务,且各个微服务的ip各不相同,xxxxxxxxx

由Nginx负载均衡到网关,再由网关转发到服务:

配置可以参考Using nginx as HTTP load balancer

  1. 修改http块、server块,重启Nginx

/mydata/nginx/conf/nginx.conf

http {
    upstream gulimall {
        server   192.168.56.1:88
    }   
}

/mydata/nginx/conf/conf.d/mall.conf

server {
	location / {
		proxy_set_header Host $host;
		proxy_pass http://gulimall;
	}   
}

//Nginx代理给网关的时候会丢失请求的host信息
  1. 网关处配置路由规则,重启网关
- id: gulimall_host_route
          uri: lb://gulimall-product
          predicates:
            - Host=**.gulimall.com,gulimall.com

我对ngixn流程的理解:

  • nginx处没新建任何配置文件的情况下,默认是conf.d/default.conf文件,这个配置文件里写的是nginx监听来自127.0.0.1的80端口的请求,如果本机(Linux)访问80端口那肯定被nginx监听了,如果windows配置了host文件,比如192.168.56.10 mall.conf,那么也是会被nginx监听到,默认是访问html下的index.html
  • 如果nginx处新建了配置文件,假设配置了监听哪个域名,实际上是对

你可能感兴趣的:(谷粒商城,nginx,服务器,java)