美文网首页
nginx的安装配置

nginx的安装配置

作者: 缘木与鱼 | 来源:发表于2019-12-03 14:47 被阅读0次

    安装nginx

    下载地址
    [下载地址](http://nginx.org/en/download.html)
    官网:
    http://nginx.org/
    
    或者
    wget http://nginx.org/download/nginx-1.17.0.tar.gz
    

    本次以 nginx-1.12.2 为例

    1、安装依赖

    yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
    
    yum -y install wget httpd-tools vim
    
    yum -y install zlib zlib-devel openssl openssl-devel
    

    2、安装nginx

    解压安装包
    
    tar -zxvf nginx-1.12.2.tar.gz
    
    cd nginx-1.12.2
    
    ./configure
    
    make && make install
    

    安装完成后可以在/usr/local/nginx/sbin 下看到启动文件 nginx

    在该目录下执行./nginx 可以启动

    ./nginx
    
    ## 查看进程是否启动
    ps -ef | grep nginx
    
    验证方法:  
    
    直接在浏览器访问 主机IP
    

    3、若主机开启了防火墙,需添加端口到防火墙

    查看防火墙开放的端口:
    firewall-cmd --list-all
    
    设置防火墙开放的端口号:
    firewall-cmd --add-service=http --permanent
    sudo firewall-cmd --add-port=80/tcp --permanent
    
    重启防火墙
    firewall-cmd --reload
    

    nginx常用命令

    在 /usr/local/nginx/sbin 下执行

    -- 查看版本:
    ./nginx -v
    
    -- 关闭nginx
    ./nginx -s stop
    
    -- 启动nginx
    ./nginx
    
    -- 重新加载nginx
    ./nginx -s reload
    

    nginx的配置

    1、配置文件的位置:
    /usr/local/nginx/conf/nginx.conf

    2、配置文件的内容
    分为三部份内容:

    1、全局块  
      从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令。  
         
      比如: worker_processes  1;   
        worker_processes 的值越大,可以支持的并发处理量越多   
    
    
    2、events块
      主要影响nginx服务器与用户的网络连接
      
      比如: worker_connections  1024;     nginx支持的最大连接数
    
    
    3、http块(配置最多)
    

    nginx配置实例 -- 反向代理一

    示例: 在页面访问 www.123.com, 跳转到Linux的tomcat主页面
    
    操作:
    1、先修改hosts文件,将域名与主机地址做映射
        10.20.0.102     www.123.com
    
    2、在nginx中进行请求转发的配置(反向代理的配置)
       修改文件 /usr/local/nginx/conf/nginx.conf ,文件里的http下的server中的内容 ,  
       1、将server_name 改成主机对应的ip
       2、在location中添加  proxy_pass   http://127.0.0.1:8080;
       添加的是要转发的端口内容
    

    如下所示:

    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       80;
            # server_name  location;
            server_name  10.20.0.102;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                proxy_pass   http://127.0.0.1:8080;
                index  index.html index.htm;
            }
            
        ...
    
    
    3、重新加载nginx
    
    ./nginx -s reload
    
    4、在页面上访问www.123.com 进行测试
    可以看到页面内容为已转发后的内容 -- tomcat页面。
    

    nginx配置实例 -- 反向代理二

    监听一个端口,根据端口下面的内容不同,转发向不同的端口。

    例: 在主机上启动了两个服务,端口号分别是8080、8081,nginx监听的端口为9001,当请求的内容中为:

    http://10.20.0.102:9001/edu/      转发到10.20.0.102:8080  
    http://10.20.0.102:9001/vop/      转发到10.20.0.102:8081
    

    nginx 的配置如下:

    server {
            listen       9001;
            server_name  10.20.0.102;
    
            location ~ /edu/ {
                proxy_pass   http://127.0.0.1:8080;
            }
            
            location ~ /vod/ {
                proxy_pass   http://127.0.0.1:8081;
            }
        }
    

    location 的使用说明

    location [ = | ~ | ~* | ^~ ] uri {
    
    }
    
    1、 = : 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功就停止继续向下搜索并立即处理该请求。
    
    2、 ~ : 用于表示uri包含正则表达式,并且区分大小写。
    
    3、~* : 用于表示uri包含正则表达式,不区分大小写。
    
    4、^~ : 用于不含正则表达式的 uri 前,要求 nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,
             立即使用此 location 处理请求,而不再使用 location块中的正则 uri 和请求字符串做匹配。
    
    注意: 如果uri包含正则表达式,则必须要有 ~ 或者 ~* 标识。
    

    nginx配置实例 -- 反向代理三

    例: 当一个服务对不同的系统提供的接口号不同时,对系统一提供的接口的端口为10.20.0.102:8080, 对系统二提供的接口的端口为 10.20.0.102:8081, 这时需要nginx同时监听这两个端口,然后将请求转发到服务的端口上(服务自身的端口实际为1158).
    配置如下:

    http{
        ...
        # 服务自身端口
        upstream myserver {
            server      10.20.0.102:1158;
        }
    
        server {
            listen       8080;
            listen       8081;
            server_name     localhost;
            
            location / {
                proxy_pass   http://myserver;
                
                ......
            }   
        }
    }
    

    nginx配置实例 -- 负载均衡

    根据请求,将请求平均转发到不同的服务上。
    如: 有一个请求到 10.20.0.102:80 上,然后nginx将请求转发到8080,8081端口上。

    /usr/local/nginx/conf/nginx.conf 配置如下:

    http{
        ...
        upstream myserver {
            server   10.20.0.102:8080;
            server   10.20.0.102:8081;
        }
    
        server {
            listen          80;
            server_name     10.20.0.102;
            
            location / {
                proxy_pass   http://myserver;
                
                ......
            }   
        }
    }
    

    负载均衡的策略:

    1、轮询(默认的策略)

    每个请求按时间顺序逐一分配到不同的后端服务器上,如果服务器down了,会自动剔除。
    

    2、 weight(权重)

    权重默认为1,权重越高被分配的客户端越多。
    如:上面的例子中,8081的性能更好,分配的客户端更多。
    
    upstream myserver {
        server   10.20.0.102:8080   weight=5;
        server   10.20.0.102:8081   weight=10;
    }
    

    3、ip_hash

    每个请求按访问IP的hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session 的问题。
    例如:
    
    upstream server_pool{
        ip_hash;
        server 10.20.0.101:8080;
        server 10.20.0.102:8080;
    }
    

    4、fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    
    upstream server_pool{
        server 10.20.0.101:8080;
        server 10.20.0.102:8080;
        fair;
    }
    

    nginx配置实例 -- 动静分离

    nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分开,严格意义上说应该是动态请求跟静态请求分开,可以理解成使用nginx处理静态页面,tomcat处理动态页面。

    动静分离从目前实现角度来讲大致分为两种:

    一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,这是目前主流的方案。
    另一种是动态跟静态文件混合在一起发布,通过nginx来分开。
    
    通过location指定不同的后缀名实现不同的请求转发,通过expires参数设罝,可以使浏览器缓存过期时间,减少与限务器之间的请求和流量。  
      具体Expires定义:
    是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量。
    此种方法非常适合不经常变动资源。(如果经常更新的文件, 不建议使用Expires来缓存)。
    假如这里设罝3d,表示在这3天之内访问这个URL,发送 一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,
    如果有修改,则直接从服务器重新下载,返回状态码200。
    

    相关文章

      网友评论

          本文标题:nginx的安装配置

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