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实现
678 0
|
JavaScript Java API
如何接入阿里云短信服务 (完整指南)
如何接入阿里云短信服务 (完整指南)
55398 1
|
缓存 监控 Java
如何在 Java 8 中创建和使用线程池?
【7月更文挑战第8天】
812 9
如何在 Java 8 中创建和使用线程池?
|
Java 微服务
SpringBoot整合SMS短信服务
本文介绍了如何在SpringBoot项目中整合阿里云SMS短信服务,包括添加依赖、配置文件、配置类、服务层接口和实现类,以及控制器层的实现,用于发送短信验证码。
SpringBoot整合SMS短信服务
|
算法 Java 关系型数据库
纯干货:SpringCloud分布式ID解决方案
前言   分布式系统中,分布式ID是个必须解决的问题点;   雪花算法是个好方式,不过不能直接使用,因为如果直接使用的话,需要配置每个实例workerId和datacenterId,在微服务中,实例一般动态配置,直接指定具体实例的这两个参数是不现实的;   所以,一般采用雪花算法的变种,主要是将这两个参数由手动配置改为动态生成,美团leaf、百度uid-generator都属于改良的变种算法,可以适当采用;
纯干货:SpringCloud分布式ID解决方案
|
Cloud Native 架构师 测试技术
如何画好一张架构图?(内含知识图谱)
架构图是什么?为什么要画架构图?如何画好架构图?有哪些方法?本文从架构的定义说起,分享了阿里文娱高级技术专家箫逸关于画架构图多年的经验总结,并对抽象这一概念进行了深入地讨论。内容较长,同学们可收藏起来细细阅读。
15414 0
如何画好一张架构图?(内含知识图谱)
|
开发工具 git
【IntelliJ IDEA】如何在IntelliJ IDEA中使用Git .ignore插件忽略不必要提交的文件
【IntelliJ IDEA】如何在IntelliJ IDEA中使用Git .ignore插件忽略不必要提交的文件
821 0
|
jenkins Devops Java
jenkins快速入门,自动构建一个hello world项目(devops,ci/cd)
jenkins快速入门,自动构建一个hello world项目(devops,ci/cd)
jenkins快速入门,自动构建一个hello world项目(devops,ci/cd)
|
Web App开发 开发框架 Dart
Flutter 3.0 正式发布:稳定支持 6 大平台,字节跳动是主要用户
5 月 12 日,Flutter 3.0 在 Google I/O 开发者大会正式亮相,随着 3.0 版本的发布,Flutter 开发框架终于可以支持六大平台,实现了其跨平台稳定运行的愿景。
1482 0
Flutter 3.0 正式发布:稳定支持 6 大平台,字节跳动是主要用户