xxx.nginx转发+OpenResty(nginx升级版)_web服务器+lua
看上图,鼠标右键-在新标签中打开图片食用
内容分为三部分:
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相关推荐
- nginx 根据IP转发到指定的后端服务器
需求: 当用户请求IP为192.168.2.11时把后端请求转发到192.168.2.11服务器的8080端口 当用户请求IP为192.168.2.12时把后端请求转发到192.168.2.12服务器 ...
- ajax nginx 转发 sessionid_百度、京东、网易、腾讯、淘宝等大厂都在用的Web服务器Nginx详解
Nginx背景和概述 Nginx(发音同 engine x)是一款基于异步框架的轻量级/高性能由C语言的Web 服务器/反向代理服务器/缓存服务器/电子邮件(IMAP/POP3)代理服务器,并在一个B ...
- nginx转发ArcServer地图服务器出现的http://localhost:6080/arcgis/rest/info?f=json跨域问题
QQ交流群:607330463 GIS开发技术最强交流群 未经允许 禁止转载 可以参考 Access to XMLHttpRequest at 'http://localhost:6080/ar ...
- Centos7 安装Nginx(OpenResty)、Windows安装Nginx
Nginx是一款高性能的代理.转发服务器,目前已经支持4层和7层代理. OpenResty则是基于Nginx增加Lua的功能,可以方便的实现缓存功能. 1.Nginx不同安装形式分析 安装形式 安装难 ...
- nginx 转发慢_学习Nginx的正确姿势,多图详解助你更上一层楼!(干货收藏篇)...
本文主要帮助大家熟悉 Nginx 有哪些应用场景.Nginx 特点和架构模型以及相关流程.Nginx 定制化开发的几种模块分类. 本文将围绕如下几个部分进行讲解: Nginx 简介及特点 Nginx ...
- nginx简介--理解nginx配置/模块/openresty
1. nginx功能和定位 Nginx最核心的功能是Web服务器和反向代理服务器. Web服务器完成对HTTP请求协议的解析和以HTTP协议格式响应请求.缓存.日志处理这些基本Web服务器功能: 反向 ...
- nginx转发websocket配置
背景:启动socket后,一般可以用ip进行直连,不过这样会引发很多问题 解决方案:采用 域名+nginx转发 nginx配置如下: upstream swoole_http_server {serv ...
- 内网穿透+nginx转发
内网穿透加nginx转发实现本地服务远程访问 前言 一.关于内网穿透 介绍 内网穿透常用工具 二.安装nginx(docker方式) 拉取镜像并启动 创建文件挂载目录(老规矩了) 重新创建并启动ngi ...
- nginx+php+kodexplorer--内网私云服务器搭建
2019独角兽企业重金招聘Python工程师标准>>> nginx整合php 前段时间,在内网搭建了一个基于LNMP的个人cms站点,第一次接触了nginx,最开始了解nginx只知 ...
最新文章
- 面试题:问题:Java中,char型变量中能不能存储一个中文汉字,为什么?
- 计算机语言翻译的情诗,聂鲁达情诗翻译
- 动态代理(JDK的动态代理)
- Metasploit Framework 简介与使用
- ckeditor的使用实例
- Windows下查看端口被占用问题和解决办法
- redis 集群讲解
- jzoj1402-偷懒的小X【贪心】
- java中如何传递参数给控制器_如何使用ui-router中的ui-sref将参数传递给控制器
- 屏幕监控中捕获鼠标位置信息
- lnmp改php版本,lnmp安装多版本PHP共存的方法详解
- Sinevibes Plugins Bundle for Mac(Sinevibes合成器合集)
- 蛮牛精选七款Unity插件
- 决策树应用实例③——银行借贷模型
- 【gradle exclude冲突依赖】
- 基于OpenCV的在图片上画刻度尺坐标、分划版、侧微尺、十字双边带刻度
- fullpage插件的使用
- 叮咚智能音箱使用体验:好看的皮囊千篇一律,有趣的灵魂万里挑一
- sdkman软件开发工具包管理器
- 06、江苏专转本(专业课笔记)第六章、信息系统与数据库