最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • nginx常见用法

    正文概述 掘金(卖油条的。)   2021-02-23   609

    这里会对nginx常见用法做一下基本介绍,其他请参考nginx文档。

    概述

    ngnix是一个服务器,可以用来做

    • http服务器
    • http反向代理服务器
    • mail代理服务器
    • tcp/udp代理服务器

    基本用法

    这里假定已经下载完。
    nginx有主进程和一些工作进程,主进程负责读取和计算配置以及维护工作进程,工作进程处理真正的请求,配置文件默认为/etc/nginx/nginx.conf

    启动、停止和重启

    相关操作要使用以下语法

    nginx -s signal
    

    其中signal可取

    • stop 强制立刻停止
    • quit 停止但是要等当前的请求处理完
    • reload 重启
    • reopen 重新打开日志记录,可用于旧日志文件移走后,重新生成日志文件

    配置文件的结构

    nginx包含很多模块,我们可以使用配置文件中的指令进行控制。
    一个简单的指令包含空格分开的name和参数,最后加一个分号。
    一个块指令(block directive)和一个简单指令类似,但是结尾的不是分号而是一个花括号,如果在花括号中有其他指令,则被称为一个上下文(context),比如 events, http, server, and location。任何上下文之外的地方被认为是主上下文(main context),其中events and http指令在主上下文,server 在http上下文,location在server上下文。

    井号后的内容被认为是注释。

    静态资源服务

    web服务器可以用来提供静态资源访问,可以根据请求来访问不同路径, 比如在http上下文添加以下配置

    server {
        location / {
            root /data/www;
        }
    
        location /images/ {
            root /data;
        }
    }
    

    location块指令的参数进行匹配,如果一个请求能匹配到多个路径则以最长的为准。
    比如请求/就会匹配第一个,去/data/www/获取资源,请求/images/就会匹配第二个,到/data/images/中获取资源。

    代理服务器

    代理服务器是一个服务器,当收到请求,会把请求发到被代理的服务器,然后将获取的请求发送给客户端。

    我们这里做一个简单的代理服务器,接收80端口的请求,其中图片使用本地目录,其他请求发送到8080端口。

    在配置文件中使用两个server块指令,第一个监听80端口,对于图片我们使用正则检查相关后缀,正则前面要使用~

    server {
        location / {
            proxy_pass http://localhost:8080;
        }
    
       location ~ \.(gif|jpg|png)$ {
        root /data/images;
      }
    }
    

    另一个监听8080端口,在这里server上下文中包含root字段,当location上下文中没有root参数时会默认使用这个。

    server {
        listen 8080;
        root /data/up1;
    
        location / {
        }
    }
    

    nginx怎么处理一个请求

    基于name的虚拟服务器

    我们可以配置三个监听80端口的虚拟服务器

    server {
        listen      80;
        server_name example.org www.example.org;
        ...
    }
    
    server {
        listen      80;
        server_name example.net www.example.net;
        ...
    }
    
    server {
        listen      80;
        server_name example.com www.example.com;
        ...
    }
    

    这个配置会对请求header中的host字段进行路由,如果没有匹配到,就会路由到默认服务器,默认服务器是第一个,也可以通过参数default_server指定

    server {
        listen      80 default_server;
        server_name example.net www.example.net;
        ...
    }
    

    如果不允许没有host字段的请求访问,则可以采用以下配置关闭连接,其中空字符的name可以对其进行匹配

    server {
        listen      80;
        server_name "";
        return      444;
    }
    

    这里的server_name可以使用以下形式表示

    • 准确的name
    • 以星号开始,比如*.example.org
    • 以星号结尾,比如mail.*
    • 正则

    使用http负载均衡

    跨多个应用实例的负载均衡通常用于优化资源利用、最大化吞吐量、减少延迟和容错。
    我们可以使用nginx作为一个有效的负载均衡器来将流量分配到多个应用服务器,来提高性能、稳定性和可靠性。

    nginx负载均衡的方法有三种

    • round-robin 将请求轮流分配
    • least-connected 将请求分配给最小序号的活跃连接
    • 基于client的ip对应的hash值进行分配,这样可以保证同一个请求被同一个服务器处理

    最简单的配置这样的

    http {
        upstream myapp1 {
            server srv1.example.com;
            server srv2.example.com;
            server srv3.example.com;
        }
    
        server {
            listen 80;
    
            location / {
                proxy_pass http://myapp1;
            }
        }
    }
    

    默认round-robin,如果要使用least-connected或ip_hash则在服务器组中添加指令

        upstream myapp1 {
            least_conn;#或ip_hash
            server srv1.example.com;
            server srv2.example.com;
            server srv3.example.com;
        }
    

    配置https

    需要添加ssl参数(http2参数可以开启http2),和指定相关证书和私钥

    server {
        listen              443 ssl http2;
        server_name         www.example.com;
        ssl_certificate     www.example.com.crt;
        ssl_certificate_key www.example.com.key;
     
        ...
    }
    

    为了将http请求转发给https所以,要把80端口的数据转发到https

        server {
            listen       80;
            rewrite ^(.*)$ https://$host$1 
        }
    

    添加header

    可以在 http, server, location上下文使用add_header添加响应header,语法

    add_header name value [always];
    

    比如

     location / {
               add_header    Cache-Control 0;
            }
    

    完结


    起源地下载网 » nginx常见用法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元