• Ngnix配置域名证书,反向代理配置,一个项目多版本环境配置等等


    将阿里云注册的域名证书下载,下载后应该是个压缩包里面包含一个 xxx.key 和xxx.perm的文件,

    在服务器Nginx安装目录中新建一个目录XXX存放证书文件,如下图,我创建了一个cert的文件夹

    将下载的证书压缩包解压后,将这两个文件通过工具上传到创建的目录中

     接下来

    就是修改ngnix配置文件

    这里说明下,有的人喜欢直接在ngnix.conf中进行配置,当然这种情况比较适合 路由较少的场景,路由多的情况下,这个文件就会显得比较臃肿

    我们可以通过 指定子配置文件进行 多项配置,比如不同的服务采用不同的配置文件这样比较好管理

    在 nginx.conf 中 添加一句 include语句,就可以自定子配置文件的目录 如下

    include /etc/nginx/conf.d/*.conf;
    

     /etc/nginx/是服务器的安装目录,nginx.conf这个文件也在这个目录下 ,此处我指定了一个同级的目录 conf.d文件夹,当然也可以指定其他路径或名称的目录,*.conf则是通配该目录下所有配置文件

    接下来,我们开始配置ngnix

    如下图是我这边的3个子配置文件,名字无所谓,

    别名配置,主要是【alias】,用于访问文件系统,在匹配到location配置的URL路径后,指向【alias】配置的路径。如:

    这块最常用的点就是web端一个域名时候,匹配不同项目路径,从而实现不同web项目的控制

    当然也可以一个项目,部署多个场景 如dev开发,test测试,pro正式。。。等等

    alias 后面的路径是实际web项目部署的路径,/home是根路径,ossuser是我创建的一个用户,用户目录,web目录下dev 、test、pro标识不同版本的web项目,

    路径大家可根据自己实际部署目录指定

    server {
            listen 80;
            server_name www.abc.com;
            root /home/ossuser/web/pro/dist;
            index index.html;
            location /dev {
               alias /home/ossuser/web/dev/dist;
               index index.html;
            }
            location /test {
               alias  /home/ossuser/web/test/dist;
               index index.html;
            }
            location /manage/dev {
                alias /home/ossuser/web/manage/dev/dist;
                index index.html;
            }
            location /manage/test {
                alias  /home/ossuser/web/manage/test/dist;
                index index.html;
            }
            location /manage/pro {
                alias  /home/ossuser/web/manage/pro/dist;
                index index.html;
            }
    }
     

    server_name顾名思义 配置你的域名 xxx.com ///
    默认监听80端口,80端口是默认的,不需要在浏览器输入,

    ---

    接下来我们说说 证书配置
    其实域名的证书配置主要是 指定 域名名称及开启ssl和指定证书文件地址

    如下

     其中https的默认端口是443,我们在nginx中监听443端口的请求,开始ssl就可以了,如何 给域名注册ssl及存放 证书文件见上篇

    server {
            listen 443;
            server_name m.abc.com;
            ssl on;
            ssl_certificate cert/m.abc.com;
            ssl_certificate_key cert/m.abc.com;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
            ssl_prefer_server_ciphers on;
    
            location /dev/ {
                    proxy_pass  http://127.0.0.1:9001/;
            }
    
            location /test/ {
                    proxy_pass http://127.0.0.1:9002/;
            }
            location /pro/ {
                    proxy_pass http://127.0.0.1:3123/;
            }
    
    }

    上图示例中,我们开启了443端口监听(https默认端口)

    接下来,我们如何将请求的二级域名https的请求(常见于app/小程序等请求接口时)

    这里我们主要要用到反向代理【proxy_pass】

    反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景,在匹配到location配置的URL路径后,转发请求到【proxy_pass】配置的URL,
    是否会附加location配置路径与【proxy_pass】配置的路径后是否有"/"有关,有"/"则不附加

    还是同样的,我们以 代理二级域名 m.abc.com为例

    在实际场景中,我们的小程序/app部署后,部署场景有开发,测试,正式等环节,分别要请求API接口不同的端口实现不同数据的交互

    配置如下图

    这里面有一点要注意下

    location /dev/
    {
      proxy_pass http://127.0.0.1:9001/;
    }

    即:请求/dev/api/123/xxx(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:9001/api/123/xxx(未附加/dev/路径)

    那么如果是

    location /dev/ 

      proxy_pass http://127.0.0.1:9001; 
    }

    会出现这样呢?

    即:请求/dev/api/123/xxx(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:9001/dev/api/123/xxx(附加/dev/路径)。

    配置https及不同环境请求后,我们测试下请求结果

    实际的API 是 /pms/version/info

    我们发送 https Get请求 路径 https://m.abc.com/dev/pms/version/info  ----> 实际请求到后台的接口是 开发环境的 /pms/version/info接口

    要请求 测试环境的接口,则只用在API加一个前缀 /test/ 其它环境同理,

    app/web请求接口时根据打包环境直接打上动态前缀即可;

    这样我们就实现了 一个IP部署多环境项目,及域名开始https等

    当然还有种常用方式,同一个接口,不指定环境前缀,通过不同端口进行访问(即app/web在请求是,配置的API是同一套,只是请求端口不同)

  • 相关阅读:
    html$css_day05
    html$css_day04
    html$css_day03
    html$css_day02
    html$css_day01
    日常笔记19/3/04-19/3/10
    堆排序
    js对象之XMLHttpReques对象学习
    前端页面显示问题解决步骤(方法)
    SpringBoot跨域小结
  • 原文地址:https://www.cnblogs.com/Hizy/p/11851682.html
Copyright © 2020-2023  润新知