Nginx代理以及面向未来的HTTP
时间:2022-07-23
本文章向大家介绍Nginx代理以及面向未来的HTTP,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
windows 下使用 nginx
通过官网下载 Nginx,将其解压。在命令行内输入./nginx.exe
即可启动。
基础代理配置
如果启动的 nginx 进程过多,可能会导致代理不生效! 通过
taskkill /IM nginx.exe /F
命令可以清除所有 nginx 进程。
- 通过
include server/*.conf
实现为单独一个站点设置配置文件
此配置代表将 server 文件下的所有 conf 文件导入。
http{
include server/*.conf
}
- 最简单的代理
以上配置表示 当访问 test.com 时会映射到本地 8888 端口。
$host
表示请求的地址。
server{
listen 80;
server_name test.com;
location /{
proxy_pass http://127.0.0.1:8888;
# 修改代理头为请求的地址
proxy_set_header Host $host;
}
}
代理缓存
proxy_cache_path cache levels=1:2 keys_zone=my_cache:10m;
server{
listen 80;
server_name test.com;
location / {
proxy_pass http://127.0.0.1:8888;
# 修改代理头为请求的地址
proxy_set_header Host $host;
# 设置缓存(名字与上方对应)
proxy_cache my_cache;
}
}
可以使用 Vary 对不同请求头设置缓存。
HTTPS
证书生成命令:
openssl req -x509 -newkey rsa:2048 -nodes -sha256 -keyout localhost-privkey.pem -out localhost-cert.pem
- 通过 nginx 部署 https 服务
server{
listen ssl;
server_name test.com;
ssl on;
ssl_certificate_key ../certs/localhost-privkey.pem;
ssl_certificate ../certs/localhost-cert.pem;
location / {
proxy_pass http://127.0.0.1:8888;
# 修改代理头为请求的地址
proxy_set_header Host $host;
}
}
其中将证书放到了根目录下 certs
文件夹下。
- 访问自动跳转 https
server{
listen 80 default_server;
listen [::]:80 default_server;
server_name test.com;
return 302 https://$server_name$request_url;
}
HTTP2 的优势
- 信道复用
- 分帧传输
- Server Push HTTP1.1 中
HTTP2 中
通过 nginx 设置 HTTP2
server{
listen ssl http2;
http2_push_preload on;
}
http2 必须在 https 的基础上开启。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【漫游Github】无编译/无服务器,实现浏览器的 CommonJS 模块化
- 《秋风日常第一期》白板协作工具 LeanBoard
- 《秋风日常第二期》一个快速找出待SEO图片的技巧
- 《模块化系列》snowpack,提高10倍打包速度。
- 《秋风日常第三期》11个前端开发者必备的网站
- 专为程序员定制的垃圾清理工具(Node Cli实现)
- CodePen vue SFC 、flutter 在线玩耍来袭
- [重拾CSS]一道面试题来看伪元素、包含块和高度坍塌
- webpack 拍了拍你,给了你一份图解指南(模块化部分)
- 深入探究Immutable.js的实现机制(一)
- 深入探究immutable.js的实现机制(二)
- ES6 Promise 的最佳实践
- 「 Map最佳实践」什么时候适合使用 Map 而不是 Object
- ES2017 异步函数的最佳实践(`async` /`await`)
- React Hooks中这样写HTTP请求可以避免内存泄漏