了解 OpenResty XRay 是如何做到帮助企业定位应用程序存在的问题以及优化其效率的。

了解更多 LIVE DEMO

下面我将演示如何使用 OpenResty 实现一个“hello world”的 HTTP 接口。

screenshot 1

首先,我们要确保我们使用的是 OpenResty 的 nginx。

export PATH=/usr/local/openresty/nginx/sbin:$PATH
which nginx

screenshot 2

一般都是这个路径。

然后我们进入 home 目录。

cd ~/

在我们的例子中,创建并切换到一个名为 hello 的目录。

mkdir hello
cd hello

screenshot 5

为 OpenResty 应用程序创建模板子目录。

mkdir logs conf
ls

screenshot 6

然后让我们在“conf”子目录下创建一个简单的 nginx.conf 文件。

vim conf/nginx.conf
  1. 为了简单起见,让我们启用单个 nginx 工作进程。
  2. 我们最多启用 1024 个每工作进程的连接。
  3. 而这里我们配置一个 HTTP 服务器。
  4. 启用 reuseport 后监听 8080 端口。
  5. 最后我们给这个服务器添加一个根位置。
  6. 我们将默认的 MIME 类型设置为 text/plain。
  7. 我们嵌入一些 Lua 代码来输出一个响应体是“Hello World”。
worker_processes 1;

events {
    worker_connections 1024;
}

http {
    server {
        listen 8080 reuseport;

        location / {
            default_type text/plain;
            content_by_lua_block {
                ngx.say("Hello World")
            }
        }
    }
}

现在让我们用 -t 选项来测试配置是否正确。

nginx -p $PWD/ -t

screenshot 17

看起来很不错!

现在让我们真正启动这个 OpenResty 应用。

nginx -p $PWD/

screenshot 19

并检查 nginx 进程是否在运行。

ps aux|grep nginx|grep -v /tmp/

screenshot 20

很好啊! 它们都起来了。一个 master 进程,一个工作进程。

现在我们可以使用 curl 命令行工具向这个服务器发送一个测试的 HTTP 请求。

curl 'http://127.0.0.1:8080/'

我们确实得到了响应体 你好,世界

screenshot 23

我们也可以尝试在网络浏览器中访问 / URI。

screenshot 25

我们可以看到,它也按照预期显示“Hello World”。 如果你喜欢这个教程,请订阅这个博客网站和我们的 YouTube 频道B 站频道。谢谢!

关于本文和关联视频

本文和相关联的视频都是完全由我们的 OpenResty Showman 产品从一个简单的剧本文件自动生成的。

关于作者

章亦春是开源 OpenResty® 项目创始人兼 OpenResty Inc. 公司 CEO 和创始人。

章亦春(Github ID: agentzh),生于中国江苏,现定居美国湾区。他是中国早期开源技术和文化的倡导者和领军人物,曾供职于多家国际知名的高科技企业,如 Cloudflare、雅虎、阿里巴巴, 是 “边缘计算“、”动态追踪 “和 “机器编程 “的先驱,拥有超过 22 年的编程及 16 年的开源经验。作为拥有超过 4000 万全球域名用户的开源项目的领导者。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。在 OpenResty 以外,章亦春为多个开源项目贡献了累计超过百万行代码,其中包括,Linux 内核、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,并编写过 60 多个开源软件库。

关注我们

如果您喜欢本文,欢迎关注我们 OpenResty Inc. 公司的博客网站 。也欢迎扫码关注我们的微信公众号:

我们的微信公众号

翻译

我们提供了英文版原文和中译版(本文) 。我们也欢迎读者提供其他语言的翻译版本,只要是全文翻译不带省略,我们都将会考虑采用,非常感谢!