当前位置:首页 > 教程 > 正文内容

nginx调用c库(nginx如何调用php)

2023-04-21 16:50:04教程1

nginx如何调用php

举个例子:

1.请解释一下什么是 Nginx ?

Nginx ,是一个 Web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。目前使用的最多的 Web 服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用。Nginx 的主要功能如下:作为 http server FastCGI:Nginx 本身不支持 PHP 等语言,但是它可以通过 FastCGI 来将请求扔给某些语言或框架处理。

nginx调用脚本

使用tengine+lua+gm来实现对图片的实时裁剪与水印添加,简单的说就是通过nginx调用lua脚本,调用gm命令对图片进行处理。

nginx c module

每一项的具体含义如下所示:

attacklog = "on" --是否开启攻击日志记录(on 代表开启,off 代表关闭。下同)

logdir = "/www/wwwlogs/waf/" --攻击日志文件存放目录(一般无需修改)

UrlDeny="on" --是否开启恶意 url 拦截

Redirect="on" --拦截后是否重定向

CookieMatch="off" --是否开启恶意 Cookie 拦截

postMatch="off" --是否开启 POST 攻击拦截

whiteModule="on" --是否开启 url 白名单

black_fileExt={"php","jsp"} --文件后缀名上传黑名单,如有多个则用英文逗号分隔。如:{"后缀名1","后缀名2","后缀名3"……}

ipWhitelist={"1.0.0.1"} --白名单 IP,如有多个则用英文逗号分隔。

如:{"1.0.0.1","1.0.0.2","1.0.0.3"……} 下同

ipBlocklist={"1.0.0.1"} --黑名单 IP

CCDeny="off" --是否开启 CC 攻击拦截

CCrate="300/60" --CC 攻击拦截阈值,单位为秒。

"300/60" 代表 60 秒内如果同一个 IP 访问了 300 次则拉黑

配置文件中,RulePath 项对应的文件夹里存放的是具体的拦截规则。

打开这个文件夹,可以看到里面有一些无后缀名的规则文件

其中每一个文件的作用如下:

args --GET 参数拦截规则

blockip --无作用

cookie --Cookie 拦截规则

denycc --无作用

post --POST 参数拦截规则

returnhtml --被拦截后的提示页面(HTML)

url --url 拦截规则

user-agent --UA 拦截规则

whiteip --无作用

whiteurl --白名单网址

nginx-c

如果想要了解c语言的开源库的话,其实可以直接从github上搜一下就可以找到很多,这里介绍个地址

https://github.com/kozross/awesome-c

里面的分类很全,一些常用的c语言库都收录了。

像是redis,mysql,nginx,这种大名鼎鼎c程序我就不说了,我这里简单介绍下,我曾经用过的几个C跨平台开源库吧

1.libuv

http://libuv.org

这个是异步跨平台的io库,与之类似的还有libevent,libuv作为nodejs的底层实现库,无论在使用方便程度上,还是性能和跨平台集成方面都做的非常不错,我平常做一些跨平台的网络通讯什么的都会使用这个库,在android,ios,windows,linux中可以比较容易的编译和运行。

2.mongoose

https://github.com/cesanta/mongoose

这是个非常强大的跨平台c网络通讯库,只需要一个.h和一个.c文件就可以直接集成到你的项目中,使用起来非常方便,特别是你开发的程序需要对外提供http的webapi,或者做一个简单的http文件服务器提供静态web浏览,都能简单的几行代码实现。它的缺点就是性能一般,通讯层是用select实现,能够处理的连接数有限,但是如果仅仅是用在物联网设备上,或者只是本机或局域网内几台机器之间进行通讯,那完全是可行的。同样,代码可以在android,ios,windows,linux上编译运行通过。

3.duktape

https://duktape.org/

这是个嵌入式的跨平台js引擎,也是只需要一个.c和一个.h文件就可以集成到你的项目中。对js标准的支持也非常不错,完整的支持ES5和部分ES6。我就用mongoose和duktape组合开发过一个简单的web服务框架,一直比较稳定的运行在一个商业项目中。另外由于duktape也可以很方便的集成到android和ios项目中,如果业务逻辑很多都用js写的话,可以非常方便的实现代码的热更新。

4.libcurl

https://curl.haxx.se/libcurl/

这个我确定应该大多数c开发者都熟悉,涉及http客户端的请求调用,基本上都离不开这个库。

5.mbedtls

https://tls.mbed.org/

一个嵌入式的tls库,可以和libcurl或者mongoose集成在一起提供https的支持

6.sqlite

https://sqlite.org

客户端的嵌入式数据库,android和ios客户端开发可能再熟悉不过了,如果想在客户端使用数据库,确实是不二的选择。

nginx c

tomcat默认端口是8080

nginx默认端口是80

在nginx的配置文件中设置api的请求转发端口为tomcat的8080就可以正常使用了

浏览器访问nginx的80端口,可以正常打卡网页

nginx的include

以vue框架为例,在nginx.conf中监听80或443端口的server的路由配置设置为:

location ^~ /api { # url如/api/v1.0/user/info等,通过uwsgi转发到django后端项目中处理

include /etc/nginx/uwsgi_params;

uwsgi_pass 127.0.0.1:8077;

include /etc/nginx/mime.types;

}

location ^~ /static { # 后端的资源文件夹为static,前端请求后端项目包内的静态文件

root /root/backend_end_project/static/;

}

location ^~ /admin { # django的后台管理页面通过uwsgi转交给django处理

include /etc/nginx/uwsgi_params;

uwsgi_pass 127.0.0.1:8077;

include /etc/nginx/mime.types;

}

location ^~ /assets { # 前端的资源文件夹为assets,前端请求前端项目包内的静态文件

root /root/front_end_project/dist;

}

location / { # 表示其它路径都交给前端项目根目录下的index.html处理

root /root/front_end_project;

try_files $uri /index.html;

}

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98789985.html