2 dongdhui dongdhui 于 2017.01.16 20:15 提问

nginx helloworld 404错误

nginx 编写helloworld模块,报错,404 Not Found
配置文件:
location /test {
mytest;
}

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"
CORE_LIBS="$CORE_LIBS -lpcre"

c码如下:
1 #include

2 #include

3 #include

4

5 static ngx_int_t ngx_http_mytest_handler(ngx_http_request_t *r);

6 static char *

7 ngx_http_mytest(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);

8 //处理配置项

9 static ngx_command_t ngx_http_mytest_commands[] = {

10 {

11 ngx_string("mytest"),

13 ngx_http_mytest,

14 NGX_HTTP_LOC_CONF_OFFSET,

15 0,

16 NULL

17 },

18 ngx_null_command

19 };

20 //模块上下文

21 static ngx_http_module_t ngx_http_mytest_module_ctx = {

22 NULL,

23 NULL,

24 NULL,

25 NULL,

26 NULL,

27 NULL,

28 NULL,

29 NULL

30 };

31 //新模块定义

32 ngx_module_t ngx_http_mytest_module = {

33 NGX_MODULE_V1,

34 &ngx_http_mytest_module_ctx,

35 ngx_http_mytest_commands,

36 NGX_HTTP_MODULE,

37 NULL,

38 NULL,

39 NULL,

40 NULL,

41 NULL,

42 NULL,

43 NULL,

44 NGX_MODULE_V1_PADDING

45 };

46

47 //配置项对应的回调函数

48 static char *

49 ngx_http_mytest(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)

50 {

51 ngx_http_core_loc_conf_t *clcf;

52 clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);

53 clcf->handler = ngx_http_mytest_handler;

54 return NGX_CONF_OK;

55 }

56

57 //实际完成处理的回调函数

58 static ngx_int_t ngx_http_mytest_handler(ngx_http_request_t *r)

59 {

60 if (!(r->method & (NGX_HTTP_GET | NGX_HTTP_HEAD))) {

61 return NGX_HTTP_NOT_ALLOWED;

62 }

63

64 ngx_int_t rc = ngx_http_discard_request_body(r);

65 if (rc != NGX_OK) {

66 return rc;

67 }

68

69 ngx_str_t type = ngx_string("text/plain");

70 ngx_str_t response = ngx_string("Hello World");

71 r->headers_out.status = NGX_HTTP_OK;

72 r->headers_out.content_length_n = response.len;

73 r->headers_out.content_type = type;

74

75 rc = ngx_http_send_header(r);

76 if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {

77 return rc;

78 }

79

80 ngx_buf_t *b;

81 b = ngx_create_temp_buf(r->pool, response.len);

82 if (b == NULL) {

83 return NGX_HTTP_INTERNAL_SERVER_ERROR;

84 }

85

86 ngx_memcpy(b->pos, response.data, response.len);

87 b->last = b->pos + response.len;

88 b->last_buf = 1;

89

90 ngx_chain_t out;

91 out.buf = b;

92 out.next = NULL;

93

94 return ngx_http_output_filter(r, &out);

95 }

执行结果:
[root@localhost objs]# ps -ef | grep nginx
root 29043 1 0 19:50 ? 00:00:00 nginx: master process ./nginx
nobody 29044 29043 0 19:50 ? 00:00:00 nginx: worker process
root 29188 18558 0 19:58 pts/0 00:00:00 grep --color=auto nginx
[root@localhost objs]# curl http://localhost/test

404 Not Found

404 Not Found



nginx/1.10.2

1个回答

devmiao
devmiao   Ds   Rxr 2017.01.30 02:03
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Nginx上的第一个HelloWorld
前言(废话): 刚刚看完 深入理解nginx模块开发与架构解析的http处理模块,想想先写一个http处理模块的hellowrold,也算是入门了吧。 安装完nginx就可以搞了,安装配置请参考Nginx安装部署。 第一步:编写config文件 在nginx源代码根目录下创建文件夹ngx_http_hello_world_module文件夹,进入该目录,创建文件配置文件config
SpringMVC Helloworld注解和404问题
最近学习的SpringMVC刚开始用普通配置,一切正常。复制项目变为注解形式的时候一直报404错误,非常头疼,确定自己所有配置都是正确之后还是404,于是新建项目,一切都变正常,可能是复制项目出现了问题,可是修改了项目的根目录还是404的,具体问题不得知,遇到404的朋友们也要注意。以下是Helloworld的示例: 项目目录结构: 记得导入相应的jar包,切记不要忘了commmon-
Nginx部署Thinkphp 404错误PathInfo的解决方案
之前没有在意一直都是在Apache下部署,换成Nginx折腾了半天。终于搞定。
nginx purge更新缓存404错误
百思不得其解,网上遇到nginx清理缓存出现404的用户不在少数,网上一共有如下3中情况: 1、  ngx_cache_purge版本与nginx版本不匹配 换了一个版本的purge,发现依旧无效 2、  nginx启动方法不对 很多人安装完nginx,仅仅reload一次nginx,实际上应该stop之后在start。这不是我的解决方法。 3、  purge未编译到nginx中 肯定
Nginx的第一个模块-Hello World
麻雀虽小,五脏俱全,小小的Hello World盛行于程序世界,就在于其代码虽短,但要真正运行起来,需要我们略通基本语法,稍懂编译运行环境,知晓操作过程,最后,还有一颗持之以恒,不怕折腾的心。前一阵子跑通了Nginx的Hello World程序,今天重温了一遍就顺便写篇博客,记录下来,好记性不如烂笔头,方便以后查阅。
Intellij IDEA + Tomcat 出现 404错误的解决办法
错误如下 图:我的框架是spring+spring MVC+ mybatis。。。。Modules只添加Web和Spring就行,文件自动检测到,srping的xml文件路径是对的,但是Web里面的文件路径是错的,记得更改,快捷键F4调出Project Structure.检查下图:tomcat怎么部署就不详细说,网上搜索很多...
struts2 helloworld 的404错误
jar包 jdk等,反正能配置的都配置好了,为啥还是404错误呢 这里应该有一个版本的问题的,struts.xml文件和jar包的版本冲突了。 如何解决呢? 下载一个可以用的demo就可以了,作为一个模板。
LNMP设置Nginx 404错误页教程[图解]
LNMP设置Nginx 404错误页教程:   伦理片 http://www.dotdy.com/   1、vi /usr/local/nginx/conf/nginx.conf 编辑Nginx配置文件,在http 区段添加下面代码:  fastcgi_intercept_errors on;  LNMP设置Nginx 404错误页教程[图解]      2、编辑网站配置文
nginx purge_cache出现404的问题
        #用于清除缓存的url设置        #假设一个URL为http://www.123.com/test.gif,那么就可以通过访问http://www.123.com/purge/test.gif清除该URL的缓存。location ~ /purge(/.*) { allow all; proxy_cache_purge cache_one $host$1$is_args$ar...
nginx 编写简单HTTP模块 hello world
1. 编写HTTP模块1.1 目标 编写一个简单的显示hello world 信息的HTTP 模块 1.2 几个重要组成部分1.2.1 ngx_command_t 数组 也就是说, 对于我们在nginx.conf 中编写的配置项 mytest 来说, nginx 首先会遍历所有的模块(modules),而对于每个模块, 会遍历他所对应的ngx_command_t 数组, 试图找到关于我们的配置项m