diy 你的nginx-OpenResty

简介: diy 你的nginx-OpenResty

OpenResty

OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

安装

openresty依赖库为:perl 5.6.1+, libreadline, libpcre, libssl

centos:

yum install readline-devel pcre-devel openssl-devel

ubuntu:

apt-get install libreadline-dev libpcre3-dev libssl-dev perl

编译安装:

下载地址:http://openresty.org/cn/download.html

curl -O https://openresty.org/download/openresty-1.17.8.2.tar.gz
tar -zvxf openresty-1.17.8.2.tar.gz 
cd openresty-1.17.8.2
make 
make install

将默认安装到/usr/local/openresty 目录中

使用

创建一个新目录 openrestyTest,以及创建logs和conf目录:

\[tioncico@tioncico-server homeTest\]$ mkdir openrestyTest
\[tioncico@tioncico-server homeTest\]$ cd openrestyTest/
\[tioncico@tioncico-server openrestyTest\]$ mkdir ./logs ./conf
\[tioncico@tioncico-server openrestyTest\]$

logs将存放openresty的日志,conf存放配置文件

在conf中新建一个nginx.conf文件:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 9000;
        location / {
            default_type text/html;
            content\_by\_lua '
                ngx.say("<p>Hello, World!</p>")
            ';
        }
    }
}

可以看到,配置跟nginx的一致,不过在location块中多了个content_by_lua块,通过这个可以执行lua脚本

启动openresty:

/usr/local/openresty/nginx/sbin/nginx -p ./ -c ./conf/nginx.conf

-p后面为我们的项目目录,也就是 openrestyTest目录中,-c为配置文件路径

访问 ip:9000即可看到输出:

image.png

停止openresty

/usr/local/openresty/nginx/sbin/nginx -p ./ -s stop

重启 openresty

/usr/local/openresty/nginx/sbin/nginx -p ./ -s reload

注意,启动和停止都必须指定-p,否则守护进程找不到pid文件

通过openresty配置项目

nginx.conf写法:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 9000;
        server_name xxx.easyswoole.cn;
        index index.php index.html index.htm default.php default.htm default.html;
        root /www/wwwroot/homeTest/openrestyTest;
        ################################### 宝塔 php-fpm支持  #################################
        location ~ \[^/\]\\.php(/|$)
        {
            try_files $uri =404;
            fastcgi_pass  unix:/tmp/php-cgi-72.sock;
            fastcgi_index index.php;
            set $real\_script\_name $fastcgi\_script\_name;
            if ($fastcgi\_script\_name ~ "^(.+?\\.php)(/.+)$") {
                  set $real\_script\_name $1;
                  set $path_info $2;
             }
            fastcgi\_param  SCRIPT\_FILENAME    $document\_root$fastcgi\_script_name;
            fastcgi\_param  QUERY\_STRING       $query_string;
            fastcgi\_param  REQUEST\_METHOD     $request_method;
            fastcgi\_param  CONTENT\_TYPE       $content_type;
            fastcgi\_param  CONTENT\_LENGTH     $content_length;
            fastcgi\_param  SCRIPT\_NAME        $fastcgi\_script\_name;
            fastcgi\_param  REQUEST\_URI        $request_uri;
            fastcgi\_param  DOCUMENT\_URI       $document_uri;
            fastcgi\_param  DOCUMENT\_ROOT      $document_root;
            fastcgi\_param  SERVER\_PROTOCOL    $server_protocol;
            fastcgi\_param  REQUEST\_SCHEME     $scheme;
            fastcgi\_param  HTTPS              $https if\_not_empty;
            fastcgi\_param  GATEWAY\_INTERFACE  CGI/1.1;
            fastcgi\_param  SERVER\_SOFTWARE    nginx/$nginx_version;
            fastcgi\_param  REMOTE\_ADDR        $remote_addr;
            fastcgi\_param  REMOTE\_PORT        $remote_port;
            fastcgi\_param  SERVER\_ADDR        $server_addr;
            fastcgi\_param  SERVER\_PORT        $server_port;
            fastcgi\_param  SERVER\_NAME        $server_name;
            # PHP only, required if PHP was built with --enable-force-cgi-redirect
            fastcgi\_param  REDIRECT\_STATUS    200;
            fastcgi\_param SCRIPT\_FILENAME $document\_root$real\_script_name;
            fastcgi\_param SCRIPT\_NAME $real\_script\_name;
            fastcgi\_param PATH\_INFO $path_info;
        }
        ################ 上面都是宝塔fpm支持的写法 ###################################
        ## 这个是额外的openresty定义写法
        location /openrestyTest {
            default_type text/html;
            content\_by\_lua '
                ngx.say("<p>Hello, World!</p>")
            ';
        }
    }
}

