vlambda博客
学习文章列表

Nginx的认识,安装,使用

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。






Nginx的认识,安装,使用

Nginx的认识,安装,使用



Nginx的认识,安装,使用

反向代理

正向服务器:隐藏用户,目标服务器并不知道真正访问的是谁,由代理服务器代替访问。如A想向C借钱,基于某种原因,不能直接找C,于是通过找B,B去找C达到借C的钱的目的,C并不知道是A借的钱。

反向服务器:隐藏服务,访问用户不知道提供的服务的是谁,由代理服务器决定。如A找B借钱,B自己没有,决定去找C或者D借钱,然后借给A,A只知道是找B借的钱,并不知道C,D的存在。

Nginx的认识,安装,使用

安装

1.下载(通常我们下载stable版本)

https://nginx.org/en/download.html

wget https://nginx.org/download/nginx-1.20.2.tar.gz

2.安装依赖环境

gcc环境:  

yum install gcc-c++

PCRE库,用于解析正则表达式:  

yum install -y pcre pcre-devel

zlib压缩和解压缩依赖: 

yum instal -y zlib zlib-devel

ssl安全的加密套接字协议层,用户http安全传输,也就是https:

yum install -y openssl openssl-devel

3.解压

tar -zxvf nginx-1.20.2.tar.gz

4.创建nginx的临时目录,不然启动报错

mkdir /var/temp/nginx -p

5.添加配置,创建编译安装文件makefile (各配置项均为可选)

./configure --prefix=/usr/local/nginx  #指定安装目录

--pid-path=/var/run/nginx/nginx.pid    #指向nginx的pid

--lock-path=/var/lock/nginx.lock       #锁定安装文件

--error-log-path=/var/log/nginx/error.log

--http-log-path=/var/log/nginx/access.log

--with-http_gzip_static_module

--http-client-body-temp-path=/var/temp/nginx/client

--http-proxy-temp-path=/var/temp/nginx/proxy

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi

--http-scgi-temp-path=/var/temp/nginx/scgi

--with-http_ssl_module  #开启ssl支持

7. 编译安装

make && make install

8. 启动、停止、重启

启动:进入sbin目录:  ./nginx

启动后即可通过 http://ip 访问,默认端口为80

停止:./nginx -s stop  或者  ./nginx -s quit

重启:./nginx -s reload     每次修改配置文件后需要重启生效 

配置介绍


1.配置结构



# main 全局配置

event {  #event 配置工作模式以及连接数

}

http{ #http相关的配置

    }

    server { server 虚拟主机,对应每一个host:port

        location 匹配正则 {  #路由规则,具体跳转

        }

    }

}

2.基础配置

# 工作进程数,实际处理请求的进程

worker_processes  1;

events {

    # 每个工作进程支持的连接数

    worker_connections  1024;

}

http {

    # 支持文件类型映射表,对应conf/mine.types中的文件

    include  mime.types;

    # 默认的文件类型

    default_type  application/octet-stream;

    #开启系统调用sendfile(),提升数据网络传输效率

    sendfile        on;

    # 访问超时时间

    keepalive_timeout  65;

    # 开启gzip压缩功能,提升传输效率

    gzip on;

    # 配合gzip使用,限制最小被压缩的文件,小于1m不压缩

    gzip_min_length 1024;

    # 配合gzip使用,压缩的级别,比例太大消耗cpu资源,合理使用

    gzip_comp_level 3;

    # 压缩文件类型列表

    gzip_types text/css application/javascript

    upstream urls {  # 负载均衡配置

        server 192.168.10.11:8080;

        server 192.168.10.12:8080;

    }

    server {   # 虚拟主机配置

        listen       80;    #监听访问的端口

        server_name  domainname.com;  #监听访问的域名

        location / {  #路由配置,匹配根路径

            root   html;    #路由的目录

            index  index.html index.htm;  #默认访问的静态文件

        }

                proxy_pass https://192.168.10.11:8081;

        }

        location /shopping {  # 路由到负载均衡器

                proxy_pass https://urls;

        }


      location /mobile {  

               # 如访问http://localhost/mobile/aa.jpg

               # root 路径的完全匹配,对应路径:mobile/html/aa.jpg

                root   html; 

                # alias 与root互斥使用,相当于别名,对应路径:   html/aa.jpg

                # alias html;

        }

    }

}


    


阻塞与非阻塞、同步与异步


同步阻塞方式(BIO):

发送方发送请求之后一直等待响应。   接收方处理请求时进行的IO操作如果不能马上等到返回结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作。

同步非阻塞方式(NIO):

发送方发送请求之后,一直等待响应。 接受方处理请求时进行的IO操作如果不能马上的得到结果,就立即返回,去做其他事情。 但是由于没有得到请求处理结果,不响应发送方,发送方一直等待。 当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方,发送方才进入下一次请求过程,如多路复用器。

异步阻塞方式:

发送方向接收方请求后,不等待响应,可以继续其他工作。 接收方处理请求时进行IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作。(实际不应用)

异步非阻塞方式(AIO): 发送方向接收方请求后,不等待响应,可以继续其他工作。 接收方处理请求时进行IO操作如果不能马上得到结果,也不等待,而是马上返回去做其他事情。 当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。(效率最高)