美文网首页
angualr + nginx 多site构建

angualr + nginx 多site构建

作者: NazgulSun | 来源:发表于2021-10-19 19:24 被阅读0次

只有一个域名,一个端口,需要配置多个 site;
比如,我有一个 http://site/dire1 这样一个域名;
nginx的配置:

   server {
        listen       80;
        server_name  kgraph-admin;

        location /dc {
            alias /datayes/website/dc/;
        }
       // alias 寻找的路径就是  datayes/website/dc
     // root , 那么  datayes/website/dc +  urlPath(dc);

       location /kgraph {
            alias /datayes/website/kgraph/;
       }
       location /kgraph/report/template{
            alias /datayes/website/kgraph/;
       }
    }

那么我的网站的根目录就是

在build 我们的站点的时候需要特别注意 base href:

  • angular ng build --base-href /die1/kgraph/, 默认是 /
  • react 需要在package home 里面指定 homepage:
    base href 的作用,告诉整个网络的相对目录;比如 <img src=a.jpg>
    那么会从 die1/kgraph/a.jpg 找文件

遇到刷新 angular url 404的问题;
最后还是 用 angular 的hash 方案比较合适;

import {HashLocationStrategy, LocationStrategy} from '@angular/common';
providers: [{
provide:LocationStrategy,
useClass:HashLocationStrategy,
}],

AD block 的坑

sx 的chrome 流浪起,有时候会block 我们的url,如果我们的url 包含如下的关键词:
https://easylist.to/easylist/easylist.txt.
,我的url 是portal 相关,竟然也被blocked:others。想着就非常s
x;

多环境部署

现有的方案,在build的时候,指定 环境,比如env=prod/dev等,但是每次部署到不同环境都需要不一样的部署;
其实,我们更喜欢的是,由运维修改指定的配置问题见的方式; 在 java 等应用应用的比较多,或者是直接读取 consul等配置文件;
我们在 angular 中,使用 env.js 的文件,放在 index.html 同级目录下,当然也可以和 consul集成;

  <script src="env.js"></script>


(function (window) {
  window.__env = window.__env || {};
  window.__env ={
    "kgms_name":"Graphs",
    "hugegraph_url":"http://10.20.205.167:8080",
    "etl_name":"Graphs",
    "etl_url":"http://localhost:9090"
  }

  window.__env.enableDebug = true;
}(this));

docker 部署的坑

我们一般期待在一个 docker 里面,部署一个 进程,比如跑一个 java,我们不会让java 在后台运行;

部署nginx 的时候,如果执行 nginx,太会在后台运行,会导致docker 直接 退出;
所以,我们会用 nginx -g "dameon off" 让他在前台运行;

我们这里又使用node 跑了一个服务,也就是 一个docker 两个进程,那么有一个必须在后台,有一个在前台;
比如: 前后关系倒是无所谓:
nohup node nb-portal/app.js &
echo "finish nodejs"

nginx -g "daemon off;"
echo "finish nginx"
对docker的理解不深,debug 就变得很漫长;

两个 nginx 代理设置

第一个:

server {
    listen       80;
    server_name  kgraph-admin;

    location ^~  /wx1/tonglian/ {
            proxy_pass http://10.20.205.167/;
    }

}

那么访问 我的 静态网站:
的地址:
http://wx1/tonglian/+++++
而代理服务又是不一样的;

我的第二个 代理设置:

    location /kgml_eco_brain/report {
        alias /home/lujing.sun/ningbo/src-cloud/;
    }

    location /kgml_eco_brain/portalApi {
        proxy_pass http://127.0.0.1:8787 ;
    }

最终的地址:
http://wx1/tonglian/ /kgml_eco_brain/report, 静态地址
服务的地址:
http:///kgml_eco_brain/portalApi

注意,在nginx中, location 的 /, 有很多种写法,会造成,你访问的时候,最终的地址不一样;
参考:
https://blog.csdn.net/u010509052/article/details/105455813

相关文章

网友评论

      本文标题:angualr + nginx 多site构建

      本文链接:https://www.haomeiwen.com/subject/hinaoltx.html