• nginx安装配置及添加第三方模块


    1.安装gcc gcc-c ++(如新环境,未安装请先安装)

    $ yum install -y gcc gcc-c ++
    2.安装PCRE库
    $ cd / usr / local /
    $ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
    $ tar -zxvf pcre-8.33.tar.gz
    $ cd pcre -8.33
    $ ./configure
    $ make && make install
    如报错:configure:错误:您需要一个C ++编译器来支持C ++
    解决:yum install -y gcc gcc-c ++
    3.安装SSL库

    $ cd / usr / local /
    $ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
    $ tar -zxvf openssl-1.0.1j.tar.gz
    $ cd openssl-1.0.1j
    $ ./config
    $ make && make install
    4.安装的zlib的库存

    $ cd / usr / local /
    $ wget http://zlib.net/zlib-1.2.11.tar.gz
    $ tar -zxvf zlib-1.2.11.tar.gz
    $ ./configure
    $ make && make install
    4.安装nginx的的

    $ cd / usr / local /
    $ wget http://nginx.org/download/nginx-1.14.0.tar.gz
    $ tar -zxvf nginx-1.14.0.tar.gz
    $ cd nginx-1.14.0
    $。 / configure --user = nobody --group = nobody --prefix = / usr / local / nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with -pcre = /usr/local/pcre-8.33 --with-zlib = /usr/local/zlib-1.2.11 --with-openssl = /usr/local/openssl-1.0.1j
    (注: - with- http_ssl_module:这个不加的话后面在nginx.conf配置ssl:on after,启动会报nginx:
    [emerg]未知指令“ssl”在/opt/nginx/conf/nginx.conf异常)
    $ make && make install

    5.启动
    $ /usr/local/nginx/sbin/nginx

    检查是否启动成功:

    打开浏览器访问此机器的IP,如果浏览器出现欢迎来到nginx的!则表示Nginx的已经安装并运行成功。

    部分命令如下:

    重启:
    $/usr/local/nginx/sbin/nginx -s reload
    停止:
    $ /usr/local/nginx/sbin/nginx -s stop

    测试配置文件是否正常:
    $ /usr/local/nginx/sbin/nginx -t
    强制关闭:
    $ pkill nginx

    配置
    以上安装方法的nginx的的配置文件位于

    /usr/local/nginx/conf/nginx.conf
    Nginx的配置文件常见结构的从外到内依次是「HTTP」「服务器」「位置」
    等等,缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值。
    服务器
    接收请求的服务器需要将不同的请求按规则转发到不同的后端服务器上,在nginx的中我们可以通过构建虚拟主机(服务器)的概念来将这些不同的服务配置隔离。

    服务器{
    听80;
    server_name localhost;
    root html;
    index index.html index.htm;
    }

    例如我们笔戈玩下的两个子项目passport和wan就可以通过在nginx的配置文件中配置两个服务器,servername分别为passport.bigertech.com和wan.bigertech.com。这样的话不同的url请求就会对应到nginx相应的设置,转发到不同的后端服务器上。
    这里的听指监听端口,server_name用来指定IP或域名,多个域名对应统一规则可以空格分开,index用于设定访问的默认地址,root指令用于指定虚拟主机的网页跟目录,这个地方可以是相对地址也可以是绝对地址。
    通常情况下我们可以在nginx.conf中配置多个服务器,对不同的请求进行设置。就像这样:

    服务器{
    听80;
    server_name host1;
    root html;
    index index.html
    index.htm的;
    }
    服务器{
    听80;
    server_name host2;
    root / data / www / html;
    index index.html index.htm;
    }

    但是当服务器超过2个时,建议将不同对虚拟主机的配置放在另一个文件中,然后通过在主配置文件nginx.conf加上包括指令包含进来。更便于管理。
    包括vhosts / * .conf;

    就可以把虚拟主机的文件都​​包含进去啦。

    Localtion
    每个url请求都会对应的一个服务,nginx进行处理转发或者是其他服务器的一个服务路径。而这个路径的匹配是通过location来进行的。我们可以将server当做对应一个域名进行的配置,而位置是在一个域名下对更精细的路径进行配置。

    以上面的例子,可以将根和索引指令放到一个位置中,那么只有在匹配到这个位置时才会访问根后的内容:


    位置 / {
    root / data / www / host2;
    index index.html index.htm;
    }

    location匹配规则
    〜波浪线表示执行一个正则匹配,区分大小写
    〜*表示执行一个正则匹配,不区分大小写
    ^〜^〜表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
    =进行普通字符精确匹配
    匹配例子:
    location = / {
    #只匹配“/”。[配置A]
    }
    位置 / {
    #匹配任何请求,因为所有请求都是以“/”开始#但是更长字符匹配或者正则表达式匹配会优先匹配[配置B]
    }
    位置^〜/ images / {
    #匹配任何以/ images /开始的请求,并停止匹配其它
    位置[配置C]
    }
    location~ *。(gif | jpg | jpeg)$ {
    #匹配以gif,jpg或jpeg结尾的请求。
    #但是所有/ images /目录的请求将由[Configuration C]处理。
    [配置D]
    }
    请求:/ - >符合配置A.
    /documents/document.html - >符合配置B.
    /images/1.gif - >符合配置C.
    /documents/1.jpg - >符合配置D.

    静态文件映射
    访问文件的配置主要有  root和alias p的两个指令。这两个指令的区别容易弄混:
    alias
    别名后跟的指定目录是准确的,并且末尾必须加/。
    location / c / {
    别名/ a /;
    }


    根后跟的指定目录是上级目录,并且该上级目录下要含有和位置后指定名称的同名目录才行。

    location / c / {
    root / a /;
    }

    如果你需要将这个目录展开,在这个位置的末尾加上「autoindex on; 」就可以了

    转发
    配置起来很简单比如我要将所有的请求到转移到真正提供服务的一台机器的8001端口,只要这样:

    位置 / {
    proxy_pass 172.16.1.1:8001;
    }
    这样访问host时,就都被转发到172.16.1.1的8001端口去了。

    负载均衡

    上游myserver; {
    ip_hash;
    server 172.16.1.1:8001;
    服务器172.16.1.2:8002;
    服务器172.16.1.3;
    服务器172.16.1.4;
    }
    位置 / {
    proxy_pass http:// myserver;
    }

    我们在 upstream 中指定了一组机器,并将这个组命名为 myserver,这样在 proxypass 中只要将请求转移到 myserver 这个 upstream 中我们就实现了在四台机器的反向代理加负载均衡。其中的 ip_hash 指明了我们均衡的方式是按照用户的 ip 地址进行分配。另外还有轮询、指定权重轮询、fair、url_hash几种调度算法。

    总结
    以上是最简单的通过 nginx 实现静态文件转发、反向代理和负载均衡的配置。在 nginx 中所有的功能都是通过模块来实现的,比如当我们配置 upstream 时是用 upstream 模块,而 server 和 location 是在 http core 模块,其他的还有流控的 limt 模块,邮件的 mail 模块,https 的 ssl 模块。他们的配置都是类似的可以再 nginx 的模块文档中找到详细的配置说明。
    ————————————————

    原文链接:https://blog.csdn.net/laoguoyandong/java/article/details/80694329

    添加第三方模块

    首先,要讲清楚一点,nginx不支持动态安装、加载模块的,所以当你安装第三方模块或者启动nginx本身的新模块功能的时候,都是覆盖nginx的;

    所以,一定要注意:首先查看你已经安装的nginx模块!然后安装新东西的时候,要把已安装的,再次配置。

    nginx第三方模块安装方法:

    [html] view plain copy
    ./configure --prefix=/你的安装目录  --add-module=/第三方模块目录  

    上面已经讲清楚了,安装任何新功能的时候,一定要先查看现有的,

    第一步:查看nginx现有的配置

    cd /usr/local/sbin/

    ./nginx -V   查看configure arguments: 后面的项,有可能是空的,说明什么都没有配置。

    举例:

    configure arguments: --add-module=/home/softback/echo-nginx-module-0.60

    说明已经安装了第三方的echo模块。那么下面再安装https支持,或者其它第三方模块的时候,./configure后面一定还要带上--add-module=/home/softback/echo-nginx-module-0.60  ,否则会被覆盖的。

    第二步:安装模块


    1、在未安装nginx的情况下安装nginx第三方模块(需要make install)

     ./configure --prefix=/usr/local/nginx
    --with-http_stub_status_module 
    --with-http_ssl_module --with-http_realip_module 
    --with-http_image_filter_module 
    --add-module=../ngx_pagespeed-master --add-module=/第三方模块目录
     make
     make isntall
     /usr/local/nginx/sbin/nginx
    2、在已安装nginx情况下安装nginx模块(不需要make install,只需要make)

     ./configure --prefix=/usr/local/nginx
     --with-http_stub_status_module 
     --with-http_ssl_module --with-http_realip_module 
     --with-http_image_filter_module 
     --add-module=../ngx_pagespeed-master
     make
     /usr/local/nginx/sbin/nginx -s stop
     cp objs/nginx /usr/local/nginx/sbin/nginx
     /usr/local/nginx/sbin/nginx //启动nginx


    总结,安装nginx安装第三方模块实际上是使用--add-module重新安装一次nginx,不要make install而是直接把编译目录下objs/nginx文件直接覆盖老的nginx文件.如果你需要安装多个nginx第三方模块,你只需要多指定几个相应的--add-module即可.

    备注:重新编译的时候,记得一定要把以前编译过的模块一同加到configure参数里面.
    ————————————————

    原文链接:https://blog.csdn.net/cxm19881208/java/article/details/64441890

  • 相关阅读:
    shell28获取命令结果的第几个参数
    在 Amazon EC2 Linux 实例上手动安装 SSM 代理 Raspbian
    Trying out the Intel Neural Compute Stick 2 – Movidius NCS2
    Flask
    virtualenv/venv 和 pip
    轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception
    向 AWS Elastic Beanstalk 部署 Flask 应用程序
    Installing the AWS Toolkit for Visual Studio Code
    Installing the AWS SAM CLI on macOS
    树莓派显示器电源管理禁止屏幕休眠
  • 原文地址:https://www.cnblogs.com/guantou1992/p/12776817.html
Copyright © 2020-2023  润新知