谷粒商城高级篇之nginx部署

本机通过nginx搭建域名访问环境

按照正常的流程,我们需要一个公网ip地址,再为公网ip地址绑定域名。
当前处于开发环境,我们使用nginx搭建域名访问环境。

首先了解一下,什么是正向代理与反向代理。

  • 正向代理就是我们发出请求给服务器,服务器将我们的请求转发给互联网。
  • 反向代理就是为了更好的保护后端集群不被攻击,从而找一台服务器暴露在外,用户想要访问内部信息,需要通过公网ip访问代理服务器从而转发给相应服务。

首先当我们输入一个域名地址时,查看系统内部的域名映射规则,要是有的话,浏览器直接跳转。要是系统内部没有域名地址,则会去网络上的DNS,解析出域名,再来转发。话不多说,进入正题!

1.找到hosts文件(建议先备份一下),地址为C:\Windows\System32\drivers\etc,然后通过SwitchHost软件对其进行修改,软件下载地址https://github.com/oldj/SwitchHosts/releases

下载绿色版即可下载完后解压,以管理员身份运行.exe文件。然后添加自己的域名地址。
注意:需要将hosts文件的只读选项先勾选掉
域名添加
接下来就可以通过域名访问虚拟机里的地址了

2.让nginx帮我们进行反向代理(所有来自gulimall的请求转发到对应服务)

  • 配置nginx
    随便启动一个nginx 实例,只是为了复制出配置
     docker run -p 80:80 --name nginx -d nginx:1.10
     将容器内的配置文件拷贝到当前目录:docker container cp nginx:/etc/nginx .
     别忘了后面的点
     修改文件名称:mv nginx conf 把这个conf 移动到/mydata/nginx 下
     终止原容器:docker stop nginx
     执行命令删除原容器:docker rm $ContainerId
     创建新的nginx;执行以下命令
    docker run -p 80:80 --name nginx
    -v /mydata/nginx/html:/usr/share/nginx/html
    -v /mydata/nginx/logs:/var/log/nginx
    -v /mydata/nginx/conf:/etc/nginx
    -d nginx:1.10
  • 需要对/mydata/nginx/conf/conf.d/路径下的gulimall.conf进行编写
    在这里插入图片描述
location / {
  proxy_pass http://192.168.75.1:10000;
}

这里的192.168.75.1通过在本机环境下进cmd命令通过ipconfig指令即可看到。然后重启nginx访问gulimall.com

3.当然要是在服务比较多的情况下,光改nginx下的config十分的麻烦。我们可以把nginx所有的请求负载均衡给网关,网关再根据匹配规则去查找对应的服务。

  • 通过nginx配置上游服务器
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    upstream gulimall{
      server 192.168.75.1:88;
    }
    include /etc/nginx/conf.d/*.conf;
}

通过上游服务器访问本机网关,有多个可通过server继续配置

  • 配置gulimall.conf实现负载均衡
server {
    listen       80;
    server_name  gulimall.com;

    location / {
      proxy_pass http://gulimall;
    }
}

重启nginx服务,然后在浏览器输入gulimall.com依旧不行,是由于配置了nginx,但是网关未配置
4.配置网关路由,按照Host地址进行映射。
注意这个配置要放到最后,不然其他的网关配置全部失效

- id: gulimall_host_route
  uri: lb://gulimall-product
  predicates:
    - Host=**.gulimall.com

当配置完网关的映射规则后,发现依旧不行。但原来的地址可以请求到数据,继而分析出是nginx在请求时将头部Host信息丢弃了。重新在gulimall.conf中配置

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

最后发现可以访问了!

总结:首先在本机通过host文件将虚拟机地址映射为网址,然后访问该网址nginx会模拟中转服务器将我们的请求重新发给网关,网关根据path或者host进行服务转发。(本机——>虚拟机——>本机)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值