美文网首页
2019-07-17 Nginx部署测试服

2019-07-17 Nginx部署测试服

作者: 静静静静静_4fba | 来源:发表于2019-07-17 22:22 被阅读0次

昨天说要用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一样。。我还是继续观望吧。

相关文章

网友评论

      本文标题:2019-07-17 Nginx部署测试服

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