在openrestyTest目录新增index.php:

<?php
echo "666";

重启之后,继续访问:

\[tioncico@tioncico-server openrestyTest\]$ curl http://xxx.easyswoole.cn:9000/openrestyTest
<p>Hello, World!</p>
\[tioncico@tioncico-server openrestyTest\]$ curl http://xxx.easyswoole.cn:9000/
666\[tioncico@tioncico-server openrestyTest\]$
目录
相关文章
|
编解码 前端开发 JavaScript
摄像头web网页播放功能: ffmeg和nginx实现
摄像头web网页播放功能: ffmeg和nginx实现
774 0
|
Java Nacos
在MSE微服务引擎中,可以使用Java代码进行Nacos下线操作
在MSE微服务引擎中,可以使用Java代码进行Nacos下线操作
435 3
|
JavaScript Java API
如何接入阿里云短信服务 (完整指南)
如何接入阿里云短信服务 (完整指南)
56416 1
|
Java 微服务
SpringBoot整合SMS短信服务
本文介绍了如何在SpringBoot项目中整合阿里云SMS短信服务,包括添加依赖、配置文件、配置类、服务层接口和实现类,以及控制器层的实现,用于发送短信验证码。
SpringBoot整合SMS短信服务
|
存储 缓存 Java
Apollo Config的简单介绍
Apollo Config是携程开源的分布式配置中心,在大规模、高并发、多环境下管理和推送配置非常方便。本文将从基本概念、应用场景、使用方式等方面介绍Apollo Config。
511 0
|
SQL 分布式计算 监控
Flume实时读取本地/目录文件到HDFS
Flume实时读取本地/目录文件到HDFS
496 7
|
存储 运维 负载均衡
Heartbeat+Nginx实现高可用集群
通过Heartbeat与Nginx的结合,您可以建立一个高可用性的负载均衡集群,确保在服务器故障时仍能提供无中断的服务。这种配置需要仔细的计划和测试,以确保系统在故障情况下能够正确运行。
219 2
|
机器学习/深度学习 人工智能 算法
【C 言专栏】C 语言与人工智能的结合
【5月更文挑战第6天】C语言在人工智能领域发挥关键作用,以其高效、灵活和可移植性支持算法实现和应用开发。尽管学习难度大、开发效率低,但通过与Python等语言结合及工具优化,C语言能应对挑战并适应AI发展。随着技术进步,C语言与AI的融合将更紧密,驱动创新应用和科技进步。
869 0
【C 言专栏】C 语言与人工智能的结合
|
Cloud Native 架构师 测试技术
如何画好一张架构图?(内含知识图谱)
架构图是什么?为什么要画架构图?如何画好架构图?有哪些方法?本文从架构的定义说起,分享了阿里文娱高级技术专家箫逸关于画架构图多年的经验总结,并对抽象这一概念进行了深入地讨论。内容较长,同学们可收藏起来细细阅读。
15631 0
如何画好一张架构图?(内含知识图谱)
|
存储 算法 C语言
十字链表法,十字链表压缩存储稀疏矩阵详解
十字链表法,十字链表压缩存储稀疏矩阵详解
十字链表法,十字链表压缩存储稀疏矩阵详解