美文网首页
Nginx 入门了解

Nginx 入门了解

作者: 小张同学_loveZY | 来源:发表于2018-08-19 15:13 被阅读0次

    Nginx

    nginx[engine x]是一个HTTP和反向代理服务器,一个邮件代理服务器和一个通用的TCP / UDP代理服务器,最初由Igor Sysoev编写。

    结构组成

    nginx是基于进程的并发服务器,由一个master进程,和多个的workerc进程,master进程负责转发外部请求,worker负责负责处理具体的请求。

    反向代理

    反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端。这里代理服务器是一个连接内部网络的入口,就如门面模式中的接口一样。内部网络可以有多种组织方式。

    正向代理

    工作原理就像一个跳板,用户客户端把请发发送给网络时,先经过代理服务器,由代理服务器包装用户请求向互联网目的主机发送用户的请求,并把结果返回。比如:我访问不了google.com,但是我能访问一个代理服务器A,A能访问google.com。于是我先连上代理服务器A,告诉他我需要google.com的内容,A就去取回来,然后返回给我。

    Nginx优点:
    1. 反向代理保护了真实的web服务器,web服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,但其实该功能可以使用网关实现,因此你也可以理解反向代理服务器自带网关属性。

    2. 节约了有限的IP地址资源,企业可以通过不同的服务器对外提供服务,而不需要为每个服务器提供IP地址,因此可以统一外部的访问,而在内部通过反向代理实现不同的服务提供。

    3. 减少WEB服务器压力,提高响应速度,反向代理可以利用缓存和负载均衡技术,降低web服务器的压力,从而更快的响应外部的访问。

      • 缓存
        反向代理服务器缓存下经常被外部访问的数据,从而直接对外提供信息,而降低对于服务器访问的压力。
      • 负载均衡
        首先要求有多几台的服务器,反向代理服务器通过算法合理分配对于内容的访问,比避免由此导致服务器拥堵。
    Nginx常用命令
    service nginx start    // 启动nginx服务
    systemctl nginx start  // centos 7 下启动nginx服务
    
    nginx -s stop   // fast shutdown
    nginx -s quit   // graceful shutdown
    nginx -s reload //reloading the configuration file
    nginx -s reopen //reopening the log files
    
    ps -ax | grep nginx // 查看nginx进程
    kill -s QUIT ID    // 杀死master进程
    
    nginx -h            // 查看帮助
    

    Nginx配置文件

    1. 配置文件全局一览
    main # 全局设置
    events { # Nginx工作模式
        ....
    }
    http { # http设置
        ....
        upstream myproject { # 负载均衡服务器设置
            .....
        }
        server  { # 主机设置
            ....
            location { # URL匹配
                ....
            }
        }
        server  {
            ....
            location {
                ....
            }
        }
        ....
    }
    
    2. main模块
    # 指定用户和用户组
    user zhangjue zhangjue;
    # worker子进程数,不含master,一般和CPU核心数相同
    worker_processes 2;
    # 错误日志,日志输出级别有debug、info、notice、warn、error、crit可供选择。
    error_log /usr/local/var/log/nginx/error.log notice;
    # 指定进程id的存储文件位置
    pid /usr/local/var/run/nginx/nginx.pid;
    # 一个nginx进程可以打开的最多文件描述符数目,最大值为65535
    worker_rlimit_nofile 1024;
    
    3. events模块
    events {
        # 工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll,具体自查
        use epoll; #linux平台
        # 用于定义Nginx每个进程的最大连接数
        worker_connections  1024;
    }
    
    4. http模块
    # 负责HTTP服务器相关属性的配置
    http {
         # 通过include导入mime类型文件,来告诉nginx来识别文件类型
        include mime.types;
        # 缺省的MIME格式(Content type)
        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"';
        # 日志存放的地址,使用main格式
        access_log /usr/local/var/log/nginx/access.log  main;
        
        # 客户端连接保持活动的超时时间 10s
        keepalive_timeout 10;
        # 缓存设置
        upstream myproject {
            .....
        }
        # 服务器设置,多个
        server {
            ....
        }
    }
    
    5. server模块
    server {
        
        # 监听端口
        listen 8080;
        
        # 用来指定IP地址或者域名,多个域名之间用空格分开
        server_name localhost 192.168.12.10 www.yangyi.com;
        
        # 全局定义,指定根目录。
        root   /Users/yangyi/www;
        # 全局定义访问的默认首页地址
        index  index.php index.html index.htm; 
        # 访问日志和格式
        access_log  usr/local/var/log/host.access.log  main;
        # 错误日志和级别
        error_log  usr/local/var/log/host.error.log  error;
        
        # location 后面对应访问路由,/代表根目录
        location / {
        
            # 访问的文件真实所在地
            root   /Users/yangyi/www;
            # 访问主页
            index  index.php index.html index.htm;
        }
        
        # 配置laravel框架的nginx时需要加以下配置定位
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        
        # 正则匹配带有php结尾的访问php服务器
        location ~ \.php$ {
            #laravel 需要的配置,
            fastcgi_split_path_info ^(.+\.php)(/.+)$; 
            # 端口
            fastcgi_pass   php:9000;
            # 根页面
            fastcgi_index  index.php;
            #根目录所在文件夹
            fastcgi_param  SCRIPT_FILENAME  /var/php-fpm/www/php_lqActivity/public/$fastcgi_script_name;
            include        fastcgi_params;
        }       
    }
    

    因为每一个service都比较长,建议用include命令包含配置文件,而把配置文件另起一个文本编辑。正式因为location指定了一个服务器对于不同

    6. upstream模块
    #定义一个负载名字
    upstream zhangjue{
        ip_hash;  # 使用的算法
        # 定义了四个可访问的主机地址
        server 192.168.12.1:80;
        server 192.168.12.2:80  down;
        server 192.168.12.3:8080  max_fails=3  fail_timeout=20s;
        server 192.168.12.4:8080;
    }
    

    负载均衡算法有:

    • weight 轮询(默认)
    • ip_hash
    • url_hash
    • fair

    其他的还有页面缓存等一些配置,由于我目前还没有使用过,应该会在之后进行补充,或者读者也可以自己查询相关资料。

    官网资料连接:官网Document

    推荐博客:Nginx请求反向代理

    相关文章

      网友评论

          本文标题:Nginx 入门了解

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