NGINX Unit:动态Web和应用服务器

简介: NGINX Unit:动态Web和应用服务器

NGINX Unit 是一个动态Web和应用服务器,可以运行多种编程语言的应用。Unit 是轻量级的、支持多种语言,并且可以通过API进行动态配置。Unit 的设计允许开发或运维需要的情况下,重新配置特定应用参数。


目前已经发布1.21.0版本,其主要特性有:


  • 可通过RESTful JSON API进行动态配置调整
  • 可以零中断更新配置
  • 支持正则进行筛选和调度
  • 可以同时部署多语言多版本应用
  • 可以实现动态负载均衡
  • 为支持的语言提供公共语言API


支持的语言有:


  • Assembly: via the embedded libunit library
  • Go: by overloading the http module
  • JavaScript (Node.js): by overloading the http and websocket modules
  • Java: via the Servlet Specification 3.1 and WebSocket APIs
  • Perl: via PSGI
  • PHP: via the embed SAPI
  • Python: via WSGI and ASGI with WebSocket support
  • Ruby: via the Rack API


更多可以去官方查看:https://unit.nginx.org/


安装


在CentOS上安装


添加yum源


cat >> /etc/yum.repos.d/unit.repo <EOF
[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF


安装


sudo yum install unit
sudo yum install unit-devel unit-go unit-jsc8 unit-jsc11 \
      unit-perl unit-php unit-python27 unit-python36


启动


systemctl start unit
systemctl enable unit


socket位置:/var/run/unit/control.sock

log位置:/var/log/unit/unit.log


在Ubuntu上安装


下载密钥


sudo curl -sL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -


增加源


deb https://packages.nginx.org/unit/ubuntu/ groovy unit
deb-src https://packages.nginx.org/unit/ubuntu/ groovy unit


安装


sudo apt update
sudo apt install unit
sudo apt install unit-dev unit-go unit-jsc11 unit-jsc13 unit-jsc14 unit-jsc15 \
              unit-perl unit-php unit-python3.8 unit-ruby


socket位置:/var/run/unit/control.sock

log位置:/var/log/unit/unit.log


在Docker上安装


在Docker上安装更简单了,官方已经做好了镜像,运行即可。如下:


docker pull nginx/unit
docker run -d nginx/unit


使用


我这里是直接在CentOS上安装的。


测试PHP


首先创建一个目录/opt/php,然后在里面创建一个index.php文件,文件内容如下:


mkdir /opt/php
cat >> /opt/php/index.php <EOF
<html>
 <head>
  <title>PHP 测试</title>
 </head>
 <body>
 <?php echo '<p>Hello World,Joker is coming.</p>'; ?>
 </body>
</html>
EOF


然后创建一个php.json文件,内容如下:


cat >> php.json <EOF
{
        "listeners": {
            "0.0.0.0:8300": {
                "pass": "applications/blogs"
            }
        },
        "applications": {
            "blogs": {
                "type": "php",
                "root": "/opt/php"
            }
        }
    }
EOF


其中:


  • listeners:指定监听的地址以及绑定的应用
  • applications:应用配置

  • type:应用开发语言
  • root:应用根目录


然后使用以下命令启动:


curl -X PUT -d @php.json --unix-socket /var/run/unit/control.sock http://localhost/config/


启动成功会输出以下内容:


{
        "success": "Reconfiguration done."
}


然后就可以通过浏览器访问:http://IP:8300,如下:


640.png


通过如下命令查看配置:


curl  --unix-socket /var/run/unit/control.sock http://localhost/config/
{
    "listeners": {
        "0.0.0.0:8300": {
            "pass": "applications/blogs"
        }
    },
    "applications": {
        "blogs": {
            "type": "php",
            "root": "/opt/php"
        }
    }
}


删除应用用以下命令


curl -X DELETE -d @php.json --unix-socket /var/run/unit/control.sock http://localhost/config/


测试java


在/opt/java下面创建一个index.jsp,并输入以下内容:


mkdir /opt/java
car >> /opt/java/index.jsp <EOF
<%@ page language="java" contentType="text/plain" %>
<%= "Hello, JSP on Unit!" %>
EOF


创建应用json文件,如下:


cat >> java.json <EOF 
{
        "listeners": {
            "0.0.0.0:8400": {
                "pass": "applications/myapp"
            }
        },
        "applications": {
            "myapp": {
                "type": "java",
                "webapp": "/opt/java/",
            }
        }
    }
EOF


然后创建应用


# curl -X PUT -d @java.json --unix-socket /var/run/unit/control.sock http://localhost/config/
{
    "success": "Reconfiguration done."
}


然后通过浏览器访问,如下:


640.png


写在最后


nginx unit是一个很棒的项目,支持的语言也非常多,不过配置略微复杂,而且全是API操作,使用起来有的蛋疼。

相关文章
|
1天前
|
应用服务中间件 nginx
蓝易云 - 编写Dockerfile制作Web应用系统nginx镜像
这是一个基本的例子,你可能需要根据自己的应用进行调整。例如,你可能需要添加更多的配置,或者使用不同的Nginx版本。
11 2
|
8天前
|
网络协议 数据格式 Python
Python进阶---HTTP协议和Web服务器
Python进阶---HTTP协议和Web服务器
19 4
|
8天前
|
弹性计算 关系型数据库 MySQL
【阿里云弹性计算】从零搭建:基于阿里云ECS的高性能Web服务部署实践
【5月更文挑战第21天】本文介绍了如何使用阿里云ECS搭建高性能Web服务。首先,注册阿里云账号购买ECS实例,选择合适配置。接着,通过SSH连接实例,更新系统并安装Apache、PHP和MySQL。创建网站目录,上传代码,配置数据库和PHP。然后,启用Gzip压缩和KeepAlive,调整Apache并发连接数以优化性能。此教程为在阿里云上构建高效Web服务提供了基础指南。
114 5
|
13天前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
13天前
|
应用服务中间件 网络安全 Apache
构建高性能Web服务器:Nginx vs Apache
【5月更文挑战第16天】Nginx与Apache是两种主流Web服务器,各具优势。Nginx以其轻量级、高并发处理能力和反向代理功能见长,适合大型网站和高并发场景;而Apache以功能丰富、稳定性强闻名,适合企业网站和需要多种Web服务功能的场景。在性能上,Nginx处理高并发更优,Apache则可能在高负载时遭遇瓶颈。在选择时,应根据实际需求权衡。
|
13天前
|
JSON JavaScript API
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
38 1
|
13天前
|
JSON JavaScript 中间件
使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求
12 2
|
14天前
|
负载均衡 Go 调度
使用Go语言构建高性能的Web服务器:协程与Channel的深度解析
在追求高性能Web服务的今天,Go语言以其强大的并发性能和简洁的语法赢得了开发者的青睐。本文将深入探讨Go语言在构建高性能Web服务器方面的应用,特别是协程(goroutine)和通道(channel)这两个核心概念。我们将通过示例代码,展示如何利用协程处理并发请求,并通过通道实现协程间的通信和同步,从而构建出高效、稳定的Web服务器。
|
14天前
【计网·湖科大·思科】实验一 熟悉仿真软件及访问WEB服务器
【计网·湖科大·思科】实验一 熟悉仿真软件及访问WEB服务器
16 0
|
14天前
|
存储 安全 数据安全/隐私保护
Web应用程序的会话管理是一种跟踪和识别特定用户与Web服务器之间交互的技术
【5月更文挑战第12天】Python Web开发中,会话管理用于跟踪用户与服务器交互,如Flask框架提供的内置功能。以下是一个简单示例:安装Flask后,设置应用密钥,通过session读写用户状态。例如,创建一个显示和设置用户名称的Web应用,用户提交的名字将保存在会话中。在生产环境中,应安全存储密钥,如使用环境变量。扩展会话管理可借助第三方库实现更多功能,但可能需更多配置。
223 2

热门文章

最新文章