nginx 订阅
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 展开全文
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
信息
软件类型
开源软件,网页服务器软件
最新生产版本
1.18.0 [1]
别    名
engine x
最新主线版本
1.19.1 [1]
中文名
nginx
软件许可
BSD许可
外文名
Nginx
兼容性
Linux系统,Windows NT系统,OS X
nginx优点
Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。 Nginx 的源代码使用 2-clause BSD-like license。Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。无缓存的反向代理加速,简单的负载均衡和容错。FastCGI,简单的负载均衡和容错。模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。支持 SSL 和 TLSSNI。 [2]  Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。作为邮件代理服务:Nginx 同时也是一个非常优秀的邮件代理服务(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
收起全文
精华内容
参与话题
问答
  • Nginx

    千次阅读 2019-10-17 18:56:59
    Nginx 编译 Nginx 针对 Unix 环境 下载 NginxNginx 官网 出下载想要编译版本的 NginxNginx 官方提供三个版本: Mainline version 主线版本,功能较新,稳定性较 Stable version 稍差,建议学习使用该版本...

    Nginx

    Nginx

    编译 Nginx

    针对 Unix 环境

    下载 Nginx

    Nginx 官网 出下载想要编译版本的 Nginx,Nginx 官方提供三个版本:

    1. Mainline version

    主线版本,功能较新,稳定性较 Stable version 稍差,建议学习使用该版本,实际生产使用 Stable version。

    1. Stable version

    稳定版本

    1. Legacy versions

    历史版本

    wget http://nginx.org/download/nginx-1.17.4.tar.gz
    tar -zxvf nginx-1.17.4.tar.gz
    cd nginx-1.17.4

    Nginx 源码目录介绍

    Nginx 源码目录

    auto

    编译时的依赖库以及针对操作系统特性选择库

    CHANGES

    英文版 Nginx 各版本变更说明

    CHANGES.ru

    俄文版 Nginx 各版本变更说明(Nginx 作者是俄罗斯人)

    conf

    配置文件目录

    configure

    编译配置,编译前生成中间文件方便编译

    主要有编译路径配置、某些功能开关及模块配置

    --prefix 设置服务器存放地址,也是其他未配置路径的目录的默认根目录

    --XXX-path 代表设置 XXX 目录的地址

    --with-XXX_module 代表启用某些模块

    --without-XX_module 代表禁用某些模块,这些模块时 Nginx 默认会编译的模块

    还有一些其他参数可以参考可以参考 Ngxin 官方文档

    contrib

    vim 提示插件以及一些提升使用 Nginx 效率的工具脚本

    未配置 vim 提示时使用 vim 打开 nnginx.conf

    配置 vim 提示

    cp -r contrib/vim ~/.vim 

    配置 vim 提示后

    针对不同层次结构以及不同关键字颜色区别会更明显

    html

    存放 index.html(Nginx 默认欢迎页)和 50x.html(Nginx 默认错误页)

    index.html:

    index.html

    50x.html:

    50x.html

    LICENSE

    许可证信息

    man

    Nginx 为 linux 提供的帮助文件

    可以使用命令查看(与编译后使用 nginx -h 相比内容更丰富)

    man man/nginx.8

    man

    README

    自述文件

    src

    源码

    编译

    首先需要使用 configure 进行配置,一般只设置 --prefix 即可:

    ./configure --prefix=/home/sanchan/nginx

    配置会输出配置简要说明:

    Configuration summary
        using system PCRE library
        OpenSSL library is not used
        using system zlib library
    
      nginx path prefix: "/home/sanchan/nginx"
      nginx binary file: "/home/sanchan/nginx/sbin/nginx"
      nginx modules path: "/home/sanchan/nginx/modules"
      nginx configuration prefix: "/home/sanchan/nginx/conf"
      nginx configuration file: "/home/sanchan/nginx/conf/nginx.conf"
      nginx pid file: "/home/sanchan/nginx/logs/nginx.pid"
      nginx error log file: "/home/sanchan/nginx/logs/error.log"
      nginx http access log file: "/home/sanchan/nginx/logs/access.log"
      nginx http client request body temporary files: "client_body_temp"
      nginx http proxy temporary files: "proxy_temp"
      nginx http fastcgi temporary files: "fastcgi_temp"
      nginx http uwsgi temporary files: "uwsgi_temp"
      nginx http scgi temporary files: "scgi_temp"

    配置生成的中间文件会放置到 objs目录下,有兴趣的小伙伴可以看下。

    然后就可以进行编译了:

    make

    编译会在 objs 目录下生产 nginx 、nginx.8 及 ngx_modules.o,如果是升级 Nginx 可以将这些文件替换旧文件,如果是全新安装则执行:

    make install

    这样在之前配置的路径 /home/sanchan/nginx 中就可以看到 Nginx 相关文件了。

    安装完成

    sbin 为 Nginx 二进制执行文件目录

    logs 为 Nginx 日志目录

    conf 及 html 与下载的 Nginx 源码中目录是一致的

    以上就完成了 Nginx 的编译工作

    拿客

    展开全文
  • nginx

    万次阅读 多人点赞 2019-02-28 16:39:12
    nginx1. nginx简介2. nginx的特性与优点2.1 nginx的特性2.2 nginx的优点3. nginx反向代理3.1 反向代理的作用3.2 正向代理和反向代理的区别4. nginx的安装与配置4.1 nginx的安装4.2 nginx安装后的配置 1. nginx简介 ...

    1. nginx简介

    nginx(发音同engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。

    nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

    2. nginx的特性与优点

    2.1 nginx的特性

    • Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接
    • 高度的模块化和自由软件许可证是的第三方模块层出不穷(这是个开源的时代啊~)
    • Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris, AIX,Mac OS等操作系统上
    • 这些优秀的设计带来的极大的稳定性

    2.2 nginx的优点

    • 高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数
    • 内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M)
    • 配置文件非常简单:风格跟程序一样通俗易懂
    • 成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
    • 支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组
    • 内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问
    • 节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头
    • 稳定性高:用于反向代理,宕机的概率微乎其微
    • 模块化设计:模块可以动态编译
    • 外围支持好:文档全,二次开发和模块较多
    • 支持热部署:可以不停机重载配置文件
    • 支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化

    3. nginx反向代理

    多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。

    客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

    反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

    3.1 反向代理的作用

    • 保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
    • 负载均衡,通过反向代理服务器来优化网站的负载

    3.2 正向代理和反向代理的区别

    • 在正向代理中,Proxy和Client同属于一个LAN(图中方框内),隐藏了客户端信息;
    • 在反向代理中,Proxy和Server同属于一个LAN(图中方框内),隐藏了服务端信息;

    4. nginx的安装与配置

    4.1 nginx的安装

    //创建系统用户nginx

    [root@xaii ~]# groupadd -r nginx
    [root@xaii ~]# useradd -r -M -s /sbin/nologin -g nginx nginx
    

    //安装依赖环境

    [root@xaii ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
    暗转过程省略......
    [root@xaii ~]# yum -y groups mark install 'Development Tools'
    安装过程省略......
    

    //创建日志存放目录

    [root@xaii ~]# mkdir -p /var/log/nginx
    [root@xaii ~]# chown -R nginx.nginx /var/log/nginx/
    

    //下载nginx,下载过程省略,存放至/usr/src目录下

    [root@xaii src]# wget http://nginx.org/download/nginx-1.12.0.tar.gz
    [root@xaii ~]# ls /usr/src/ |grep nginx
    nginx-1.12.0.tar.gz
    

    //编译安装nginx

    [root@xaii src]# tar xf nginx-1.12.0.tar.gz 
    [root@xaii src]# cd nginx-1.12.0
    
    [root@xaii nginx-1.12.0]# ./configure \
     --prefix=/usr/local/nginx \
     --user=nginx \
     --group=nginx \
     --with-debug \
     --with-http_ssl_module \
     --with-http_realip_module \
     --with-http_image_filter_module \
     --with-http_gunzip_module \
     --with-http_gzip_static_module \
     --with-http_stub_status_module \
     --http-log-path=/var/log/nginx/access.log \
     --error-log-path=/var/log/nginx/error.log
    //安装过程省略....
    
    [root@xaii nginx-1.12.0]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install
    //-j是指定多少内核
    //过程省略......
    

    4.2 nginx安装后的配置

    //添加环境变量

    [root@xaii ~]# vim /etc/profile.d/nginx.sh
    [root@xaii ~]# cat /etc/profile.d/nginx.sh 
    export PATH=/usr/local/nginx/sbin:$PATH
    [root@xaii ~]# . /etc/profile.d/nginx.sh
    

    //服务控制方式,使用nginx命令

    -t  //检查配置文件语法
    [root@xaii ~]# nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    
    
    -v  //输出nginx的版本
    root@xaii ~]# nginx -v
    nginx version: nginx/1.12.0
    
    -c  //指定配置文件的路径
    需要拷贝两个文件:nginx.conf和mime.type至新的路径
    [root@xaii conf]# cp -a nginx.conf /opt/nginx/
    [root@xaii conf]# cp -a mime.types /opt/nginx
    [root@xaii ~]# ps -ef |egrep -v 'grep'|grep nginx
    root       4040      1  0 00:03 ?        00:00:00 nginx: master process nginx -c /optnginx/nginx.conf
    nginx      4041   4040  0 00:03 ?        00:00:00 nginx: worker process
    可以看到,现在用的配置文件为/opt/nginx/nginx.conf
    
    -s  //发送服务控制信号,可选值有{stop|quit|reopen|reload}
    

    //nginx和apache不能同时开启

    //因为apache和nginx的端口都是80,当apache服务开启时,无法开始nginx服务
    
    [root@xaii ~]# ss -antlp|grep 80
    LISTEN     0      128         :::80                      :::*                   users:(("httpd",pid=4081,fd=4),("httpd",pid=4080,fd=4),("httpd",pid=4079,fd=4),("httpd",pid=4078,fd=4),("httpd",pid=4077,fd=4),("httpd",pid=4076,fd=4))
        
    [root@xaii ~]# nginx
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    ^C
    

    //关闭apache服务,再开启nginx服务

    [root@xaii ~]# apachectl stop
    [root@xaii ~]# nginx
    [root@xaii ~]# ss -antlp|grep 80
    LISTEN     0      128          *:80                       *:*                   users:(("nginx",pid=4069,fd=6),("nginx",pid=4068,fd=6))
    

    4.3利用脚本控制nginx服务的开启,重载,和关闭

    #! /bin/bash
    
    nginx=/usr/local/nginx/sbin/nginx
    conf_path=/opt/nginx/nginx.conf
    
    case $1 in
    start)
            $nginx -c $conf_path
    if [ $? -eq 0 ];then
            echo 'nginx start sucessful'
    else
            echo 'nginx start faild'
    fi
            ;;
    
    
    restart)
            $nginx -s stop
            $nginx -c $conf_path
    if [ $? -eq 0 ];then
            echo 'nginx restart sucessful'
    else
            echo 'nginx restart faild'
    fi
            ;;
    
    
    stop)
            $nginx -s stop 2>/dev/null
    if [ $? -eq 0 ];then
            echo 'nginx is off'
    else
            echo 'nginx error'
    fi
            ;;
    esac
    

    5. nginx的配置文件详解

    主配置文件:/usr/local/nginx/conf/nginx.conf

    • 默认启动nginx时,使用的配置文件是:安装路径/conf/nginx.conf文件
    • 可以在启动nginx时通过-c选项来指定要读取的配置文件

    5.1 nginx.conf配置详解

    nginx.conf的内容分为以下几段:

    • main配置段:全局配置段。其中main配置段中可能包含event配置段
    • event {}:定义event模型工作特性
    • http {}:定义http协议相关的配置

    支持使用变量:

    • 内置变量:模块会提供内建变量定义
    • 自定义变量:set var_name value

    5.2 用于调试、定位问题的配置

    • 参数daemon {on|off}; //是否以守护进程方式运行nginx,调试时应设置为off
    • master_process {on|off}; //是否以master/worker模型来运行nginx,调试时可以设置为off
    • error_log 位置 级别; //配置错误日志

    5.3 正常运行必备的配置参数

    • user USERNAME [GROUPNAME]; //指定运行worker进程的用户和组

    • pid /path/to/pid_file; //指定nginx守护进程的pid文件

    • worker_rlimit_nofile number; //设置所有worker进程最大可以打开的文件数,默认为1024(文件系统最大打开的文件数为65535)

        //此设置为nginx的配置,还需配置系统的文件
        [root@nginx ~]# head -3 /usr/local/nginx/conf/nginx.conf
        user  nginx;(初始为nobody)
        worker_processes  4;(cpu核心数)
        worker_rlimit_nofile 30000;(默认为1024,最大为65535,我们设置为30000)
        [root@nginx ~]# nginx -s reload
      
      
        //修改系统的硬限制和软限制,都设置为最大的65535
        [root@nginx ~]# vim /etc/security/limits.conf 
        [root@nginx ~]# tail -4 /etc/security/limits.conf 
        * soft nofile 65535
        * hard nofile 65535
      
        # End of file
      
    • worker_rlimit_core size; //指明所有worker进程所能够使用的总体的最大核心文件大小,保持默认即可

    5.4 优化性能的配置参数

    • worker_processes n; //启动n个worker进程,这里的n为了避免上下文切换,通常设置为cpu总核心数-1或等于总核心数
    • worker_cpu_affinity cpumask …; //将进程绑定到某cpu中,避免频繁刷新缓存
      • //cpumask:使用8位二进制表示cpu核心,如:
        0000 0001 //第一颗cpu核心
        0000 0010 //第二颗cpu核心
        0000 0100 //第三颗cpu核心
        0000 1000 //第四颗cpu核心
        0001 0000 //第五颗cpu核心
        0010 0000 //第六颗cpu核心
        0100 0000 //第七颗cpu核心
        1000 0000 //第八颗cpu核心
    • timer_resolution interval; //计时器解析度。降低此值,可减少gettimeofday()系统调用的次数
    • worker_priority number; //指明worker进程的nice值

    //具体配置:

    [root@nginx ~]# head /usr/local/nginx/conf/nginx.conf |grep worker_
    worker_processes  4;(cpu核心数为4个)
    worker_rlimit_nofile 30000;
    worker_cpu_affinity 00000001 00000010 00000100 00001000;(所以这里也只能写4个)
    [root@nginx ~]# nginx -s reload
    

    5.5 事件相关的配置:event{}段中的配置参数

    • accept_mutex {off|on}; //master调度用户请求至各worker进程时使用的负载均衡锁;on表示能让多个worker轮流地、序列化地去响应新请求

        [root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf	
        	  events {
            worker_connections  1024;
            accept_mutex on;(添加此内容)
        }
      
    • lock_file file; //accept_mutex用到的互斥锁锁文件路径

        pid        logs/nginx.pid;
        lock_file  logs/nginx.lock;(添加此内容,写在event外部,顶格写)
      
    • use [epoll | rtsig | select | poll]; //指明使用的事件模型,建议让nginx自行选择

    • worker_connections #; //每个进程能够接受的最大连接数

        events {
        worker_connections  1024;
        accept_mutex on;
      

      }

    注意:

    worker_connections(连接数) * worker_processes(cpu核心数) <=30000
    

    5.6 网络连接相关的配置参数

    • keepalive_timeout number; //长连接的超时时长,默认为65s

        keepalive_timeout  65;
      
    • keepalive_requests number; //在一个长连接上所能够允许请求的最大资源数

        keepalive_requests 100;(配置文件中没有设置,默认为100,看自己的业务设置)
      
    • keepalive_disable [msie6|safari|none]; //为指定类型的UserAgeng禁用长连接

    • tcp_nodelay on|off; //是否对长连接使用TCP_NODELAY选项,为了提升用户体验,通常设为on

        tcp_nodelay on;(默认为on)
      
    • client_header_timeout number; //读取http请求报文首部的超时时长

    • client_body_timeout number; //读取http请求报文body部分的超时时长

    • send_timeout number; //发送响应报文的超时时长

    5.7 fastcgi的相关配置参数

    LNMP:php要启用fpm模型
    配置示例如下:

    location ~ \.php$ {
      root html;
      fastcgi_pass 127.0.0.1:9000;      //定义反向代理
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
      include fastcgi_params;
    }
    

    6. 搭建lnmp架构

    6.1 环境:

    nginx端:192.168.157.69
    php、mysql、zabbix端:192.168.157.59

    6.2 php安装

    详情请看:php安装

    6.3 mysql安装

    详情请看:mysql安装

    6.4 php端配置

    //修改配置文件并重启php服务

    [root@xaii ~]# tail -2 /usr/local/php7/etc/php-fpm.conf
    
    listen = 192.168.157.59:9000	(//添加此内容)
    listen.allowed_clients = 192.168.157.69	(//添加此内容)
    
    [root@xaii ~]# service php-fpm restart 
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done
    
    [root@xaii ~]# ss -antl |grep 9000
    LISTEN     0      128    192.168.157.59:9000                     *:*        
    

    6.5 nginx端配置

    //修改配置文件并新加载nginx服务

    location / {
    root   html;
    index  index.php(//添加此内容) index.html index.htm;
        }
    
    
    
     location ~ \.php$ {
     root           /var/www/zabbix;(php端的zabbix目录)
     fastcgi_pass   192.168.157.59:9000; (指向php端ip地址)
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     include        fastcgi_params;
        }
    
    [root@nginx html]# nginx -s reload
    

    6.6 两端都开启nfs服务,将php端的zabbix目录共享至nginx端

    //php端nfs配置:

    [root@xaii ~]# yum -y install nfs-utils
    [root@xaii ~]# systemctl start nfs
    [root@xaii ~]# echo '/var/www/zabbix *(ro)' > /etc/exports
    [root@xaii ~]# chmod 777 /var/www/zabbix/
    [root@xaii ~]# systemctl restart nfs-server
    

    //nginx端nfs配置,将php端zabbix目录挂载到本地的/usr/local/nginx/html/

    [root@nginx ~]# yum -y install nfs-utils
    [root@nginx ~]# systemctl start nfs
    [root@nginx ~]# mount -t nfs 192.168.157.59:/var/www/zabbix /usr/local/nginx/html(临时挂载)
    [root@nginx ~]# df -Th
    文件系统                                       类型      容量  已用  可用 已用% 挂载点
    /dev/mapper/rhel-root                          xfs        17G  1.5G   16G    9% /
    devtmpfs                                       devtmpfs  901M     0  901M    0% /dev
    tmpfs                                          tmpfs     912M     0  912M    0% /dev/shm
    tmpfs                                          tmpfs     912M  8.6M  904M    1% /run
    tmpfs                                          tmpfs     912M     0  912M    0% /sys/fs/cgroup
    /dev/loop0                                     iso9660   3.8G  3.8G     0  100% /mnt
    /dev/sda1                                      xfs      1014M  143M  872M   15% /boot
    tmpfs                                          tmpfs     183M     0  183M    0% /run/user/0
    192.168.157.59:/usr/local/apache/htdocs/zabbix nfs4       17G  5.9G   12G   35% /usr/local/nginx/html
    [root@nginx ~]# nginx -s reload
    

    6.7 验证

    //输入192.168.157.69

    在这里插入图片描述

    //永久挂载

    [root@nginx ~]# vim /etc/fstab 
    192.168.157.59:/var/www/zabbix /usr/local/nginx/html nfs defaults,_netdev 0 0
    [root@nginx ~]# mount -a 
    [root@nginx ~]# df -Th
    文件系统                       类型      容量  已用  可用 已用% 挂载点
    /dev/mapper/rhel-root          xfs        17G  1.5G   16G    9% /
    devtmpfs                       devtmpfs  901M     0  901M    0% /dev
    tmpfs                          tmpfs     912M     0  912M    0% /dev/shm
    tmpfs                          tmpfs     912M  8.6M  904M    1% /run
    tmpfs                          tmpfs     912M     0  912M    0% /sys/fs/cgroup
    /dev/loop0                     iso9660   3.8G  3.8G     0  100% /mnt
    /dev/sda1                      xfs      1014M  143M  872M   15% /boot
    tmpfs                          tmpfs     183M     0  183M    0% /run/user/0
    192.168.157.59:/var/www/zabbix nfs4       17G  5.8G   12G   34% /usr/local/nginx/html
    

    7. nginx作为web服务器使用的配置:http{}段的配置参数

    http{…}:配置http相关,由ngx_http_core_module模块引入。nginx的HTTP配置主要包括四个区块,结构如下:

    http {//协议级别
      include mime.types;
      default_type application/octet-stream;
      keepalive_timeout 65;
      gzipon;
      upstream {//负载均衡配置
        ...
      }
      server {//服务器级别,每个server类似于httpd中的一个<VirtualHost>
        listen80;
        server_name localhost;
        location / {//请求级别,类似于httpd中的<Location>,用于定义URL与本地文件系统的映射关系
          root html;
          index index.html index.htm;
        }
      }
    }
    

    //http{}段配置指令:
    server {}:定义一个虚拟主机,示例如下:

    server {
      listen 80;
      server_name www.lizhao.com;(自己定义)
      root "/vhosts/web"; (html下网页的路径)
    }
    

    listen:指定监听的地址和端口:

    listen address[:port];
    listen port;
    
    • root path; 设置资源路径映射,用于指明请求的URL所对应的资源所在的文件系统上的起始路径

    • alias path; 用于location配置段,定义路径别名

    • index file; 默认主页面

    • error_page code […] [=code] URI | @name 根据http响应状态码来指明特用的错误页面,例如 error_page 404 /404_customed.html

    • [=code]:以指定的响应码进行响应,而不是默认的原来的响应,默认表示以新资源的响应码为其响应码,例如 error_page 404 =200 /404_customed.html

    location区段,通过指定模式来与客户端请求的URI相匹配:

    //功能:允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location配置块中的配置所处理,例如做访问控制等功能
    

    例如:
    URL:https://www.baidu.com/?tn=sitehao123_15
    URI:www.baidu.com
    ?以前的是协议(https)+URI,?以后的是参数。

    //语法:location [ 修饰符 ] pattern {......}
    
    展开全文
  • Nginx-已编译的nginx-添加新模块

    万次阅读 2020-02-29 12:37:12
    /usr/local/nginx/sbin/nginx -V 此处我是安装了配置SSL 想在此加上FastDFS模块 将红色的地方复制出来记到一个小本本上 ./configure --prefix=/usr/local/nginx --with-...

    1.查看已有模块

     /usr/local/nginx/sbin/nginx -V
    

    此处我是安装了配置SSL 想在此加上FastDFS模块
    在这里插入图片描述
    将红色的地方复制出来记到一个小本本上

    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/fastdfs-nginx-module/src/
    

    在这里插入图片描述

    2.重新编译Nginx

    在此位置重新执行上面的:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/fastdfs-nginx-module/src/
    在这里插入图片描述
    千万不要make install,不然就真的覆盖了

     make    //千万不要make install,不然就真的覆盖了
    

    先备份一波,备胎还是需要的

    /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    

    将编译的文件复制 到你原来的sbin 目录里

    cp ./objs/nginx /usr/local/nginx/sbin/
    

    OK 新模块安装完成 该怎么用和以前一样,只是添加了新的模块

    展开全文
  • nginx负载均衡

    万次阅读 2017-12-06 11:19:05
    应用场景当一个应用部署在tomcat后,发现访问量越来越多,服务器完全无法承受住压力,导致系统卡顿延时等,此时需要通过nginx技术将应用压力进行平均分配到其他服务器,将多台服务器一起提供资源,通过nginx来协调...

    应用场景

    当一个应用部署在tomcat后,发现访问量越来越多,服务器完全无法承受住压力,导致系统卡顿延时等,此时需要通过nginx技术将应用压力进行平均分配到其他服务器,将多台服务器一起提供资源,通过nginx来协调资源进行负载均衡。

    操作步骤

    1. 目标与准备

    目标:使用docker部署nginx+tomcat,nginx实现负载均衡。

    准备:
    docker主机,192.168.199.32 (docker2)
    tomcat容器1:tomcat01
    tomcat容器2:tomcat03
    nginx容器:nginx_test

    2. 镜像下载

    docker主机pull镜像文件,需要tomcat和nginx。
     # docker pull docker.io/tomcat
     # docker pull docker.io/malderhout/tomcat
     # docker pull nginx
    

    下载两个不同版本的tomcat镜像文件,只是为了后期更好的验证nginx的负载均衡。

    用# docker search tomcat命令搜索tomcat的镜像,进行选择,选择一个tomcat7,一个tomcat8。

    这里写图片描述

    3. 部署2个tomcat容器

     # docker run -d -ti --name tomcat01 docker.io/tomcat
     # docker run -d -ti --name tomcat03 docker.io/malderhout/tomcat
    
    查看两个容器是否已开启:
     # docker ps
    

    这里写图片描述

    tomcat容器默认启用8080端口。

    4. 部署nginx容器,并修改配置文件,commit新镜像。

    启动nginx容器,并进入到容器:
     # docker run -ti docker.io/nginx /bin/bash
    
    进入容器中,进行修改配置文件:
     # cd /etc/nginx/
     # cd conf.d/
     # vi default.conf
       bash: vi: command not found
    
    提示没有vi命令,执行
     # apt-get update
     # apt-get install vim
    
    编辑default.conf文件,如下:
     # vim default.conf
    
    upstream web_app{
    server tomcat01:8080 weight=1 max_fails=2 fail_timeout=30s;
    server tomcat03:8080 weight=1 max_fails=2 fail_timeout=30s;
    }
    server {
    listen 80;
    server_name nginx_test localhost;
    index index.jsp index.html index.htm;
    #charset koi8-r;
    #access_log /var/log/nginx/log/host.access.log main;
    location / {
    proxy_next_upstream http_502 http_504 error timeout invalid_header;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://web_app;
    root /usr/share/nginx/html;
    index index.html index.htm;
    }
    location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
    {
    root /usr/share/nginx/html;
    }
    #error_page 404 /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    # proxy_pass http://127.0.0.1;
    #}
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    # root html;
    # fastcgi_pass 127.0.0.1:9000;
    # fastcgi_index index.php;
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    # include fastcgi_params;
    #}
    # deny access to .htaccess files, if Apache’s document root
    # concurs with nginx’s one
    #
    #location ~ /\.ht {
    # deny all;
    #}
    }
    

    该配置文件为网上找的,如果有好的配置文件可以替换。 注意,配置文件引用的为容器的name,而不是ip地址,好处就是不用关心ip变动。nginx_test ,为nginx容器name,一会需要创建。

    手动执行nginx,看是否报错,如果报错进行调试,直至没有报错。
     # nginx
     # ps -ef
    

    这里写图片描述

    复制这个临时容器的id:0b85b3e2edda
    退出临时容器,使用刚创建的临时容器commit新的镜像,镜像名:nginx_tomcat

     # docker commit 0b85b3e2edda nginx_tomcat
     # docker images
    

    这里写图片描述

    使用nginx_tomcat部署nginx_test容器:
    
     # docker run -d -p 80:80 --name nginx_test nginx_tomcat nginx -g “daemon off;”
     # docker ps
    

    这里写图片描述

    5. 验证

    浏览器打开: http://192.168.199.32
    连续打开2次,发现第一个为tomcat8.0界面,第二个为tomcat7.0界面。

    这里写图片描述

    这里写图片描述

    展开全文
  • Nginx-未找到命令

    万次阅读 2020-02-28 13:39:46
    问题重现 解决方式 1.打开环境变量所在的文件: vim /etc/profile ...指向你的nginx的安装位置的sbin 目录 PATH=$PATH:/usr/local/nginx/sbin 3. 重新加载环境,解决 source /etc/profile ...
  • LINUX安装nginx详细步骤

    万次阅读 多人点赞 2018-08-21 16:26:17
    1.安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel ...mkdir nginx cd nginx //下载tar包 wget http://nginx.org/download/nginx-1.13...
  • 项目部署 - Linux( springboot + vue + nginx

    万次阅读 多人点赞 2020-02-28 14:10:02
    一、后台项目(Springboot) 1.项目打成jar包 在项目target目录里会有打包的jar 2.启动后台运行jar 注意: 若无nohup 命令 yum install coreutils ...三、配置nginx 前端工程 和后台api接口转发 se...
  • Docker-Nginx安装篇+配置挂载到宿主机

    万次阅读 2020-03-22 14:02:04
    1.使用docker下载Nginx 镜像 #此处下载最新版 docker pull nginx 2.挂载Nginx配置与静态目录 说明 :-p表示递归创建文件夹,这里挂载是为了后面配置Nginx方便,不创建挂载后面配置Nginx需要进入容器配置比较麻烦,...
  • 配置虚拟主机的常见方式 一、基于多域名配置虚拟主机 ...vim /etc/nginx/nginx.conf sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include vhost/*.conf;
  • Nginx 原理和架构

    万次阅读 多人点赞 2019-11-09 17:13:09
    Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动...
  • 源码安装nginx

    万次阅读 2019-11-23 03:01:41
    下载nginx的源码包 http://nginx.org/en/download.html 上传到服务器进行解压缩 tar -xzvf nginx-1.16.1.tar.gz cd nginx-1.16.1/ 执行 ./configure --prefix=/usr/local/nginx 会提示缺少PCRE依赖 安装...
  • 修改 nginx 的默认端口

    万次阅读 热门讨论 2018-05-08 17:03:37
    whereis nginx.conf 你可以这几个目录都看一遍,看看配置文件在哪里。我这边正确目录是 /etc/nginx 其次找到真正的配置文件 cd 到 /etc/nginx 目录下 打开一看,懵了,哪里有 listen 80 这一行呢? 不过...
  • docker安装nginx

    万次阅读 2020-07-21 23:18:38
    安装docker配置阿里云镜像加速 下载镜像 docker pull nginx 创建数据卷,为了日后方便修改,数据卷存nginx配置文件 ...docker run -it -d --network=host -v nginx:/etc/nginx --name=nginx --restart=
  • nginx 开机自启动

    万次阅读 2020-03-04 01:49:27
    新建nginx.service文件 vim /lib/systemd/system/nginx.service 内容: [Unit] Description=nginx service After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx -c /usr/...
  • nginx反向代理配置去除前缀

    万次阅读 多人点赞 2019-01-07 00:13:28
    使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:加"/" server ...
  • nginx系列之一:nginx入门

    万次阅读 多人点赞 2019-05-11 17:06:35
    一、nginx 功能介绍 Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻量级代替者,不仅是因为响应静态页面的速度非常快,而且它的模块...
  • nginx添加https服务

    万次阅读 2020-03-04 01:39:26
    如果服务器已经安装好了nginx 而且是通过命令安装apt install nginx的,首先先卸载原先的nginx sudo apt autoremove nginx 然后下载源码包: http://nginx.org/en/download.html 也可以在服务器上用wget命令...
  • CentOS 7 yum 安装 Nginx

    万次阅读 多人点赞 2016-09-21 17:16:50
    1.添加Nginx到YUM源 添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令: sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 2.安装Nginx 在你的...
  • 命令service nginx start 出现错误 Starting nginx (via systemctl): Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and ...
  • nginx反向代理

    万次阅读 多人点赞 2018-10-19 17:39:37
    Nginx配置详解 nginx概述 nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向...
  • centOS7安装nginxnginx配置

    万次阅读 多人点赞 2019-05-09 14:59:19
    安装所需插件 1、安装gcc gcc是linux下的编译器在此不多做解释,感兴趣的小伙伴可以去查一下相关资料,它可以编译C,C++,Ada,Object C和Java等语言 命令:查看gcc版本 gcc -v ...一般阿里云的centOS7里面是都有的,...
  • nginx监控与性能调优

    万次阅读 2018-11-01 16:49:24
    监控 nginx有自带的监控模块,编译nginx的时候,加上参数 --with-http_stub_status_module #配置指令 ... --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module ...
  • nginx修改上传文件大小限制

    万次阅读 2018-03-29 09:28:16
    自己搭的服务器,用nginx做代理。上传超过1M大的客户端文件无法正常上传,nginx直接报错,上传文件太大,于是修改了下nginx的配置,就可以了。 按照网上所说的加上client_max_body_size 字段,怎么重启nginx都不行...
  • k8s部署nginx

    千次阅读 2019-09-27 11:24:32
    k8s部署nginx
  • nginx 代理80端口转443端口

    万次阅读 2020-05-10 17:47:00
    nginx.conf配置文件如下 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime....
  • Nginx】filebeat读取nginx日志配置

    万次阅读 2019-12-16 22:36:09
    filebeat读取nginx日志配置 环境:filebeat 5.6 filebeat配置文件从头读取 1.停止filebeat 2.删除registry文件 过滤掉配置中的注释和空行 grep -v '#' /etc/filebeat/filebeat.yml | grep -v '^$' filebeat.yml...
  • 搭建Nginx集群+Haproxy集群 

    万次阅读 2020-04-13 20:41:57
    在此之前我们先简单的了解一下nginx以及nginx实现负载均衡 根据前文 Ubuntu搭建的MySQL集群服务器、Docker搭建MySQL集群服务器、 我们得到了3台实现了PXC集群的MySQL服务器 他们的IP分别...
  • nginx 安装配置

    万次阅读 2018-08-23 15:20:07
    安装: ...apt-get install nginx 配置: upstream tom{ server 112.74.50.86:8081; } server {  listen 80 default_server;  root /var/www/html;  server_name www.haizeilanlan.com;  loc...

空空如也

1 2 3 4 5 ... 20
收藏数 308,596
精华内容 123,438
关键字:

nginx