栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx常用功能配置

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx常用功能配置

Nginx常用功能配置 1 Nginx简介

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

2 Nginx安装

Nginx的安装不是本文的重点,在此不过多讲述,根据链接安装即可。参考链接:https://www.runoob.com/linux/nginx-install-setup.html

3 Nginx配置详解

nginx安装目录/conf/nginx.conf文件,其文件结构如下:

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

其中:

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

nginx配置详解:

########### 每个指令必须有分号结束。#################
#user administrator administrators;  #配置用户或者组,默认为nobody nobody。
#worker_processes 2;  #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大连接数,默认为512
}
http {
    include       mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
    #access_log off; #取消服务日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #热备
    }
    error_page 404 https://www.baidu.com; #错误页
    server {
        keepalive_requests 120; #单连接请求上限次数。
        listen       4545;   #监听端口
        server_name  127.0.0.1;   #监听地址       
        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
           #root path;  #根目录
           #index vv.txt;  #设置默认页
           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
           deny 127.0.0.1;  #拒绝的ip
           allow 172.18.5.54; #允许的ip           
        } 
    }
}

注意:

  1. 惊群现象:一个网路连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能。
  2. 每个指令必须有分号结束。
4 Nginx常用功能 4.1 反向代理

**正向代理:**客户端通过代理服务器发送请求,隐藏用户端信息。

**反向代理:**代理服务端接收请求,隐藏服务端信息。比如用户通过www.taobao.com访问淘宝,不需要知道淘宝的服务器是分发处理用户请求的。

服务器ip:192.168.161.189

Nginx端口:80

Tomcat1端口:8070

Tomcat2端口:8080

#第一个反向代理配置
server {
        keepalive_requests 120; #单连接请求上限次数。
        listen       *:8081;   #监听端口
        location / {
           root html;  #根目录
           index index.html index.htm;  #设置默认页
           proxy_pass  http://192.168.161.189:8070;  #请求转向mysvr 定义的服务器列表          
        } 
    }
#第二个反向代理配置
server {
        keepalive_requests 120; #单连接请求上限次数。
        listen       *:8082;   #监听端口
        location / {
           root html;  #根目录
           index index.html index.htm;  #设置默认页
           proxy_pass  http://192.168.161.189:8080;  #请求转向mysvr 定义的服务器列表          
        } 
    }
4.2 负载均衡

负载均衡(Load Balance),其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。

Nginx实现负载均衡配置如下:

http {
    upstream upstream_name{
        server 192.168.0.28:8001;
        server 192.168.0.28:8002;
    }

    server {
        listen       8080;
        server_name  localhost;

        location / {
            proxy_pass http://upstream_name;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
  1. 在http下添加 upstream upstream_name {} 来配置要映射的服务器。
  2. server下的location 我们将 / 下的全部请求转发到 http://upstream_name

Nginx负载均衡策略:

  • 轮询:(默认)最基本的配置方法,它是upstream的默认策略,每个请求会按时间顺序逐一分配到不同的后端服务器。

  • 权重:在轮询策略的基础上制定沦陷的几率。

    upstream foo {
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003 backup;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    

    **注:**weight参数用于制定轮询的几率,weight默认值为1;weight的数值和被访问的几率成正比。

  • ip_hash: 负载均衡器按照客户端IP地址的分配方式,可以确保相同客户端的请求一直发送到相同的服务器。这样每个访客都固定访问一个后端服务器。

    upstream foo {
        ip_hash;
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    
  • **least_conn 最小连接:**把请求转发给连接数较少的后端服务器。

    upstream foo {
        least_conn;
        server localhost:8001 weight=2;
        server localhost:8002;
        server localhost:8003 backup;
        server localhost:8004 max_fails=3 fail_timeout=20s;
    }
    
4.3 动静分离

动静分离是将网站静态资源(HTML,Javascript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。
**动静分离的一种常用做法:**将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求调度到nginx服务器,达到动静分离的目标。

server {
        listen 80;
        server_name  kevin.com;
        access_log  /data/nginx/logs/kevin.com-access.log main;
        error_log  /data/nginx/logs/kevin.com-error.log;
 
        #动态访问请求转给tomcat应用处理
        location ~ .(jsp|page|do)?$ {      #以这些文件结尾的
           proxy_set_header  Host $host;
           proxy_set_header  X-Real-IP  $remote_addr;
           proxy_pass http://tomcat地址;
        }
 
        #设定访问静态文件直接读取不经过tomcat
        location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$  {     #以这些文件结尾的
           expires      30d;
           root /data/web/html ;
        }
}
4.4 高可用

Nginx源码:https://trac.nginx.org/nginx/browser

Nginx官网:http://www.nginx.org/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号