ngx_php7

嵌入 php7 脚本的 nginx 模块
授权协议 BSD
开发语言 C/C++ PHP
所属分类 服务器软件、 Nginx扩展模块
软件类型 开源软件
地区 国产
投 递 者 殷安顺
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

ngx_php7 是一个嵌入 php7 脚本的 nginx 模块。

环境

  • Linux only
  • PHP-7.0.* ~ PHP-7.4.*
  • nginx-1.4.7 ~ nginx-1.17.8

安装

$ wget 'http://php.net/distributions/php-7.3.10.tar.gz'
$ tar xf php-7.3.10.tar.gz
$ cd php-7.3.10

$ ./configure --prefix=/path/to/php --enable-embed
$ make && make install

$ git clone https://github.com/rryqszq4/ngx_php7.git

$ wget 'http://nginx.org/download/nginx-1.12.2.tar.gz'
$ tar -zxvf nginx-1.12.2.tar.gz
$ cd nginx-1.12.2

$ export PHP_CONFIG=/path/to/php/bin/php-config
$ export PHP_BIN=/path/to/php/bin
$ export PHP_INC=/path/to/php/include/php
$ export PHP_LIB=/path/to/php/lib

$ ./configure --user=www --group=www \
$             --prefix=/path/to/nginx \
$             --with-ld-opt="-Wl,-rpath,$PHP_LIB" \
$             --add-module=/path/to/ngx_php7/third_party/ngx_devel_kit \
$             --add-module=/path/to/ngx_php7
$ make && make install

摘要

worker_processes  auto;

