• Nginx:初识Nginx(概念、在Docker中安装Nginx、常用命令、配置文件)


    1、Nginx初识

    (1)概念

    Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好

    Nginx可以作为静态页面的web服务器,同时还支持CGⅠ协议的动态语言,比如pexl、php等。但是不支持java。Java程序只能通过与tomcat配合完成。Nginx.专为性能优化而开发,性能是其最重要的考量, 实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。

    支持热部署,即使运行数个月也不需要重新启动,还能够在不间断的情况下对软件版本进行升级

    占用内存少,并发能力强

    (2)正向代理

    Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。

    正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

    (3)反向代理

    反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问(正向代理需要在客户端配置正向代理服务器),我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器地址。

     客户端并不知道有代理服务器,而是将代理服务器和tomcat服务器作为一个服务器,对外暴露的是反向代理的端口号实际上访问的是tomcat

    (4)负载均衡

    在进行负载均衡之前所有的请求都由一台服务器来处理,负载均衡要做的是增加服务器的数量之后将请求分发到各个服务器上,将原来的请求集中到单个服务器的情况改为将请求分发到多个服务器上,降幅在分发到不同的服务器

    负载均衡:

     (5)动静分离

    为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

    2、Nginx在linux中的安装

    (1)在centos7中安装nginx的镜像

    [root@aubin docker]# docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    bb79b6b2107f: Already exists 
    111447d5894d: Pull complete 
    a95689b8e6cb: Pull complete 
    1a0022e444c2: Pull complete 
    32b7488a3833: Pull complete 
    Digest: sha256:ed7f815851b5299f616220a63edac69a4cc200e7f536a56e421988da82e44ed8
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest

    (2)创建nginx镜像的相应容器并将日志和配置文件拷贝到宿主机

    [root@aubin docker]# docker run --name nginx -d -p 8080:80 nginx
    [root@aubin /]# docker cp nginx:/etc/nginx/ /home/admin/volume/nginx/config
    [root@aubin /]# docker cp nginx:/var/log/nginx /home/admin/volume/nginx/log
    [root@aubin /]# cd /
    [root@aubin /]# ls
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  zzyyuse
    [root@aubin /]# cd home/zhaihuabing
    [root@aubin zhaihuabing]# ls
    volume
    [root@aubin zhaihuabing]# cd volume/nginx
    [root@aubin nginx]# ls
    config  log
    [root@aubin nginx]# cd log
    [root@aubin log]# ls
    access.log  error.log

    (3)关闭临时的nginx容器

    [root@aubin log]# docker kill nginx
    nginx
    [root@aubin log]# docker rm nginx
    nginx

    (4)正式启动nginx

     docker run  -d  
    --name nginx
    -p 80:80
    -v /home/admin/volume/nginx/config/nginx:/etc/nginx
    -v /home/admin/volume/nginx/log/nginx:/var/log/nginx nginx

    (5)测试:linux的IP加nginx的端口号

    3、Nginx常用命令

    (1)以前台运行的方式进入Nginx

    [root@aubin etc]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    26881e7ccf13        nginx               "/docker-entrypoint.猞"   About an hour ago   Up About an hour    0.0.0.0:80->80/tcp       nginx
    fc5f28e676c7        redis               "docker-entrypoint.s猞"   15 hours ago        Up 15 hours         0.0.0.0:6379->6379/tcp   myredis1
    [root@aubin etc]# docker exec -it 26881e7ccf13 /bin/bash

    (2)查看版本号

    root@26881e7ccf13:/# nginx -v
    nginx version: nginx/1.19.3

    (3)检查对nginx.conf文件的修改是否正确

    root@26881e7ccf13:/# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    (4)重新启动

    root@26881e7ccf13:/# nginx -s reload
    2020/10/28 03:05:45 [notice] 53#53: signal process started

    (5)停止

    root@26881e7ccf13:/# nginx -s stop
    2020/10/28 03:05:57 [notice] 55#55: signal process started

    (6)查看进程

    [root@aubin etc]# ps -ef|grep nginx
    root      21708  18477  0 11:09 pts/0    00:00:00 grep --color=auto nginx

    4、nginx的配置文件

    (1)打开配置文件

    root@ba4e30b7f0b4:/# ls
    bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    root@ba4e30b7f0b4:/# cd etc
    root@ba4e30b7f0b4:/etc# ls
    adduser.conf            debconf.conf    gai.conf   hosts        ld.so.conf.d   motd           passwd     rc4.d        selinux  systemd
    alternatives            debian_version  group      init.d       ldap           mtab           passwd-    rc5.d        shadow   terminfo
    apt                     default         group-     inputrc      libaudit.conf  nginx          profile    rc6.d        shadow-  timezone
    bash.bashrc             deluser.conf    gshadow    issue        localtime      nsswitch.conf  profile.d  rcS.d        shells   ucf.conf
    bindresvport.blacklist  dpkg            gshadow-   issue.net    login.defs     opt            rc0.d      resolv.conf  skel     update-motd.d
    ca-certificates         environment     gss        kernel       logrotate.d    os-release     rc1.d      rmt          ssl      xattr.conf
    ca-certificates.conf    fonts           host.conf  ld.so.cache  machine-id     pam.conf       rc2.d      securetty    subgid
    cron.daily              fstab           hostname   ld.so.conf   mke2fs.conf    pam.d          rc3.d      security     subuid
    root@ba4e30b7f0b4:/etc# cd nginx
    root@ba4e30b7f0b4:/etc/nginx# ls
    conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
    root@ba4e30b7f0b4:/etc/nginx# cat nginx.conf

    (2)配置文件解析nginx.conf(核心配置文件)

    root@ba4e30b7f0b4:/etc/nginx# cat nginx.conf
    
    user  nginx;
    worker_processes  1;   
    以上是全局块,work_processes的数值越大,Nginx的并发能力就越强
    error_log  /var/log/nginx/error.log warn;  nginx的错误日志存放的位置
    pid        /var/run/nginx.pid;  Nginx的运行标识
    
    
    events {
        worker_connections  1024;  数值越大并发能力越强
    }
    
    
    http {
        include       /etc/nginx/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  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;  引入配置文件(conf.d目录下以.conf结尾的配置文件)
    }

    (3)配置文件的解析conf.d下的default.conf

    root@ba4e30b7f0b4:/etc/nginx# ls
    conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
    root@ba4e30b7f0b4:/etc/nginx# cd conf.d
    root@ba4e30b7f0b4:/etc/nginx/conf.d# ls
    default.conf
    root@ba4e30b7f0b4:/etc/nginx/conf.d# cat default.conf
    server {
        listen       80;  nginx监听的端口号
        listen  [::]:80;
        server_name  localhost;  localhost代表nginx接受请求的IP
    
        location / {
            root   /usr/share/nginx/html;  根据此路径去查找静态资源
            index  index.html index.htm;  默认去此路径找到index文件
        }
    
     
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
    }
  • 相关阅读:
    TokenType ([{}{}()])[{}]{}
    C# netcore 开发WebService(SoapCore)
    C++求快速幂
    二分法与牛顿迭代法求方程根
    Obtaining a Thorough CS Background Online (线上CS深度学习攻略)
    Elasticsearch 堆空间配置
    S家lic
    如何用calibredrv 来merge多个cell的gds
    siliconsmart feature
    openwrt的IPTV配置
  • 原文地址:https://www.cnblogs.com/zhai1997/p/13870751.html
Copyright © 2020-2023  润新知