Nginx学习之一-第一个程序Hello World
2023-09-27 14:29:31 时间
虚拟机Ubuntu中:
win7中chrome浏览器:
一、config文件编写 Nginx提供了一种简单的方式将第三方的模块编译到Nginx中。首先把源代码文件全部放到一个目录下,同时在该目录中编写一个文件用于通知Nginx如何编译本模块,这个文件名必须为config。 然后,在configure脚本执行时加入参数--add-module=PATH(新模块源代码以及config文件存放目录),就可以在执行政策编译安装流程时完成Nginx编译工作。 config文件格式 config文件其实是一个可执行的Shell脚本,如果只想开发一个HTTP模块,需要定义三个变量: (1)ngx_adon_name。 仅在configure执行时使用,一般设置为模块名称。 (2)HTTP_MODULES。 保存所有的HTTP模块名称。每个模块间由空格相连。在重新设置这个变量时,不要直接覆盖,因此要如下设置: "$HTTP_MODULES ngx_http_mytest_module" (3)NGX_ADDON_SRCS。 用于指定新模块的源代码,多个待编译的源代码之间可以用空格相连。 注意,在设置这个变量时可以使用$ngx_addon_dir变量,它等价于configure执行时--add-module=PATH的PATH参数。 因此本例中的config文件内容如下:
ngx_addon_name=ngx_http_mytest_module HTTP_MODULES="$HTTP_MODULES ngx_http_mytest_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_mytest_module.c"
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LMT_CONF|NGX_CONF_NOARGS, ngx_http_mytest, NGX_HTTP_LOC_CONF_OFFSET, 0, NULL }, ngx_null_command //模块上下文 static ngx_http_module_t ngx_http_mytest_module_ctx = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL //新模块定义 ngx_module_t ngx_http_mytest_module = { NGX_MODULE_V1, ngx_http_mytest_module_ctx, ngx_http_mytest_commands, NGX_HTTP_MODULE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NGX_MODULE_V1_PADDING //配置项对应的回调函数 static char * ngx_http_mytest(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ngx_http_core_loc_conf_t *clcf; clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module); clcf- handler = ngx_http_mytest_handler; return NGX_CONF_OK; //实际完成处理的回调函数 static ngx_int_t ngx_http_mytest_handler(ngx_http_request_t *r) if (!(r- method (NGX_HTTP_GET | NGX_HTTP_HEAD))) { return NGX_HTTP_NOT_ALLOWED; } ngx_int_t rc = ngx_http_discard_request_body(r); if (rc != NGX_OK) { return rc; } ngx_str_t type = ngx_string("text/plain"); ngx_str_t response = ngx_string("Hello World"); r- headers_out.status = NGX_HTTP_OK; r- headers_out.content_length_n = response.len; r- headers_out.content_type = type; rc = ngx_http_send_header(r); if (rc == NGX_ERROR || rc NGX_OK || r- header_only) { return rc; } ngx_buf_t *b; b = ngx_create_temp_buf(r- pool, response.len); if (b == NULL) { return NGX_HTTP_INTERNAL_SERVER_ERROR; } ngx_memcpy(b- pos, response.data, response.len); b- last = b- pos + response.len; b- last_buf = 1; ngx_chain_t out; out.buf = b; out.next = NULL; return ngx_http_output_filter(r, out);
./configure --prefix=/usr/local/nginx(指定安装部署后的根目录) --add-module=/home/nginx(新模块存放目录) make sudo make install
Nginx代理浏览器可实时查看程序日志 我们经常需要在页面上实时查看nginx的日志输出,并且能在页面上显示,那么如何通过Nginx实现浏览器可实时查看访问日志呢?
7.3【微信小程序全栈开发课程】小程序上线--nginx安装、SSL证书安装 1、安装nginx nginx是一个强大的http服务器,作用是解析链接信息,告诉服务器客户端需要做什么 比如nginx收到了链接信息http://localhost:8000/hello/index.html,就告诉服务器客户端的要求–获取目录hello/index.html文件。服务器读取文件内容发送给浏览器
filebeat收集json格式的nginx程序日志(二) filebeat收集json格式的nginx日志 1.为什么要收集json格式的日志类型 由于nginx普通日志收集过来的日志内容都是存在一个字段中的值,我们想单独对日志中的某一项进行查询统计,比如我只想查看某个IP请求了我那些页面,一共访问了多少次,在普通的日志中是无法过滤的,不是很满意
Nginx反向代理web程序解决谷歌跨越问题配置详解 路由转发:源ip和目标ip都不会改变只改变mac地址,只能在私网使用 客户端10.0.0.1要访问web服务器172.16.1.7,也就是客户端直接通过路由去访问web服务器,首先请求的源ip是10.0.0.1目标ip是172.16.1.7,源mac是pc目标mac是web,当源ip到达路由器时查询路由表,在转发到web服务器。这时源ip和目标ip不会改变,但是源mac地址会换成路由器的mac地址,最终访问到web服务器,web服务器记录的访问ip依旧是客户端的源ip
相关文章
- 基于微信小程序的移动学习平台的设计与实现_kaic
- 学习笔记 | 演化简单的程序用于玩 Atari 游戏
- 【机器学习】ICA特征提取
- Andrew Ng机器学习课程11之贝叶斯统计和正则化
- 人工智能-深度学习:Tensorflow2使用技巧【tpo_k、网格采样点生成函数meshgrid、可视化工具tensorBoard】
- 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序
- 微信小程序英语学习平台+后台管理系统
- ***微信小程序学习文档和资料归档收集
- 【人工智能】深度学习:扩散模型(Diffusion Model) [1]
- Golang gRPC学习(03): grpc官方示例程序route_guide简析
- 多线程编程学习十(线程池原理).
- 10个Python练手小程序,学习python的很好的资料
- 多线程学习笔记
- PyQt(Python+Qt)学习随笔:使用QtWidgets.qApp实现在程序中随时访问应用的方法
- 【unity3D学习记录】C#四种调用其他脚本方法
- SpringMVC学习--入门程序
- 微信小程序学习笔记(入门篇)
- docker完整深度学习环境搭建
- Oracle数据库深入学习
- vue1.0学习总结
- 【Ajax进阶】跨域和JSONP的学习
- 微信小程序学习用demo:大写计算器;数字转换为大写
- 微信小程序学习用demo:我厨,tab切换,界面设计(适用1230
- 微信小程序学习用demo推荐:列表项左滑删除效果
- 微信小程序学习用demo推荐:微信涂鸦:canvas学习
- 微信小程序学习用demo推荐:读书;小清新
- Redis GEO地理位置学习
- ROS学习笔记三:编写第一个ROS节点程序
- 我的Java开发学习之旅------>工具类:将播放器的进度值转换成相应的时间格式
- python学习之美多商城(三):用户部分--用户模型类(Django自带)、自定义用户模型、
- golang学习六:面向对象:继承,对象方法,接口