自学内容网 自学内容网

nginx网站服务

nginx网站服务

1 nginx介绍

1.1 nginx特点

1、高并发,轻量级的WEB服务软件

  • 对http的高并发处理能力高,单台物理服务器可以支持30000-50000个并发。一般来说在工作中,单台的并发一般在20000。

2、稳定性高,系统资源消耗率低

1.2 nginx功能

1、主要功能就是处理静态页面,文本,图片等等

2、动态内容处理能力较差,一般是把动态的请求转发到中间件(PHP, Python)转发到后端

3、正向代理和反向代理

  • 正向代理:通过一个代理的地址,访问其他的web页面,客户端是知道通过代理服务器访问的目标地址。
  • 反向代理:我们是通过代理地址访问,但是客户端并不知道流量转发到了哪一台后端服务器。(流量转发是根据算法把流量转发到后台服务器)

4、支持SSL/TLS加密,支持https协议

5、支持虚拟主机,在一个nginx的配置当中,可以做多个域名。

6、nginx自带缓存机制,可以缓存静态文件。

7、自带日志记录,但是nginx没有日志分割功能。记录的是nginx自己的业务日志(access.log 和 error.log),如果是程序启动、停止,程序出错的日志不包含在内。

1.3 nginx工作方式

nginx工作方式:异步非阻塞

  • 同步:在互联网中,处理请求的方式,一个服务完成需要其他服务作为依赖时,只有等待被依赖的服务完整后,才算完成。是一个可靠的序列,要么都成功要么都失败。服务的状态需要严谨的保持一致。

  • 异步:一个服务的完成需要依赖其他的服务,只是通知其他依赖服务开始执行,不需要等待依赖服务的执行结果,被依赖的服务执行结果也无法确定。是一个不可靠序列。

  • 阻塞:在调用结果返回之前,当前的线程会被挂起,一直等到返回结果,在这个期间是不能够执行其他任务的。

  • 非阻塞:不需要等待调用的结果,不能立刻得到结果,也不会阻塞当前的线程,而是立刻返回。

nginx快的原因:使用的是异步非阻塞的处理方式

1.4 nginx相关目录

  • conf:保存所有nginx配置的文件,其中nginx.conf是nginx主核心配置件,其他的.conf文件主要是nginx的相关功能。
  • logs:存放nginx日志的目录 access.log 记住访问nginx的日志 error,记录访问失败的日志(启动失败的日志,配置文件有错)
  • sbin:nginx的二进制启动的脚本,一般都用系统控制命令。
  • html:保存的是nginx访问的web页面,这个目录可以修改,文件名一般都是index.html。

相关命令(不使用systemctl):

nginx -t 检测配置语法
nginx -v 显示nginx的版本
nginx -s stop start restart reload # 信号,传递一个信号让内核处理。

1.5 nginx的配置文件

1.5.1 nginx.conf文件模块
  • 全局模块:运行用户和子进程数量(对全局生效)

  • events:配置nginx服务器的并发处理数

    • 子进城并发数 =work_process 数量 * work_connection 数量
  • http:配置代理,缓存,日志以及第三方模块(server、域名、端口)

  • server:配置虚拟主机的参数,一个http里面可以有多个server

  • location:用来匹配uri(一个server里面可以有多个location)

    • 例:https://www.bilibili.com/v/kichiku/?spm_id_from=333.1007.0.0

      /v/kichiku/-------->uri

    • location匹配的语法:

      • root拼接,路径和uri合并

        例:location /test1

        root /ar/www/html;

        index index.html index.htm;

        curl /var/www/html/test1/index.html

      • alias绝对路径,工作路径必须要包含匹配的uri

        例:location /test1

        alias /var/www/html/test1;

        index index.html index.htm;

        curl /var/www/html/test1/index.html

1.5.2 nginx.conf文件详解
#user nobody;
#nginx的运行用户,注释掉的情况默认用的自定义程序用户
worker_processes 1;
#子进程的数量,一般配置成内核数量两倍,一般不超过8个,超过8个会降低处理性能 2-4个。

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

pid /usr/local/nginx/run/nginx.pid;
#nginx的进程文件的位置

events {
    worker_connections 10000;
}

# 每个子进程能够处理的并发连接数,一般也就在20000-40000。
# Linux打开文件,同时处理进程是有限制的,默认就是1024,修改系统的并发处理数和文件打开数量的限制。

http {
    include       mime.types;
    # 文件扩展名于文件类型的映射表
    default_type  application/octet-stream;
# nginx支持的默认文件类型
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
# nginx的日志格式,$remote_addr都是nginx的内置变量,主要是用来获取请求中的详细信息
    #access_log  logs/access.log  main;
# 日志文件的路径

    sendfile        on;
    #支持文件发送(下载文件)
    
    #tcp_nopush     on;
#发送数据包前先缓存数据

    #keepalive_timeout  0;
    keepalive_timeout  65;
#连接保持的时间 65秒

    #gzip  on;
#是否对响应的数据进行压缩

    server {
    #在这个模块当中配置web信息和页面的匹配的机制
        listen       80;
        #监听的端口号,可以改,默认是80
        server_name  localhost;
#站点的域名
        #charset koi8-r;
        #指定页面解码的字符集

        #access_log  logs/host.access.log  main;
        #站点日志文件的位置

        location / {
        # 匹配uri /匹配的规则 /通用匹配,模糊匹配
            root   html;
            # root默认的工作目录 /usr/local/nginx/html
            index  index.html index.htm;
            # 匹配的工作文件的格式 index开头 html.htm都可以
        }

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

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

补充:修改系统处理的进程数和同时打开文件的数量的方法:

vim /etc/security/limits.conf
#在文件最后添加
* soft nproc 65535
#*表示任意程序,nproc: 系统处理的进程数 nofile: 同时打开文件的数量,最大就是65535,必须重启服务器生效
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

ulimit -n 65535
#临时修改系统的同时打开文件数量

1.6 模块功能

1.6.1访问状态的统计

在这里插入图片描述

访问/status结果如下:

Active connections: 1    
# 表示当前活动的连接数
server accepts handled requests:表示已经处理的连接信息包含以下三个数字
 1 1 1 
# 已经处理的连接数成功tcp握手的次数已经处理的请求数
Reading: 0 Writing: 1 Waiting: 0 
# Reading表示服务器正从客户端的请求中读取数据
# Writing服务器正在讲响应数据发送给客户端
# Waiting表示有连接处于空闲状态,可以处理新的请求
1.6.2 基于授权的访问控制
apt -y install apache2
# 需要使用apache2中htpasswd工具

在这里插入图片描述

在这里插入图片描述

systemctl restart nginx
# 修改完配置文件后重启服务生效

刷新访问显示如下:

在这里插入图片描述

1.6.3 基于域名的server(虚拟主机)

在这里插入图片描述

vim /etc/hosts
# 本地DNS配置文件添加域名和IP的映射关系

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

显示结果如下:

在这里插入图片描述

在这里插入图片描述

1.6.4 基于IP地址的server

在这里插入图片描述

1.6.5 基于端口的server

在这里插入图片描述


原文地址:https://blog.csdn.net/permit7/article/details/144294267

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!