nginx基础应用

88 阅读4分钟

常用版本分为四大阵营

• Nginx开源版 • nginx.org/ 原始开源 页面服务器+负载均衡器+反向代理

• Nginx plus 商业版 • www.nginx.com 商业全家桶,功能都有了

• Openresty • openresty.org 开源+主要研究对象+lua脚本

• Tengine • tengine.taobao.org 不想做更多的二次开发,只想获得高效的性能。

域名解析用例
  • 多用户二级域名

91d62cc0eb8e651c6a641094bb95edf.png

  • 短网址 将长网址生成短网址

image.png 短网址原理:w.3.cn/100000xZ 请求nginx地址,在db中有100000xZ与长网址的映射,这样就拿到了长网址的内容, 再返回给client 1686731144554.png

  • httpdns 不适合浏览器 一般dns是使用tcp协议的,要查询一个域名的ip,是想全网广播,使用tcp协议查询域名的ip的。 httpdns 适合 app、畅通的c/s架构 app 开始运行的时候,在app中内置了一个ip,此ip的地址是我们部署的nginx地址,回去查询用到的特定域名的ip地址。
反向代理

1686732623449.png

  • 隧道式代理

请求---》网站内网路由器---》代理服务器---》应用服务器集群----》代理服务器---》网站内网服务器----》client

  • DR 模式代理 代理服务器只转发请求,返回直接由集群服务器处理。例如下载视频,请求很小,返回很大,就不走代理了。

请求---》网站内网路由器---》代理服务器--》应用服务器集群----》内网服务器--》client

tomcat
  • tomcat 是动态服务器,首次连接tomcat请求静态文件的时候,会有会话的概念,会创建session,tomcat运行在jvm容器中的,tomcat 的执行效率会略低于nginx;并不是每次连接都会去创建session,只是在首次连接时候创建,以后会保持这个连接,tomcat也是哟keepalived的,可以复用以前的网路连接通道,比如我有200多个请求tomcat,可能有十几次连接,其他就复用以前连接了,请求到服务器,内容就能立即返回。
防止盗链
  • 服务器上的资源,只能服务器访问,其他的引用不能访问。
  • 实现原理:使用http中中的referer属性
  • 地址栏输入www.jd.com/, 请求域名下的index.html文件,此http请求的referer为空。index.hmtl中的引用资源,first-screen.chunk.css的Referer:www.jd.com/
  • 而使用一个ip,通过反向代理proxy_pass or html中直接引用www.jd.com/first-scree… 此时的referer是这个ip, 就这样通过判断referer就可以用来判断是不是我服务器应用的,就可以用来防止盗链。
  • 使用情况,你的资源是稀缺的,要让你的用户只能到你指定的网站上查看资源。

此处结束盗链的是图片 返回的是错误页面。 1686797160719.png 或者返回固定的图片 1686797388154.png

非对称加密的原理图 先请求443,下载公钥,公钥可能被其他人获取。

1686807435826.png

  • 问题: 伪造网站无法避免。 详解:请求公钥是透明的,我伪造一个你要请求的网站,假网站拿到你的请求,代替你去请求真的网站,拿到真的公钥,下发给你假的公钥,假公钥加密的信息,假网站用假私钥解密, 假网站再用帧公钥去请求真网站。 1686807894388.png 解决: 添加ca机构

1686811030105.png

  • 将要下发的服务器公钥server_public_key先提交给CA机构(server_public_key可能被获知),ca机构认证网站是合法的, ca拿到server_public_key后,用ca_private_key加密server_public_key形成一个 证书,ca将证书发给服务器。client请求数据时,将这个 证书 发给客户端。
  • 操作系统内嵌中都有ca机构的对应公钥 ca_public_key,client用ca_public_key解密这个 证书 拿到server_public_key,client就用这个server_public_key加密数据后发给服务器,服务器再用server_private_key解密。
  • 以上就是https的原理。为了保证操作系统中ca_public_key的合法,要使用正版软件,不要安装非法软件,不要浏览非法网站,一定要留意根证书的修改操作的危险性。一定要开360,防止第三方修改根证书。
  • 问题:银行系统,我监听你的键盘,窃听用户名密码 -----》 使用加密键盘,不让监听
  • 问题:恶意软件录屏你的键盘操作 ------》没办法了,只能拿手机验证,转账的时候通知你,然你填写一个验证码。
应用自签名
  • 很少使用,网站使用openssl自己扮演ca机构。
  • OpenSSL
实际nginx+ssl配置

1686817069517.png

1686817123520.png

课程来自尚硅谷