2019-07-17 Nginx部署测试服

昨天说要用nginx,今天搞了一天,终于把测试服部署好了。回顾下今天的探索过程。

整体思路是1、将angular项目发布成压缩文件。2、用nginx做反向代理来访问压缩后的angular项目。3、nginx将angular的接口请求转发到Express服务上,再将结果发给客户端。

一、Nginx安装和启动
        官网下载最新稳定版本http://nginx.org/
        将下载好的文件通过Xftp放到服务器上
        解压文件 tar -zxvf nginx-1.16.0.tar.gz
        进入到解压的目录中依次执行
         ./configure
        make
        make install
        默认会安装在 /usr/local/nginx 下,安装好之后添加环境变量 ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
        然后有几个常用命令:
        测试配置文件: nginx -t
        启动: nginx
        重启: nginx -s reload

二、Nginx配置
        这个还挺复杂的,暂时只是跑起来了,但是很多地方还不理解,配置文件在 /usr/local/nginx/conf/nginx.conf
        1、开启gzip,可以提升访问速度
        gzip on; #开启gzip
        gzip_min_length 1k; #低于1kb的资源不压缩
        gzip_comp_level 3; #压缩级别【1-9】,越大压缩率越高,同时消耗cpu资源也越多,建议设置在4左右。
        gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;  #需要压缩哪些响应类型的资源,多个空格隔开。不建议压缩图片,下面会讲为什么。
        gzip_disable "MSIE [1-6]\.";  #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
        gzip_vary on;  #是否添加“Vary: Accept-Encoding”响应头
        2、代理服务端
        先设置好上游
        upstream analysisServer{
            server 127.0.0.1:3080 weight=1;    #端口就是项目后端服务的端口
        }
        然后配置server
        server {

        listen      8080 default_server;    #这个是nginx要用的端口

        listen      [::]:8080 default_server;

        server_name  _;

        #root        /usr/local/Project/Client;    #如果不用默认的html路径,可以在这里指定

        location ~ ^(/api) {    #所有 ip:port/api/xxx 的请求会被指定的上游代理

            proxy_pass  http://analysisServer;    #在这里设置一个代理,和upstream的名字一样

            #以下是一些反向代理的配置可删除

            proxy_redirect            off;

            #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

            proxy_set_header          Host $host;

            proxy_set_header          X-Real-IP $remote_addr;

            proxy_set_header          X-Forwarded-For $proxy_add_x_forwarded_for;

            client_max_body_size      10m; #允许客户端请求的最大单文件字节数

            client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数

            proxy_connect_timeout      300; #nginx跟后端服务器连接超时时间(代理连接超时)

            proxy_send_timeout        300; #后端服务器数据回传时间(代理发送超时)

            proxy_read_timeout        300; #连接成功后,后端服务器响应时间(代理接收超时)

            proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小

            proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

            proxy_busy_buffers_size    64k; #高负荷下缓冲大小(proxy_buffers*2)

            proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传

        }

        location / {

            root  html;

        }

        error_page  500 502 503 504  /50x.html;

        location = /50x.html {

            root  html;

        }

    }
    修改完先测试 nginx -t
    测试通过重启 nginx -s reload

三、Angular发布
        修改 src\environments\environment.prod.ts 下的服务地址为nginx的服务地址(这里因为ip填写错误,耽误了很长事件。。
        执行 npm run-script build 
        将发布的文件放到服务器的nginx配置中指定的路径下,默认是 /usr/local/nginx/html 
        然后就可以通过浏览器访问了
        *补充
        上面的方式是修改了正式服的配置,这样不妥,应当新增个测试服配置,具体步骤如下
        1、新增src\environments\environment.test.ts
        2、修改angular.json
        复制一份 build.configurations 下的production配置,改名为test
        然后将 test.fileReplacements 下的 environment.prod.ts 改为 environment.test.ts
        3、修改package.json
        复制一份build命令,改为 build-test
        在 ng build 后面追加参数 --configuration=test 
        这样只需要执行npm run-script build-test 就可以发布测试版了

四、Nginx一个端口两个项目
        上面是我在自己服务器测试的,现在要部署到正式服务器上,因为正式服务器的nginx已经用8080端口代理的这个项目的正式服了,所以需要将上面的server和upstream复制一份到下面
        首先修改新 upstream 的名字和端口
        修改新 server 的端口和代理名子以及root路径
        还要修改新Express的启动端口和upstream一致
        修改angular项目environment下的端口和server端口一致
        最后测试并重启nginx,就可以用新端口访问了
        但是。
        由于服务器不在我们手里,在遥远的上海,每次开新端口还要去麻烦那边帮忙,我们老大就说要用现有的端口来处理两个项目。
        于是删掉后加的那个server,保留upstream
        在现有的server中添加两个location
        1、复制一份上面的 location ~ ^(/api)  改为 location ~ ^(/testapi) 并且使用新的upstream代理
        2、新增
        location /test/ {

                alias /新的angular发布路径;

        }

        还要修改angular的environment中的 api 为 testapi 这样接口请求就可以流转到Express了
        修改angular的build命令,添加参数 --base-href ./ 这样html使用相对路径的文件也可以正确的找到服务器资源了

        然后,在之前服务器的地址加上 test/ 就可以用来访问测试服务器了。

上周任天堂放出了switch lite的消息,本来有点想要的,但是今天又来个switch增强版,续航比switch lite还久,价格跟现有的switch一样。。我还是继续观望吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容

  • 一、安装Nginx: 1、解决依赖关系 yum groupinstall "Development Tools" ...
    不排版阅读 861评论 0 0
  • Nginx (engine x)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器...
    hhf_Engineer阅读 2,141评论 0 1
  • nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和n...
    AndyChin阅读 2,300评论 0 4
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,005评论 0 9
  • 1.简介:  Nginx:engine X ,2002年,开源,商业版 http协议:web服务器(类似于ht...
    尛尛大尹阅读 1,868评论 0 3