zoukankan      html  css  js  c++  java
  • Nginx服务基础

      Nginx的英文官方网站是http://nginx.org,在这里可以查看Nginx的各个软件版本信息。Nginx软件有三种版本:稳定版、开发版和历史稳定版。开发版更新较快,包含最新的功能和bug的修复,但同时也可能会遇到新的bug,开发版的更新一旦稳定下来,就会被纳入稳定版中。但是,有些新功能不会被加入到旧的稳定版中去。稳定版本的更新较慢,但是软件bug也会较少,可以作为企业生产环境的首选,因此通常建议选择使用稳定版。当然,在实际工作中,选择稳定版时,尽量避免使用最新的版本,选择比已出来的最新版晚6~10个月的版本比较好。

    1. 安装Nginx所需的依赖包。

    分别是pcre-devel、openssl-devel包

    pcre库是为了使Nginx支持具备URI重写功能的rewrite模块,如果不安装pcre库,则Nginx无法使用rewrite模块功能,Nginx的rewrite模块功能几乎是企业应用必须的。

    openssl是Nginx在使用HTTPS服务的时候要用到此模块,如果不安装openssl,安装Nginx的过程中会报错。

    # 安装方式

    yum install pcre pcre-devel -y
    yum install openssl openssl-devel -y

    # 检查安装结果

    rpm -qa pcre pcre-devel
    rpm -qa openssl openssl-devel

    2. 开始安装。

    操作命令如下:

    [root@120_234_2_74_centos7 ~]# cd /tools/
    [root@120_234_2_74_centos7 tools]# wget -q http://nginx.org/download/nginx-1.12.1.tar.gz
    [root@120_234_2_74_centos7 tools]# useradd nginx -s /sbin/nologin -M
    [root@120_234_2_74_centos7 tools]# tar xf nginx-1.12.1.tar.gz
    [root@120_234_2_74_centos7 tools]# cd nginx-1.12.1/
    [root@120_234_2_74_centos7 nginx-1.12.1]# ./configure --user=nginx --group=nginx --prefix=/app/nginx-1.12.1/ --with-http_stub_status_module --with-http_ssl_module
    [root@120_234_2_74_centos7 nginx-1.12.1]# make && make install

    # 讲Nginx安装路径通过软连接的方式更改为/app/nginx/, 方便人员使用。安装时制定版本号路径是为了便于查看区分当前使用的Nginx版本,也方便以后升级。

    [root@120_234_2_74_centos7 nginx-1.12.1]# ln -sv /app/nginx-1.12.1/ /app/nginx

    3. 启动并检查安装结果。

    (1)启动前检查配置文件语法

    [root@120_234_2_74_centos7 tools]# /app/nginx/sbin/nginx -t
    nginx: the configuration file /app/nginx-1.12.1//conf/nginx.conf syntax is ok
    nginx: configuration file /app/nginx-1.12.1//conf/nginx.conf test is successful

    (2)启动Nginx服务

    [root@120_234_2_74_centos7 tools]# /app/nginx/sbin/nginx

    (3)查看Nginx服务对应的端口是否成功启动

    [root@120_234_2_74_centos7 tools]# lsof -i:80
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx   6256  root    6u  IPv4  21943      0t0  TCP *:http (LISTEN)
    nginx   6257 nginx    6u  IPv4  21943      0t0  TCP *:http (LISTEN)

    也可以通过ss -lnt | grep 80查看:

    [root@120_234_2_74_centos7 tools]# ss -lnt | grep 80
    LISTEN     0      128          *:80                       *:*            

    (4)检查Nginx启动的实际效果

    打开浏览器输入http://x.x.x.x,然后回车,如看到如图的内容,就表示Nginx已经启动了。

     注意,nginx -s reload 原理:

      新的请求会放到新的工作线程上。
    旧的请求会一直处理,直到结束完旧的任务。

     4.Nginx日志切割

    Nginx 是一个非常轻量的 Web 服务器,体积小、性能高、速度快等诸多优点。但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件容量非常大,不便于管理。

    脚本内容:

    #/bin/bash
    #-----------desc-----------------------
    # desc   : nginx cut log
    # create : 2017-11-21
    # update : 2017-11-21
    # version: 1.0.0
    # author : luchuangao
    #-----------desc-----------------------
    
    
    # 设置日志文件存放目录
    logs_path=/usr/local/nginx/logs/
    
    # 设置pid文件
    pid_path=/usr/local/nginx/logs/nginx.pid
    
    # 重命名日志文件
    mv ${logs_path}access.log ${logs_path}access_$(date -d yesterday +%Y%m%d).log
    mv ${logs_path}error.log ${logs_path}error_$(date -d yesterday +%Y%m%d).log
    
    # 向nginx主进程发信号重新打开日志
    kill -USR1 `cat ${pid_path}`

    其他操作:

    # 添加计划任务
    crontab -e 
    
    # nginx cut log
    0 0 * * * /bin/bash /shell/nginx/nginx-cut-log.sh
    
    # 重启crond任务
    systemctl restart crond

    5. 添加代理认证

    yum install httpd-tools -y
    #第一次需要加-c
    htpasswd -bc /usr/local/nginx/conf/htpasswd.users luchuangao 123456
    #第二次需要把-c去掉,否则会覆盖原有得。
    htpasswd -b /usr/local/nginx/conf/htpasswd.users luchuangao 123456
    #查看tail /usr/local/nginx/conf/htpasswd.users
    #...
    #授权
    chown nginx.nginx /usr/local/nginx/conf/htpasswd.users
    #重启服务
    /usr/local/nginx/sbin/nginx -s reload
     
    添加进nginx配置文件:
    vim /usr/local/nginx/conf/conf.d/kibana5612.conf
    upstream kibana_server {
        server 127.0.0.1:5601 weight=1 max_fails=3 fail_timeout=60;
    }
     
    server {
        listen 80;
        server_name www.kibana5611.com;
        auth_basic "Restricted Access";
        auth_basic_user_file /usr/local/nginx/conf/htpasswd.users;
        location /{
        proxy_pass http://kibana_server;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        }
    }

    一键安装

    yum install pcre pcre-devel -y
    yum install openssl openssl-devel -y
    cd /usr/local/src/
    wget -q http://nginx.org/download/nginx-1.12.1.tar.gz
    useradd nginx -s /sbin/nologin -M
    tar xf nginx-1.12.1.tar.gz 
    cd nginx-1.12.1/
    ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.12.1/ --with-http_stub_status_module --with-http_ssl_module
    make && make install
    ln -sv /usr/local/nginx-1.12.1 /usr/local/nginx
    /usr/local/nginx/sbin/nginx -t
    

    启动脚本

    vim /etc/init.d/nginx
    
    #!/bin/bash
    # chkconfig: - 85 15
    PATH=/usr/local/nginx
    DESC="nginx daemon"
    NAME=nginx
    DAEMON=$PATH/sbin/$NAME
    CONFIGFILE=$PATH/conf/$NAME.conf
    PIDFILE=$PATH/logs/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    set -e
    [ -x "$DAEMON" ] || exit 0
    do_start() {
    $DAEMON -c $CONFIGFILE || echo -n "nginx already running"
    }
    do_stop() {
    $DAEMON -s stop || echo -n "nginx not running"
    }
    do_reload() {
    $DAEMON -s reload || echo -n "nginx can't reload"
    }
    case "$1" in
    start)
    echo -n "Starting $DESC: $NAME"
    do_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    do_stop
    echo "."
    ;;
    reload|graceful)
    echo -n "Reloading $DESC configuration..."
    do_reload
    echo "."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    do_stop
    do_start
    echo "."
    ;;
    *)
    echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
    exit 3
    ;;
    esac
    exit 0

    操作命令:

    #设置执行权限
    chmod a+x /etc/init.d/nginx
    
    #注册成服务
    chkconfig --add nginx
    
    #设置开机启动
    chkconfig nginx on
    
    #重启, 查看nginx服务是否自动启动
    shutdown -h 0 -r
    netstat -apn|grep nginx
    #对nginx服务执行停止/启动/重新读取配置文件操作
    
    #启动nginx服务
    systemctl start nginx.service
    #停止nginx服务
    systemctl stop nginx.service
    #重启nginx服务
    systemctl restart nginx.service
    #重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效)
    systemctl reload nginx.service
    

    nginx 80端口重定向到443端口

    https://blog.csdn.net/m0_37886429/article/details/72271983

  • 相关阅读:
    TweenMax_API介绍
    正则表达式基础讲解
    CSS3 calc()的使用
    WebGL框架 -- three.js
    CSS3 box-sizing属性
    prefixfree.js_无前缀脚本
    css样式—字体垂直、水平居中
    JQuery解析json数据
    移动Web开发规范
    Ajax与json在前后端中的细节解惑
  • 原文地址:https://www.cnblogs.com/luchuangao/p/7824950.html
Copyright © 2011-2022 走看看