Nginx操作

文章目录

  • Nginx使用操作
    • 1. 安装nginx
    • 2. docker启动nginx
    • 3. 目录介绍
    • 4. 更改站点内容,初试一下(此步骤可以省略)
    • 5. nginx配置文件结构
      • 5.1 http配置示例
      • 5.2 server配置

Nginx使用操作

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

1. 安装nginx

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

下载后查询是否下载成功

执行sudo docker images

在这里插入图片描述


2. docker启动nginx

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

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

在这里插入图片描述

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

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

3. 目录介绍

  1. 先进入容器内部

    sudo docker exec -it test_nginx /bin/bash
    

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

    apt-get update  # 此步骤可能会很慢。。。。
    apt-get install vim -y 
    
  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

在这里插入图片描述

修改完成之后 wq 保存退出

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

重启 nginx

sudo docker restart test_nginx

效果:

在这里插入图片描述

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

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/397973.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Atcoder ABC340 C - Divide and Divide

Divide and Divide(分而治之) 时间限制:2s 内存限制:1024MB 【原题地址】 所有图片源自Atcoder,题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 【样例…

《Solidity 简易速速上手小册》第5章:智能合约的安全性(2024 最新版)

文章目录 5.1 安全性的重要性5.1.1 基础知识解析深入理解安全性的多维度影响智能合约安全的关键要素 5.1.2 重点案例:防止重入攻击案例 Demo:构建一个防重入的提款合约案例代码WithdrawContract.sol 测试和验证拓展功能 5.1.3 拓展案例 1:预防…

拿捏c语言指针(下)

前言 此篇讲解的主要是函数与指针的那些事~ 书接上回 拿捏c语言指针(上)和 拿捏c语言指针(中) ​​​​​​没有看的小伙伴要抓紧喽~ 欢迎关注​​个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误&#x…

STM32_ESP8266 连接阿里云 操作图解

一、烧录MQTT固件 ESP8266出厂时,默认是:AT固件。连接阿里云需要:MQTT固件。 因此,我们需要给8266重新烧录 MQTT固件。 针对“魔女开发板,ESP8266模块烧录MQTT固件,图解教程如下: ESP8266 烧录 …

【Vuforia+Unity】AR01实现单张多张图片识别产生对应数字内容

1.官网注册 Home | Engine Developer Portal 2.下载插件SDK,导入Unity 3.官网创建数据库上传图片,官网处理成数据 下载好导入Unity! 下载好导入Unity! 下载好导入Unity! 下载好导入Unity! 4.在Unity设…

在 Vue 中将 DOM 导出为图片

你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧! 在日常的工作中&…

五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)&#xff0…

基于物联网智慧公厕的多功能城市智慧驿站

在现代城市发展中,智慧化已经成为了一个不可或缺的趋势。而多功能城市智慧驿站,作为智慧城市建设的一部分,以物联网智慧公厕为基础,集合了诸多功能于一身,成为了城市中不容忽视的存在。多功能城市智慧驿站也称为轻松的…

05 扩展组件:自定义CheckBox组件

系列文章目录 01 Qt自定义风格控件的基本原则-CSDN博客 02 从QLabel聊起:自定义控件扩展-图片控件-CSDN博客 03 从QLabel聊起:自定义控件扩展-文本控件-CSDN博客 04 自定义Button组件:令人抓狂的QToolButton文本图标居中问题-CSDN博客 目…

【深度优先】【广度优先】Leetcode 104 二叉树的最大深度 Leetcode 111 二叉树的最小深度 Leetcode 110 平衡二叉树

【深度优先】【广度优先】Leetcode 104 二叉树的最大深度 Leetcode 111 二叉树的最小深度 Leetcode 110 平衡二叉树 Leetcode 104 二叉树的最大深度解法1 深度优先 递归法 后序:左右中解法2 广度优先:层序遍历 Leetcode 111 二叉树的最小深度解法1 深度…

SNAT与DNAT公私网地址转换

前言 SNAT和DNAT是两种重要的网络地址转换技术,它们允许内部网络中的多个主机共享单个公共IP地址,或者将公共IP地址映射到内部网络中的特定主机。这些技术在构建企业级网络和互联网应用程序时非常重要,因为它们可以帮助保护内部网络安全&…

ONLYOFFICE 8.0:引领数字化办公新纪元

目录 前言 软件安装 软件启动 软件新版本特性 个人评价 总结 前言 在当今快节奏的数字化世界中,高效的办公软件已成为企业竞争力的关键因素。ONLYOFFICE,作为全球领先的办公解决方案提供商,始终致力于通过技术创新来优化用户体验。如今…

阿里云的流量价格表_2024阿里云服务器流量费用表

阿里云服务器宽带按使用流量怎么收费的?价格为0.8元/GB,地域不同流量价格也不同,北京、杭州、上海、深圳等中国大陆地域是0.8元每GB,中国香港是1元/GB,美国流量0.5元1GB、日本流量0.6元、韩国流量0.8元,阿里…

linux 修改开发板网卡eth0的ip地址

win10如何新增电脑ip地址: https://blog.csdn.net/linxinfa/article/details/105817473 ifconfig # 可设置网络设备的状态,或是显示目前的设置。 命令详解:https://www.runoob.com/linux/linux-comm-ifconfig.html 一、临时修改 ifconfig e…

[05] computed计算属性

computed计算属性 语法: 声明在 computed 配置项中,一个计算属性对应一个函数使用起来和普通属性一样使用 {{计算属性名}} 注意 computed配置项和data配置项是同级的computed中的计算属性虽然是函数的写法,但它依然是属性computed中的计算…

C++:C++入门基础

创作不易,感谢三连 !! 一、什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机&#xff…

virtualbox虚拟机运行中断,启动报错“获取 VirtualBox COM 对象失败”

文章目录 问题现象排查解决总结 问题现象 2月7日下午四点多,我已经休假了,某县的客户运维方打来电话,说平台挂了,无法访问客户是提供的一台Windows server机器部署平台,是使用virtualbox工具安装的CentOS7.9虚拟机和运…

宝塔nginx配置SpringBoot服务集群代理

宝塔nginx配置SpringBoot服务集群代理 1、需求: 现有一个springboot服务需要部署成集群,通过nginx负载均衡进行访问,其中这个springboot服务内置了MQTT服务、HTTP服务、TCP服务。 MQTT服务开放了1889端口 HTTP服务开放了8891端口 HTTP服务开…

【嵌入式】CAN总线

1 简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。 CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线…

【Pytorch 基础教程2】10分钟掌握Tensor基础 VSCode +Pytorch配置

Pytorch 基础教程 02 Tensor PyTorch 作为Numpy的代替品,可以使用GPU的强大计算能力 提供最大的灵活性和告诉的深度学习研究平台 这里补充上实验环境调试:第一次使用VS Code可以参考:PyTorch(超详细)部署与激活 举起Py…