IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> nginx知识总结 -> 正文阅读

[系统运维]nginx知识总结


记nginx实践的思考与知识终结

nginx

疑问:谈到nginx的作用,第一反应就是反向代理,那么反向代理是什么呢?

反向代理

一般的网络请求我们会分为两种身份:客户端 & 服务器

nginx充当一个中间者,客户端以为是向服务器发送了请求,实际是发送给了nginx,nginx判断向哪个服务器发送请求,并将获得的内容返回给客户端:

客户端 <-> nginx <-> 服务器

nginx突破自身ip访问的限制,使得用户客户端能够通过代理访问到其他网站资源

笔者认为ip访问的限制在于:如果没有代理服务器,ip只能在同一个局域网内进行网站访问,这体现在生活中,同在教室的同学可以通过ip地址访问另一个同学本地启动的网站资源,但无法通过ip地址去访问身居外地的同学本地启动的网站资源,因为他们身处于不同的局域网

正向代理

客户端使用了某个介质服务器去访问响应的网络资源,向代理发送一个请求并指定目的服务器,由代理来转交请求;现实生活中可能会通过easyconnect去帮我们访问及获取某个网络资源,如在家公网访问公司内网内容。

区别:

通俗来讲

  1. 反向代理:网络用户在使用层面上会认为是在向目的服务器发送请求,并不知道中间还经历了反向代理这个过程,就像我们直接在浏览器上敲入一个url进行访问,你以为是向目的服务器发送了请求,实际经过了反向代理这一步骤
  2. 正向代理:网络用户明确知道这个代理服务器的存在,且需要进行设置(如下载安装,指定目的服务器)

配置信息语法

对nginx进行配置时,通过listen 端口号以及location句式去判断(具体笔者就不赘述了

在实践过程中使用了两个语法句式 alias 与 root

alias 与 root 区别

  1. alias会直接在配置的文件目录里找文件,即最终访问的实际路径是alias所配置的路径
location /turn{
     alias /html/turn-h5/;
}

如果你访问/turn/下的某个文件,nginx会自动去/html/turn-h5/下找文件

假设你访问的路径是 https://配置的server_name/turn/

那么最终访问的实际路径是 https://配置的server_name/html/turn-h5/

root是最上层目录的定义,即最终访问的实际路径是root所配置的路径+location的路径

location /turn{
     root /html/turn-h5;
}

如果你访问/turn下的某个文件,nginx会自动去/html/turn-h5/turn下找文件

假设你访问的路径是 https://配置的server_name/turn/

那么最终访问的实际路径是 https://配置的server_name/html/turn-h5/turn

ssl证书

由于实践任务的需要,笔者需要进行ssl证书的创建

主要过程:找到(阿里云、腾讯云)的ssl证书创建入口,点击创建ssl证书,绑定相应的域名,根据需要填写的内容操作即可。

ps: 具体可以搜索网上,有蛮多教程的

简而言之,ssl证书是为了能够使用https协议去访问对应域名

ssl证书的作用

现实网络请求:http协议(80端口)、https协议(443端口)
http 与 https除了端口号不同还有什么区别:

  • http 明文传输,https 是利用ssl加密传输,非对称加密

使用https发送请求的过程:

  1. 客户端连接服务器
  2. 服务器发送数字证书(包含公钥
  3. 客户端检查数字证书是否合法
  4. 是则随机生成密钥,再利用公钥对生成的密钥进行非对称加密,发送给服务器
  5. 服务器用私钥解密,得到客户端发的密钥,对数据进行对称加密,发送给客户端
  6. 客户端接收并用本地存储的密钥解密

总结以上:服务器掌握着私钥,并将公钥发送给了客户端,客户端使用公钥对随机生成的密钥进行加密,服务器使用私钥解密,得到密钥

安全保证

  • 在客户端的密钥只有客户端和服务器知道;
  • 密钥用非对称加密,数据用密钥进行对称加密

在阿里云申请ssl证书成功之后,下载对应nginx的ssl证书包含两个文件:pem后缀文件、key后缀文件 – 其实就对应数字证书私钥

在腾讯云申请ssl证书成功之后,下载对应nginx的ssl证书会包含四个文件,其中pem后缀文件、crt后缀文件、key后缀文件(前两个实际内容是一样的,都包含了证书信息),key一样道理是私钥

ssl证书的申请在于安全保证的两个信息点:一个安全数字证书,一个服务器需要的私钥

https 配置实践

nginx配置文件上与http配置的server大致相同,只是需要额外添加一些信息

  • http版本
# http版本
server {
     listen       80;
     server_name  xxxx;
	 location / {
        root   html;
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
      }

      location /admin/{
            proxy_set_header Host $host ;
            proxy_pass http://ip:8080/;# ip是可以是公网ip,或者你使用docker部署时配置的ip
            client_max_body_size  500m;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

	}
  • https 版本
# https版本
server {
    
    listen 443 ssl;
    server_name xxxx;#ssl证书绑定的域名
    ssl_certificate 证书文件;# pem文件、crt文件均可
    ssl_certificate_key 私钥文件;# 两个文件可以直接放在nginx.conf同一文件夹,如果另起文件夹,就需要注意配置完整的文件路径
    ssl_protocols TLSv1.2 TLSv1.3;#表示使用的加密套件的类型,TLSv1.3 要nginx1.13版本才能使用
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_session_timeout 5m;
    ssl_prefer_server_ciphers on;
    location / {
        root   html;
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
      }
  	location /admin/{
         proxy_set_header Host $host ;
         proxy_pass http://ip:8080/;# ip是可以是公网ip,或者你使用docker部署时配置的ip
         client_max_body_size  500m;
     }

     error_page   500 502 503 504  /50x.html;
     location = /50x.html {
          root   html;
        }
     }
  1. 如果nginx是通过docker 拉取镜像配置的,配置完成之后重启服务
    • nginx出错,可以到error.log查看错误信息
    • docker-compose up 启动服务 如果nginx配置有问题会直接显示
      • 注意:docker-compose up 是直接启动的方式,如果你退出,那么该服务就停止了,通常使用docker-compose up -d 命令后台启动服务
  2. 另外下载的:通过cd 到对应nginx目录下,使用./sbin/nginx -s reload命令重启nginx
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:40:15  更:2022-08-19 19:42:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 1:29:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码