【后端】Nginx+lua+OpenResty高性能实践

文章目录

  • [9. HTTPS安全认证](#9. HTTPS安全认证)
    • [9.1 证书](#9.1 证书)
    • [9.2 证书获取方式](#9.2 证书获取方式)
    • [9.3 自签证书-openssl工具](#9.3 自签证书-openssl工具)
    • [9.4 Nginx配置HTTPS](#9.4 Nginx配置HTTPS)
  • [10. websocket转发配置](#10. websocket转发配置)
  • 100.常遇的问题
    • [100.1 host](#100.1 host)

【后端&网络&大数据&数据库目录贴】

9. HTTPS安全认证

http协议问题:

  • 明文传输,有被第三方截取到数据信息的风险 (加密处
    理)
  • 对于数据完整性:篡改数据(校验码)
  • 身份验证:无法确认发送者身份(密钥对)

9.1 证书

证书 可以对身份进行验证,密钥对存在漏洞,黑客可以伪装

为发送者,生成密钥对,发送给接受者。
引入 第三方证书,证书通过加密算法对内容进行加密,并且

证书可以明确的记录证书颁发机构的信息,证书使用者的相

关信息,从而接受者接收到证书,对证书信息通过公钥进行

验证,能够识别真实的发布者身份。

9.2 证书获取方式

  1. 通过官方机构购买证书
  2. 通过证书签发工具,自签证书。

9.3 自签证书-openssl工具

还有cfssl工具等等

  • SSL数据传输原理
  • Openssl自签发证书

证书包含的内容:

  • 一对密钥对
  • 颁发者和使用者信息
  • 证书的相关信息
  • Openssl命令应用

yum install openssl -y
-in filename 指定要加密的文件的路径
-out filename 指定加密后的文件的存放位置
-salt 自动插入一个随机数到文件中
-e 指定加密算法
-d 解密算法

  • 自签发证书

openssl genrsa -out private.pem #生成私钥
openssl rsa -in private.pem -pubout -out key.pem # 根据生成对应公钥
req -new -x509 -key private.pem -out ca.crt -days 36500 # 生成自签证书

(common name随便写即可)

9.4 Nginx配置HTTPS

xml 复制代码
server {
        listen 81 ssl;
        server_name localhost;
        ssl_certificate /usr/local/https/ca.crt;
        ssl_certificate_key /usr/local/https/private.pem;


        location / {
            root   html;
            index  index.html index.htm;
        }
    }
  • 可以将http转化成https的输入,自动跳转
xml 复制代码
server {
        listen 443 ssl;
        server_name localhost;
        ssl_certificate /usr/local/https/ca.crt;
        ssl_certificate_key /usr/local/https/private.pem;  
      

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index  index.html index.htm;
            rewrite (.*) https://114.115.185.179/$uri redirect;
        }
   }     

10. websocket转发配置

conf 复制代码
server {
    listen 80;
    server_name example.com;  # 你的域名
 
    location /ws/ {
        proxy_pass http://websocket_backend;  # websocket_backend 是你的 WebSocket 服务器的 upstream 名称
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
类似于 HTTP 转发,websocket_backend 应该是一个 upstream 指令定义的服务器组。
上面的配置中proxy_set_header Upgrade $http_upgrade 和 proxy_set_header Connection "upgrade" 
是 WebSocket 协议升级所需的标头。

100.常遇的问题

100.1 host

在 Nginx 中,当使用 proxy_pass 指令将请求转发到上游服务器时,默认情况下Host 头部字段的值会被设置为 proxy_pass 指令中指定的上游服务器的地址(通常是上游服务器的域名或 IP 地址和端口)。这是为了防止上游服务器无法识别原始请求的 Host 头部字段值。

然而,如果你希望保持原始请求的 Host 头部字段值不变,你可以使用 proxy_set_header 指令来明确设置 Host 头部字段的值。通常,你会这样做来保持原始请求的 Host 值:

yml 复制代码
location / {  
    proxy_pass http://your_upstream;  
    proxy_set_header Host $host;  
    # 其他可能的设置...  
}
相关推荐
冰橙子id1 天前
centos7编译安装LNMP架构
mysql·nginx·架构·centos·php
米粉03052 天前
深入剖析Nginx:从入门到高并发架构实战
java·运维·nginx·架构
静水楼台x2 天前
nginx日志的一点理解
运维·nginx
欧先生^_^2 天前
ingress-nginx 开启 Prometheus 监控 + Grafana 查看指标
nginx·grafana·prometheus
什么都想学的阿超2 天前
【Redis系列 03】掌握Redis编程艺术:事务、管道与Lua脚本完全指南
redis·junit·lua
眠修2 天前
Nginx + Tomcat负载均衡群集
nginx·tomcat·负载均衡
编程乐学(Arfan开发工程师)2 天前
42、响应处理-【源码分析】-浏览器与PostMan内容协商完全适配
java·spring boot·后端·测试工具·lua·postman
瘦皮猴2 天前
golang context canceled异常排查
后端·nginx
啾啾Fun2 天前
【Java微服务组件】分布式协调P4-一文打通Redisson:从API实战到分布式锁核心源码剖析
java·redis·分布式·微服务·lua·redisson
多多*2 天前
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
linux·开发语言·redis·python·bootstrap·lua