Nginx 是什么?它有什么作用?

  一. 什么是nginx

  Nginx 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。

  1. 处理响应请求很快

  2. 高并发连接

  3. 低的内存消耗

  4. 具有很高的可靠性

  5. 高扩展性

  6. 热部署

  二.Nginx的安装

  1.安装编译环境

  一般系统中已经装了make和g++,无须再装

  安装make

  yum -y install autoconf automake make

  安装g++

  yum -y install gcc gcc-c++

  安装nginx依赖的库

  yum -y install wget pcre pcre-devel zlib zlib-devel openssl openssl-devel

  下载nginx

  wget http://nginx.org/download/nginx-1.23.0.tar.gz

  解压nginx

  tar -zxvf nginx-1.21.1.tar.gz

  目录结构

  解压以后进入到这个目录下面可以看到图中的目录

  首先我们进入到auto目录

  

  编译安装

  https://www.zhihu.com/question/484608465/answer/configure --prefix=/usr/local/nginx

  make && make install

  三.编译配置

  –prefix指定安装目录

  –with-http_ssl_module安装https模块

  creating objs/Makefile 代表编译成功

  make编译

  make install安装

  配置环境变量

  vi /etc/profile

  在最后一行加入

  export PATH=$PATH:/usr/local/nginx/sbin

  生效环境变量

  source /etc/profile

  关闭防火墙

  systemctl status firewalld

  systemctl stop firewalld

  systemctl disable firewalld

  四.yum方式

  添加源

  默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了Centos的源地址,因此可以如下执

  行命令添加源

  sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release

  centos-7-0.el7.ngx.noarch.rpm

  安装Nginx

  通过yum search nginx看看是否已经添加源成功。如果成功则执行下列命令安装Nginx。

  sudo yum install -y nginx

  启动Nginx

  sudo systemctl start nginx.service

  设置开机自动运行

  sudo systemctl enable nginx.service

  四.Nginx常用命令

  启动

  nginx

  # 如果执行配置文件

  nginx -c nginx.conf #如果不指定,默认为NGINX_HOME/conf/nginx.conf

  停止

  nginx -s stop

  退出

  nginx -s quit

  关闭

  # 查看nginx进程号

  ps -aux | grep nginx

  # 杀掉进程

  kill -9 nginx

  重新加载配置文件

  nginx -s reload

  检查配置文件是否正确

  nginx -t -c /路径/nginx.conf

  查看nginx的版本信息

  nginx -v

  五.真实的nginx配置文件可能如下

  ########### 每个指令必须有分号结束。#################

  #user administrator administrators; #配置用户或者组,默认为nobody nobody。

  #worker_processes 2; #允许生成的进程数,默认为1

  #pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址

  error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,

  server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

  events {

  accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on

  multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off

  #use epoll; #事件驱动模型,

  select|poll|kqueue|epoll|resig|/dev/poll|eventport

  worker_connections 1024; #最大连接数,默认为512

  }

  http {

  include mime.types; #文件扩展名与文件类型映射表

  default_type application/octet-stream; #默认文件类型,默认为text/plain

  #access_log off; #取消服务日志

  log_format myFormat '$remote_addr–$remote_user [$time_local] $request

  $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';

  #自定义格式

  access_log log/access.log myFormat; #combined为日志格式的默认值

  sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,

  location块。

  sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上

  限。

  keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。

  upstream mysvr {

  server 127.0.0.1:7878;配置文件位置

  nginx配置为简化日常维护而设计,并且提供了简单的手段用于web服务器将来的扩展。

  配置文件是一些文本文件,通常位于 nginx安装路径/etc/nginx 或 /etc/nginx ,主配置文件通

  常命名为 nginx.conf ,为了保持整洁,部分配置可以放到单独的文件中,再自动地被包含到主配置文

  件,但应该注意的是,nginx目前不支持Apache风格的分布式配置文件(如.htaccess文件),所有和

  nginx行为相关的配置都应该位于一个集中的配置文件目录中。

  Nginx的全局配置

  user

  user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。

  这个地方如果写错了就会出现获取不到用户的错误

  worker_processes

  是个主模块指令,指定了Nginx要开启的进程数,每个Nginx进程平均耗费10M~12M内存,建议指

  定和CPU的数量一致即可。

  这个地方如果配置配置了 worker_processes 2; 那么他的工作进程就有两个

  server 192.168.10.121:3333 backup; #热备

  }

  error_page 404 https://www.baidu.com; #错误页

  server {

  keepalive_requests 120; #单连接请求上限次数。

  listen 4545; #监听端口

  server_name 127.0.0.1; #监听地址

  location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小

  写。

  #root path; #根目录

  #index vv.txt; #设置默认页

  proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表

  deny 127.0.0.1; #拒绝的ip

  allow 172.18.5.54; #允许的ip

  }

  }

  }

  六.完全匹配虚拟主机

  server {

  listen 80;

  charset utf-8;

  server_name www.abc.com;

  location /{

  alias '/root/www/nginx/abc/';

  index index.html index.htm;

  expires 7d;

  }

  }

  server {

  listen 80 ;

  charset utf-8;

  server_name www.bbs.com;

  location /{

  alias '/root/www/nginx/bbs/';

  index index.html index.htm;

  expires 7d;

  }

  }

  七.虚拟主机匹配顺序

  通过上面的实验可以得出如下结论

  最高优先级:完全匹配

  第二优先级:通配符在前

  第三优先级:通配符在后