st0627 发表于 2017-12-22 18:37:27

Nginx的安装(笔记)

  0, 先决条件
  Nginx 依赖 zlib zlib-devel gcc-c++ libtoolopenssl openssl-devel
  安装命令:
  yum -y install make zlib zlib-devel gcc-c++ libtoolopenssl openssl-devel
  1,Nginx 安装
  1.1, 下载 Nginx,下载地址:http://nginx.org/download/nginx-1.13.0.tar.gz
  $ wget http://nginx.org/download/nginx-1.13.0.tar.gz
  1.2, 解压安装包
  $ tar -zxvf nginx-1.13.0.tar.gz
  1.3, 进入安装包目录
  $ cd nginx-1.13.0
  1.4, 编译安装
  $ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-7.8
  $ make
  $ make install
  1.5, 查看nginx版本
  $ /usr/local/nginx/sbin/nginx -v
  到此,nginx安装完成。
  2, Nginx 配置
  2.1, 创建 Nginx 运行使用的用户 www(可选)
  $ /usr/sbin/groupadd www
  $ /usr/sbin/useradd -g www www
  2.2, 配置nginx.conf 默认路径:/usr/local/nginx/conf/nginx.conf
  $cat /usr/local/nginx/conf/nginx.conf
  # 访问的用户
  # userroot;
  # 设置值和CPU核心数一致
  worker_processes16;
  # 日志位置和日志级别
  #error_loglogs/error.log;
  #error_loglogs/error.lognotice;
  #error_loglogs/error.loginfo;
  #pid      logs/nginx.pid;
  events {
  worker_connections1024;
  }
  http {
  include       mime.types;
  default_typeapplication/octet-stream;
  log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  #access_loglogs/access.logmain;
  sendfile      on;
  #tcp_nopush   on;
  keepalive_timeout65;
  gzipon;
  upstream system_server {
  server 127.0.0.1:8080;
  keepalive 2000;
  }
  server {
  listen       801;
  # listen          443 ssl;
  server_name127.0.0.1;
  #
  # ssl                     on;
  # ssl_certificate         /usr/local/nginx/conf/ssl/server.crt;
  # ssl_certificate_key   /usr/local/nginx/conf/ssl/server.key;
  # ssl_session_timeout   5m;
  # ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
  # ssl_ciphers             ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  # ssl_prefer_server_ciphers       on;
  # charset koi8-r;
  access_loglogs/host.access.logmain;
  location / {
  root   html;
  indexindex.html index.htm;
  }
  # websocket
  location ^~ /socket {
  proxy_pass http://system_server;
  proxy_http_version 1.1;
  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_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  }
  # 正则表达式匹配路径
  location ~* ^/system/.*$ {
  proxy_pass http://system_server;
  proxy_set_header   Host    $host;
  proxy_set_header   X-Real-IP   $remote_addr;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  error_page404            /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;
  }
  }
  }
  2.3,检查配置文件ngnix.conf的正确性命令:
  $ /usr/local/webserver/nginx/sbin/nginx -t
  3, 启动 Nginx
  3.1 启动命令如下:
  $ /usr/local/webserver/nginx/sbin/nginx
  3.2 访问站点
  从浏览器访问我们配置的站点ip:http://127.0.0.1:9090
  4, 其它
  4.1 常用命令:
  # 重新载入配置文件

  /usr/local/webserver/nginx/sbin/nginx -s>  # 重启 Nginx
  /usr/local/webserver/nginx/sbin/nginx -s reopen
  # 停止 Nginx
  /usr/local/webserver/nginx/sbin/nginx -s stop
  4.2 location配置语法规则: location [=|^~|~|~*] /uri/ { … }
  =   开头表示普通字符开头,匹配规则:精确匹配;
  ^~开头表示普通字符开头,匹配规则:uri 最长路径匹配;
  ~   开头表示特殊字符开头,匹配规则:正则匹配(区分大小写);
  ~*开头表示特殊字符开头,匹配规则:正则匹配(不区分大小写);
  !~匹配规则:区分大小写不匹配的正则;
  !~* 匹配规则:不区分大小写不匹配的正则;
  /   通用匹配,任何请求都会匹配到。
  4.3 rewrite 重写规则语法: rewrite 正则 替换 标志位
  4.3.1 正则表达式
  ^/images/({2})/({5})/(.*)\.(png|jpg|gif)$   ---->http://xxxx.com/images/aa/abc01/test.gif
  #其中
  $1=({2})      #$1=aa
  $2=({5})   #$2=abc01
  $3=(.*)            #$3=test
  $4=(png|jpg|gif)   #$4=gif
  4.3.2 URI 重写
  /data?file=$3.$4   # rewrite之后的query http://data?file=test.gif
  4.3.3 尾部的标记 last return break
  last 标记之后会从新loaction ,继续rewrite 最多10次;
  break标记是直接跳槽rewrite和localtion 进行query的处理
  return标记停止rewrite 处理指令,进而控制主HTTP 模块处理请求,也就是HTTP请求也不处理了,直接给client 返回(结合error0page)
  注意:nginx不对url做编码。例如:请求:/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
  5, FAQs
  5.1 NGINX启动时提示错误
  /usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
  解决方法:
  #64位OS
  ln -s /usr/local/lib/libpcre.so.1 /lib64
  #32位OS
  ln -s /usr/local/lib/libpcre.so.1 /lib
页: [1]
查看完整版本: Nginx的安装(笔记)