看上图,鼠标右键-在新标签中打开图片食用

内容分为三部分:

nginx转发

OpenResty(nginx升级版)_web服务器+lua

测试

1.nginx转发

1.1.搭建nginx

略; 翻阅其他文章;window直接安装exe, linux翻翻博客, docker 拉个nginx镜像再翻翻博客。

1.2. nginx转发配置


#user  nobody;
worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;upstream nginx-cluster{server 132.232.xxx.xxx:8081;}server {listen       80;server_name  localhost;location /api {proxy_pass http://nginx-cluster;}location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

这个配置是nginx conf文件的配置

1.upstream 是做负载均衡的,也可以写多个server
upstream nginx-cluster{server 132.232.xxx.xxx:8081;server 132.232.xxx.xxx:8082;
}

这样写即可。

其中nginx-cluster就是一个变量,叫什么都可以,不过配上了之后,nginx在做反向代理时可以代理到指定ip:端口,也可以代理到这个变量。这个变量会被负载均衡器自动分配到对应的服务上去。

2. http
  • nginx监听着http的请求

3. listen 80;
  • nginx转发服务器监听着80端口

4. location /api { proxy_pass http://nginx-cluster; }
  • http://nginx转发服务器地址:80/api就会发送到nginx负载均衡器那里,从而转发给指定的服务器上的进程(服务)。

1.3. 启动nginx

  • window执行nginx.exe

  • linux 执行启动命令

  • 进入nginx/sbin目录

cd /usr/local/nginx/sbin/

  • 启动nginx

./nginx

  • docker run容器即可;

1.4. 启动,关闭,重启,命令

  • ./nginx //启动

  • ./nginx -s stop //关闭

  • ./nginx -s reload

  • ./代表是当前目录,前提是进入了nginx命令那个目录xxx/xxx/nginx/sbin

  • 配了环境变量就不需要./了。 --------有些啰嗦了。

2. OpenResty(nginx升级版)_web服务器+lua

2.1. OpenResty web服务器

1.简介

OpenResty ® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty ® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

OpenResty ® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

2.安装

2.1首先你的Linux虚拟机必须联网
2.2安装开发库
yum install -y pcre-devel openssl-devel gcc --skip-broken
2.3安装OpenResty仓库
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
如果提示说命令不存在,则运行:
yum install -y yum-utils
然后再重复上面的命令
2.4安装OpenResty
yum install -y openresty
2.5安装opm工具
opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。
yum install -y openresty-opm
2.6目录结构
默认情况下,OpenResty安装的目录是:/usr/local/openresty
2.7配置nginx的环境变量(它本质还是nginx只是多了些插件)
vi /etc/profile
在最下面加入两行:
export NGINX_HOME=/usr/local/openresty/nginx
export PATH=${NGINX_HOME}/sbin:$PATH# NGINX_HOME:后面是OpenResty安装目录下的nginx的目录然后让配置生效:
source /etc/profile

3.启动和运行

3.1 OpenResty底层是基于Nginx的,查看OpenResty目录的nginx目录,结构与windows中安装的nginx基本一致:
# 启动nginx
nginx
# 重新加载配置
nginx -s reload
# 停止
nginx -s stop
3.2 nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。修改`/usr/local/openresty/nginx/conf/nginx.conf`文件,内容如下:

#user  nobody;
worker_processes  1;
error_log  logs/error.log;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       8081;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}
3.3 nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。修改`/usr/local/openresty/nginx/conf/nginx.conf`文件,内容如下:

#user  nobody;
worker_processes  1;
error_log  logs/error.log;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       8081;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}
3.4在Linux的控制台输入命令以启动nginx
3.5然后访问页面:http://132.232.xxx.xxx:8081,注意ip地址替换为你自己的虚拟机IP:

4.后续步骤(在nginx的conf文件中进行配置lua拦截请求)

4.1.加载OpenResty的lua模块:
#lua 模块
lua_package_path "/usr/local/openresty/lualib/?.lua;;";
#c模块
lua_package_cpath "/usr/local/openresty/lualib/?.so;;";
4.2拦截指定请求(这里拦截带/api/item的请求)交给lua进行处理
location /api/item {# 默认的响应类型default_type application/json;# 响应结果由lua/item.lua文件来决定content_by_lua_file lua/item.lua;}
4.3完成配置后,配置文件长这样

#user  nobody;
worker_processes  1;
error_log  logs/error.log;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;#lua 模块lua_package_path "/usr/local/openresty/lualib/?.lua;;";#c模块  lua_package_cpath "/usr/local/openresty/lualib/?.so;;";server {listen       8081;server_name  localhost;location /api/item {# 默认的响应类型default_type application/json;# 响应结果由lua/item.lua文件来决定content_by_lua_file lua/item.lua;}location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

2.2. Lua

1.根据OpenResty的nginx conf创建lua文件

  • nginx conf中写到 content_by_lua_file lua/item.lua;

  • 意味着需要在nginx目录下创建一个lua目录,在lua目录下创建一个item.lua的文件

  • cd /usr/local/openresty/nginx

  • mkdir lua

  • touch lua/item.lua

2.编写item.lua 文件

  • vi item.lua(或者用其他文本编辑工具都可)

  • 键入代码

ngx.say('{"id":10001,"name":"SALSA AIR","title":"RIMOWA 27寸托运箱拉杆箱 SALSA AIR系列果绿色 820.70.36.4","price":19900,"image":"https://m.360buyimg.com/mobilecms/s720x720_jfs/t6934/364/1195375010/84676/e9f2c55f/597ece38N0ddcbc77.jpg!q70.jpg.webp","category":"拉杆箱","brand":"RIMOWA","spec":"","status":1,"createTime":"2019-04-30T16:00:00.000+00:00","updateTime":"2019-04-30T16:00:00.000+00:00","stock":2999,"sold":31290}')
  • 这段代码的意思是,以lua文件,向外发送json数据,ngx.say('')里面是一个json数据

  • 重新加载nginx配置

  • nginx -s reload

3.测试

  • 从nginx转发服务器上,访问http://localhost/api/item/10086

  • 返回的是openResty以lua的方式返回的json数据

  • 即从nginx转发到openRestyWeb服务器以lua做controller支撑返回数据就成功了

lua入门知识传送门:

https://blog.csdn.net/tgbyhn31/article/details/128530814?spm=1001.2014.3001.5502

xxx.nginx转发+OpenResty(nginx升级版)_web服务器+lua相关推荐

  1. nginx 根据IP转发到指定的后端服务器

    需求: 当用户请求IP为192.168.2.11时把后端请求转发到192.168.2.11服务器的8080端口 当用户请求IP为192.168.2.12时把后端请求转发到192.168.2.12服务器 ...

  2. ajax nginx 转发 sessionid_百度、京东、网易、腾讯、淘宝等大厂都在用的Web服务器Nginx详解

    Nginx背景和概述 Nginx(发音同 engine x)是一款基于异步框架的轻量级/高性能由C语言的Web 服务器/反向代理服务器/缓存服务器/电子邮件(IMAP/POP3)代理服务器,并在一个B ...

  3. nginx转发ArcServer地图服务器出现的http://localhost:6080/arcgis/rest/info?f=json跨域问题

    QQ交流群:607330463 GIS开发技术最强交流群   未经允许 禁止转载  可以参考 Access to XMLHttpRequest at 'http://localhost:6080/ar ...

  4. Centos7 安装Nginx(OpenResty)、Windows安装Nginx

    Nginx是一款高性能的代理.转发服务器,目前已经支持4层和7层代理. OpenResty则是基于Nginx增加Lua的功能,可以方便的实现缓存功能. 1.Nginx不同安装形式分析 安装形式 安装难 ...

  5. nginx 转发慢_学习Nginx的正确姿势,多图详解助你更上一层楼!(干货收藏篇)...

    本文主要帮助大家熟悉 Nginx 有哪些应用场景.Nginx 特点和架构模型以及相关流程.Nginx 定制化开发的几种模块分类. 本文将围绕如下几个部分进行讲解: Nginx 简介及特点 Nginx ...

  6. nginx简介--理解nginx配置/模块/openresty

    1. nginx功能和定位 Nginx最核心的功能是Web服务器和反向代理服务器. Web服务器完成对HTTP请求协议的解析和以HTTP协议格式响应请求.缓存.日志处理这些基本Web服务器功能: 反向 ...

  7. nginx转发websocket配置

    背景:启动socket后,一般可以用ip进行直连,不过这样会引发很多问题 解决方案:采用 域名+nginx转发 nginx配置如下: upstream swoole_http_server {serv ...

  8. 内网穿透+nginx转发

    内网穿透加nginx转发实现本地服务远程访问 前言 一.关于内网穿透 介绍 内网穿透常用工具 二.安装nginx(docker方式) 拉取镜像并启动 创建文件挂载目录(老规矩了) 重新创建并启动ngi ...

  9. nginx+php+kodexplorer--内网私云服务器搭建

    2019独角兽企业重金招聘Python工程师标准>>> nginx整合php 前段时间,在内网搭建了一个基于LNMP的个人cms站点,第一次接触了nginx,最开始了解nginx只知 ...

最新文章

  1. 面试题:问题:Java中,char型变量中能不能存储一个中文汉字,为什么?
  2. 计算机语言翻译的情诗,聂鲁达情诗翻译
  3. 动态代理(JDK的动态代理)
  4. Metasploit Framework 简介与使用
  5. ckeditor的使用实例
  6. Windows下查看端口被占用问题和解决办法
  7. redis 集群讲解
  8. jzoj1402-偷懒的小X【贪心】
  9. java中如何传递参数给控制器_如何使用ui-router中的ui-sref将参数传递给控制器
  10. 屏幕监控中捕获鼠标位置信息
  11. lnmp改php版本,lnmp安装多版本PHP共存的方法详解
  12. Sinevibes Plugins Bundle for Mac(Sinevibes合成器合集)
  13. 蛮牛精选七款Unity插件
  14. 决策树应用实例③——银行借贷模型
  15. 【gradle exclude冲突依赖】
  16. 基于OpenCV的在图片上画刻度尺坐标、分划版、侧微尺、十字双边带刻度
  17. fullpage插件的使用
  18. 叮咚智能音箱使用体验:好看的皮囊千篇一律,有趣的灵魂万里挑一
  19. sdkman软件开发工具包管理器
  20. 06、江苏专转本(专业课笔记)第六章、信息系统与数据库

热门文章

  1. python boolean list_python(三)数据类型: int bool str list tuple dict
  2. js中单击和双击事件的区分
  3. jprofiler远程监控JVM( spring boot项目)
  4. idea下编译mybatis源码
  5. gdc矫正_GDC 2014总结
  6. 个人网站模板颜色搭配技巧
  7. 从高被引文献中思考机器学习的发展
  8. Elasticsearch中索引和文档的管理
  9. 全球十大自行车品牌排行榜MARMOT土拨鼠谈儿童滑步车
  10. 从谭浩强《C程序设计》上摘录的ASCII码表(常用字符与ASCII代码对照表)