• Nginx操作


    Nginx使用操作

    • 服务器: ubuntu
    • docker内操作nginx

    1. 安装nginx

    # 1. 查询nginx版本
    sudo docker search nginx
    # 2. 可以查询下载指定版本,也可以默认下载最新版本
    sudo docker pull nginx
    
    • 1
    • 2
    • 3
    • 4

    下载后查询是否下载成功

    执行sudo docker images

    在这里插入图片描述


    2. docker启动nginx

    sudo docker run -d -p 8000:80 --name=test_nginx nginx
    
    • 1
    • -d: 守护进程的形式启动
    • -p: 将容器内的80端口映射到宿主机的8000端口上
    • –name: 给nginx另起了个别名为test_nginx

    启动成功后执行sudo docker ps查看运行情况

    在这里插入图片描述

    启动成功后,在浏览器访问IP + 8000来查看是否运行成功
    在这里插入图片描述

    启动成功!!!!!!!!

    3. 目录介绍

    1. 先进入容器内部

      sudo docker exec -it test_nginx /bin/bash
      
      • 1

      注意: 进入容器后,Docker容器的基础镜像中没有包含你想要的软件包管理工具,例如vim命令都没有,此时如果出现 vim 等基础命令不存在,请使用如下解决方案:

      apt-get update  # 此步骤可能会很慢。。。。
      apt-get install vim -y 
      
      • 1
      • 2
    2. 日志目录

      • /var/log/nginx: 日志目录
        • access.log: 访问日志
        • error.log: 错误日志
      • /etc/nginx: 配置文件目录
        • conf.d
        • nginx.conf
      • /usr/share/nginx/html: 站点html目录
        • index.html: nginx首页html代码

    4. 更改站点内容,初试一下(此步骤可以省略)

    Welcome to nginx! 更改成 Hey, old baby

    vim /usr/share/nginx/html/index.html
    
    • 1

    在这里插入图片描述

    修改完成之后 wq 保存退出

    快捷键 ctrl + p + q 退出容器内

    重启 nginx

    sudo docker restart test_nginx
    
    • 1

    效果:

    在这里插入图片描述

    5. nginx配置文件结构

    • 全局快: 配置影响全局,包括运行nginx的用户组,进程存放,日志,配置文件等
    • events: 影响nginx服务器和客户端的网络连接,包括进程最大的连接数,数据驱动和序列化等。
    • http: 配置代理,缓存,日志,第三方模块等,可以嵌套多个server
      • server: 配置虚拟主机的参数
        • local: 配置路由请求,页面处理

    在这里插入图片描述

    • worker_processes: 这个是nginx服务器并发处理服务的关键配置,值越大,支持的并发量也就越多

    • events: 主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对多work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个work process可以同时支持的最大连接数等。

      设置工作模式为epoll,除此之外还有select,poll,kqueue,rtsig和/dev/poll模式

      worker_connections: 最大连接数

      events {
      	use epoll;
      	worker_connections 1024;
      }
      
      • 1
      • 2
      • 3
      • 4
    • http: Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里

      • http全局块: 全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。
      • server: 每个http块可以包含多个server块,每个server块就相当于一个虚拟主机,每个server块也可以包含多个location
        • location: 这块的主要作用是基于Nginx服务器接收到的请求字符串(例如server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

    5.1 http配置示例

    http {
        # 主模块命令,实现对配置文件所包含的文件的设定,减少主配置文件的复杂度
        include       /etc/nginx/mime.types;
        # 核心模块命令,默认设置为二进制流
        default_type  application/octet-stream;
    	# 日志格式设定,main为日志格式的名称(可自定义)
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    	# 引用日志main的格式
        access_log  /var/log/nginx/access.log  main;
    	# 是一个用于优化文件传输性能的指令。当这个指令设置为 on 时,Nginx 会使用操作系统的 sendfile 函数来输出文件,而不是自己读取文件并输出。sendfile 函数通常更高效,因为它可以直接从内核空间到用户空间发送数据,减少了数据在用户空间和内核空间之间的复制。
        sendfile        on;
        # tcp_nopush 指令会告诉 Nginx 在一个数据包中尽可能多地发送数据,而不是为每个小数据包都发送一个。这可以减少网络上的小包数量,从而提高性能。
        #tcp_nopush     on;
    	# 用于设置长连接(keep-alive 连接)的超时时间。当一个连接在完成一个请求后保持打开状态,以便后续请求可以在同一个连接上发送时,这个设置就很有用。65 表示这个超时时间是 65 秒。如果一个连接在 65 秒内没有新的请求,Nginx 就会关闭这个连接。
        keepalive_timeout  65;
    	#设置允许客户端请求的最大的单个文件字节数
        client_max_body_size 20M;
        #指定来自客户端请求头的headebuffer大小
        client_header_buffer_size  32k;
        #指定连接请求试图写入缓存文件的目录路径
        client_body_temp_path /dev/shm/client_body_temp;
        #指定客户端请求中较大的消息头的缓存最大数量和大小,目前设置为4个32KB
        large_client_header_buffers 4 32k;
        #设置客户端连接保存活动的超时时间
        #keepalive_timeout  0; # 无限时间
        keepalive_timeout  65;
        #设置客户端请求读取header超时时间
        client_header_timeout 10;
        #设置客户端请求body读取超时时间
        client_body_timeout 10;
        server {
            
        }
    
        #gzip  on;
    	# 引入 conf.d中的配置信息
        # include /etc/nginx/conf.d/*.conf;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    5.2 server配置

    server {
        #单连接请求上限次数
        keepalive_requests 120; 
        #监听端口, HTTPS监听端口是443
        listen       88;
        #监听地址,可以是ip,最好是域名
        server_name  xxx.xxx.xxx.xxx;
        #server_name  www.xxx.com;
        # SSL证书和私钥文件的位置  
        # ssl_certificate /path/to/your/certificate.pem;  
        # ssl_certificate_key /path/to/your/private.key; 
        # 其他SSL相关的配置,例如协议版本和加密套件  
        # ssl_protocols TLSv1.2 TLSv1.3; 
        # ssl_ciphers HIGH:!aNULL:!MD5; 
        #设置访问的语言编码
        charset utf-8;
        #设置虚拟主机访问日志的存放路径及日志的格式为main
        access_log  /www/wwwlogs/xxx.log main; #响应日志
        error_log  /www/wwwlogs/xxx.log main; #错误日志
        
        #设置主机基本信息
        #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
        location  ~*^.+$ {
        	#根目录
            root html;  
            #设置默认页
            index  index.html index.htm;
            #拒绝的ip,黑名单
            deny 127.0.0.1;  
            #允许的ip,白名单
            allow 172.18.5.54; 
        } 
        
        #禁止访问的文件或目录
        location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
        {
            return 404;
        }
        
        #SSL证书验证目录相关设置
        location ~ \.well-known{
            # 允许所有访问  
            allow all;
        }
        
    	#图片资源配置
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
            error_log /dev/null;
            access_log off;
        }
        
        #网站js与css资源配置
        location ~ .*\.(js|css)?$
        {
            expires      12h;
            error_log /dev/null;
            access_log off; 
        }
        # 配置代理到后端接口  
        location /api/ {  
            # 设置代理的后端服务器地址  
            proxy_pass http://backend_server_address/api/;  
      
            # 如果需要,修改传递给后端服务器的请求头  
            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 X-Forwarded-Proto $scheme;  
      
            # 代理设置(可选)  
            proxy_connect_timeout 1s;  
            proxy_send_timeout 1s;  
            proxy_read_timeout 1s;  
            proxy_buffer_size 128k;  
            proxy_buffers 4 256k;  
            proxy_busy_buffers_size 256k;  
      
            # 如果后端服务器返回404,继续搜索其他location  
            proxy_intercept_errors on;  
      
            # 其他代理相关配置...  
        }  
        
        #访问异常页面配置
        error_page  404              /404.html;
        error_page  500 502 503 504  /50x.html;
        location = /50x.html {
    		root   html;
    	}
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
  • 相关阅读:
    realityOS会是苹果的新操作系统吗?
    【C++】list容器介绍及使用
    【C++进阶】map和set( 万字详解)—— 上篇
    .NET Core WebAPI 基础 文件上传
    Vue知识点总结
    Intel汇编-Linux系统调用
    繁杂表单拖了发展后腿?低代码助你免去烦忧!
    Ajax之基本语法
    UDS入门至精通系列:Service 23
    linux文件压缩、解压缩以及归档
  • 原文地址:https://blog.csdn.net/weixin_55555564/article/details/136197135