zoukankan      html  css  js  c++  java
  • centos下nginx安装与配置

    nginx依赖以下模块:

    l  gzip模块需要 zlib 库

    l  rewrite模块需要 pcre 库

    l  ssl 功能需要openssl库

    # tar xzvf nginx-1.9.15.tar.gz
    
    # yum -y install pcre-devel openssl openssl-devel
    
    # yum -y install zlib
    
    # /usr/sbin/groupadd -f www
    # /usr/sbin/useradd -g www www

      否则启动时会出错“nginx: [emerg] getpwnam(“www”) failed”

    ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-threads

      注意:如果要访问环境变量,lua方式必须安装模块ngx_lua modulengx_devel_kit module (见https://github.com/openresty/lua-nginx-module#readme,https://github.com/simplresty/ngx_devel_kit,如今随着微服务的流行,nginx+lua作为网关成了必备技能),perl方式必须安装 ngx_http_perl_module module

    如果以后要启用https,一定要加上--with-http_ssl_module。

    make
    
    make install

    2、启动

    首先,检查下端口是否被占用:lsof -i:80

    [root@iZ23nn1p4mjZ ~]# cd /usr/local/nginx/sbin/
    [root@iZ23nn1p4mjZ sbin]# ./nginx
    [root@iZ23nn1p4mjZ sbin]# ps axu | grep nginx
    root 27514 0.0 0.0 24428 828 ? Ss 10:30 0:00 nginx: master process ./nginx
    nobody 27515 0.0 0.0 24848 1416 ? S 10:30 0:00 nginx: worker process
    root 27531 0.0 0.0 103256 876 pts/0 S+ 10:30 0:00 grep nginx

    3、停止

    [root@iZ23nn1p4mjZ sbin]# ./nginx -s quit
    [root@iZ23nn1p4mjZ sbin]# ps axu | grep nginx
    root 27990 0.0 0.0 103256 876 pts/0 S+ 10:33 0:00 grep nginx

    4、强制停止

    [root@iZ23nn1p4mjZ sbin]# ./nginx -s stop

    5、重新加载配置

    [root@iZ23nn1p4mjZ sbin]# ./nginx -s reload

    6、查看nginx版本以及编译时候的参数

    [root@iZ23nn1p4mjZ sbin]# ./nginx -V
    nginx version: nginx/1.9.15
    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
    configure arguments: --prefix=/usr/local/nginx

    -V可以很重要,可以看到configure的时候我们启用哪些模块和参数以及编译的gcc版本信息。

    7、主要参数配置

    worker_processes  1; #cpu数量

    events {

        use epoll;

    }

    keepalive_timeout  65;

    sendfile        on;

    tcp_nopush     on;

    tcp_nodelay     on;

    http {

      log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';

      access_log logs/access.log main;

      server {
         listen 8081;
         server_name localhost;

      注:为什么要把worker进程数量设置得与CPU核心数量一致呢?这正是Nginx与Apache服务器的不同之处。在Apache上每个进程在一个时刻只处理一个请求,因此,如果希望Web服务器拥有并发处理的请求数更多,就要把Apache的进程或线程数设置得更多,通常会达到一台服务器拥有几百个工作进程,这样大量的进程间切换将带来无谓的系统资源消耗。而Nginx则不然,一个worker进程可以同时处理的请求数只受限于内存大小,而且在架构设计上,不同的worker进程之间处理并发请求时几乎没有同步锁的限制,orker进程通常不会进入睡眠状态,因此,当Nginx上的进程数与CPU核心数相等时(最好每一个worker进程都绑定特定的CPU核心),进程间切换的代价是最小的。

    8、配置指向后端tomcat

    http下增加:

    upstream web-admin {
    server localhost:8080 fail_timeout=15s;
    server localhost:8080 fail_timeout=15s;
    server localhost:8080 fail_timeout=15s;
    }

    location / {
    root html;
    index index.html index.htm;
    proxy_pass http://web-admin;
    }

    完整:

    events {
       worker_connections 1024;
       use epoll;
    }


    http { include mime.types; 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"'; access_log logs/access.log main; sendfile on; tcp_nopush on;
    tcp_nodelay     on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; # upstream ebs-k3c-web { server ebs-k3c-web:8080 fail_timeout=15s; server ebs-k3c-web:8081 fail_timeout=15s; server ebs-k3c-web:8082 fail_timeout=15s; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; }

          location /ebs-k3c-web/ {
            proxy_pass http://ebs-k3c-web;
          }

            #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   html;
            }
    }

    启动或者重新加载配置,输入http://ip访问。

    注在看/etc/init.d/nginx脚本时,发现脚本中存在大量行为(点号 空格  文件名),真没见过如下:

    #!/bin/sh
    
    # Copyright (C) Igor Sysoev
    # Copyright (C) Nginx, Inc.
    
    
    LC_ALL=C
    export LC_ALL
    
    . auto/options
    . auto/init
    . auto/sources
    
    test -d $NGX_OBJS || mkdir $NGX_OBJS
    
    echo > $NGX_AUTO_HEADERS_H
    echo > $NGX_AUTOCONF_ERR

    查阅了资料得知:

    1、 如果我们要执行某个文件,但是此文件不可执行,此时我们要用chmod u+x file_name来使文件具有可执行权限

    2、可是有时我们不想更改此文件的执行权限,但又想执行此文件,可以采用(点号--空格--文件名)的形式来执行一个脚本(只有root用户才可以这么做)

    vs编译nginx,参考https://github.com/topcpporg/nginx_vs

    https的配置及强制跳转参见nginx配置https并强制http自动跳转到https

  • 相关阅读:
    java基础之 javac编译单个文件并执行 带jar包
    java 按照字符数分解字符串
    转载 模糊查询map中的key
    public final static PrintStream out = null; 的实例化猜想
    从0开始搭个网站在云上 思路引导
    java 泛型操作
    git 命令行
    React Native 安卓添加阴影
    react native 按钮的那些事
    mac 下 react Native android环境搭建
  • 原文地址:https://www.cnblogs.com/zhjh256/p/5922116.html
Copyright © 2011-2022 走看看