events {
    worker_connections  102400;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;
    
    client_max_body_size 64k;   
    client_body_buffer_size 64k;

    php_ini_path /usr/local/php/etc/php.ini;

    server {
        listen       80;
        server_name  localhost;
        default_type 'application/json; charset=UTF-8';
    
        location /php {
            content_by_php_block {
                echo "hello ngx_php7";
            }
        }

        location = /ngx_request {
            content_by_php_block {
                echo ngx_request_document_uri();
            }
        }

        # curl /ngx_get?a=1&b=2
        location = /ngx_get {
            content_by_php_block {
                echo "ngx_query_args()\n";
                var_dump(ngx_query_args());
            }
        }

        # curl -d 'a=1&b=2' /ngx_post
        location = /ngx_post {
            content_by_php_block {
                echo "ngx_post_args()\n";
                var_dump(ngx_post_args());
            }
        }

        location = /ngx_sleep {
            content_by_php_block {
                echo "ngx_sleep start\n";
                yield ngx_sleep(1);
                echo "ngx_sleep end\n";
            }
        }

        location = /ngx_socket2 {
            default_type 'application/json;charset=UTF-8';
            content_by_php_block {
                $fd = ngx_socket_create();

                yield ngx_socket_connect($fd, "hq.sinajs.cn", 80);

                $send_buf = "GET /list=s_sh000001 HTTP/1.0\r\n
                                            Host: hq.sinajs.cn\r\nConnection: close\r\n\r\n";
                yield ngx_socket_send($fd, $send_buf, strlen($send_buf));

                $recv_buf = "";
                yield ngx_socket_recv($fd, $recv_buf);
                var_dump($recv_buf);
                
                yield ngx_socket_close($fd);
            }
        }

        location = /ngx_var {
            set $a 1234567890;
            content_by_php_block {
                $a = ngx_var_get("a");
                var_dump($a);
            }
        }
        
        # set content-type of response headers
        location = /ngx_header {
            content_by_php_block {
                ngx_header_set("Content-Type", "text/html; charset=UTF-8");
            }
        }

        # run a php file
        location = /php {
            content_by_php_block {
                include "name_of_php_file.php";
            }
        }
        
        # run any php file in root
        location = / {
            content_by_php_block {
                include ngx_var_get("uri");
            }
        }

    }
}
  • 由于部门内部服务器均在内网中运行没有连接互联网,导致了yum软件安装很费劲,很多软件安装需要单独安装、逐个依赖安装。因此,我们在DMZ区拿出一台虚拟机专门用于给内网服务器虚拟机集群做正向代理,解决内网上网的问题。 主要参考: 使用NGINX作为HTTPS正向代理服务器 - SegmentFault 思否 ​​​​​​CentOs7 给nginx安装ngx_http_proxy_connect_mo

  • 这个ngx_buf_t就是这个ngx_chain_t链表的每个节点的实际数据。该结构实际上是一种抽象的数据结构,它代表某种具体的数据。这个数据可能是指向内存中的某个缓冲区,也可能指向一个文件的某一部分,也可能是一些纯元数据(元数据的作用在于指示这个链表的读取者对读取的数据进行不同的处理)。 该数据结构位于src/core/ngx_buf.h|c文件中。我们来看一下它的定义。 struct ngx_

  • nginx代理 正向代理:代理请求者的身份,访问互联网的任何服务 反向代理:代理被请求者的身份。 ngx_http_proxy_module 1.proxy_pass Syntax: proxy_pass URL; Default: — Context: location, if in location, limit_except 1.proxy_pass后面的路径不带URI时,其会将locati

 相关资料
  • 问题内容: 我正在开发可能由用户提供的Groovy脚本扩展的服务器应用程序。显然,我想确保这些脚本在非常紧凑的沙箱中运行,在这些沙箱中它们不会破坏核心应用程序代码或消耗过多资源以使服务器超载。 我研究了各种可能性,最终的解决方案可能是这些的组合: 在受严格限制的安全管理器中运行脚本 。该脚本在没有权限的SecurityManager中运行。必须声明其他权限(例如Android)。 启动一个新的JV

  • 问题内容: 有谁知道将图标嵌入Python脚本的方法,这样当我创建独立的可执行文件(使用pyinstaller)时,不需要包含.ico文件吗?我知道使用py2exe可以实现,但是就我而言,我必须使用Pyinstaller,因为使用前者并不成功。我正在使用Tkinter。 我知道,但是如果我想使一个文件可执行,那是行不通的。 问题答案: 实际上,函数iconbitmap只能接收文件名作为参数,因此那

  • 本文向大家介绍shell脚本一键安装php7的实例(推荐),包括了shell脚本一键安装php7的实例(推荐)的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇shell脚本一键安装php7的实例(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 主要内容:目录:,1. Nginx安装配置,2. PHP7安装配置,2.1 源码下载,2.4. 修改配置,3. Nginx代理集成PHP7配置,MySQL5.7安装配置在前面几篇文章中,我们已经介绍并演示安装 Nginx 的几种方式,在开始本篇文章的阅读和实践之前,建议先阅读“Nginx安装配置”:http://www.yiibai.com/nginx/nginx-install.html ,在上面文章的基础之上,我们再添加 PHP7 的安装配置以及MySQL的安装配置,最后编写一个简单的PHP

  • 主要内容:1. Nginx安装配置,2. PHP7安装配置,2.1 源码下载,2.4. 修改配置,3. Nginx代理集成PHP7配置在前面几篇文章中,我们已经介绍并演示安装 Nginx 的几种方式,在开始本篇文章的阅读和实践之前,建议先阅读“Nginx安装配置”:http://www.yiibai.com/nginx/nginx-install.html ,在上面文章的基础之上,我们再添加 PHP7 的安装配置。 1. Nginx安装配置 如果需要一些特殊的功能,在包和端口不可用的情况下,也可

  • 本文向大家介绍nginx常用命令放入shell脚本详解,包括了nginx常用命令放入shell脚本详解的使用技巧和注意事项,需要的朋友参考一下 1、创建一个文件夹存放nginx的shell脚本 1)重启nginx的shell脚本 vim reload.sh 2)设置nginx用户对html目录下所有文件读写执行权限的shell脚本 vim setfacl.sh 3)启动nginx进程的shell脚